Skip to content

Instantly share code, notes, and snippets.

@ahkohd
Created April 30, 2020 20:42
Show Gist options
  • Select an option

  • Save ahkohd/38662d13d6a4566dc95e4cec4ac51c61 to your computer and use it in GitHub Desktop.

Select an option

Save ahkohd/38662d13d6a4566dc95e4cec4ac51c61 to your computer and use it in GitHub Desktop.

Revisions

  1. ahkohd created this gist Apr 30, 2020.
    20 changes: 20 additions & 0 deletions index.html
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,20 @@
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Hello World!</title>
    <link rel="stylesheet" type="text/css" href="./styles.css">
    </head>
    <body>
    <h1>Fade In/Out Window Example</h1>

    <div>
    <button id="fade-in-out">Fade Out / In</button>
    </div>

    <script>
    // You can also require other files to run in this process
    require('./renderer.js')
    </script>
    </body>
    </html>
    44 changes: 44 additions & 0 deletions main.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,44 @@
    // Modules to control application life and create native browser window
    const {app, BrowserWindow} = require('electron')

    function createWindow () {
    // Create the browser window.
    const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
    nodeIntegration: true
    }
    })

    // and load the index.html of the app.
    mainWindow.loadFile('index.html')

    // Open the DevTools.
    // mainWindow.webContents.openDevTools()
    }

    // This method will be called when Electron has finished
    // initialization and is ready to create browser windows.
    // Some APIs can only be used after this event occurs.
    app.on('ready', createWindow)

    // Quit when all windows are closed.
    app.on('window-all-closed', function () {
    // On OS X it is common for applications and their menu bar
    // to stay active until the user quits explicitly with Cmd + Q
    if (process.platform !== 'darwin') {
    app.quit()
    }
    })

    app.on('activate', function () {
    // On OS X it's common to re-create a window in the app when the
    // dock icon is clicked and there are no other windows open.
    if (BrowserWindow.getAllWindows().length === 0) {
    createWindow()
    }
    })

    // In this file you can include the rest of your app's specific main process
    // code. You can also put them in separate files and require them here.
    1 change: 1 addition & 0 deletions preload.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    // Empty
    39 changes: 39 additions & 0 deletions renderer.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    const remote = require('electron').remote

    const fadeWindowOut = (
    _window,
    step = 0.1,
    fadeEveryXSeconds = 10
    ) => {
    let opacity = _window.getOpacity();
    const interval = setInterval(() => {
    if (opacity <= 0) window.clearInterval(interval);
    _window.setOpacity(opacity);
    opacity -= step;
    }, fadeEveryXSeconds);
    return interval;
    }

    const fadeWindowIn = (
    _window,
    step = 0.1,
    fadeEveryXSeconds = 10
    ) => {
    let opacity = _window.getOpacity();
    const interval = setInterval(() => {
    if (opacity >= 1) window.clearInterval(interval);
    _window.setOpacity(opacity);
    opacity += step;
    }, fadeEveryXSeconds);
    return interval;
    }



    document.getElementById('fade-in-out').onclick = () => {
    // fade out this window...
    fadeWindowOut(remote.getCurrentWindow(), 0.1, 2);

    // 1000 miliseconds later, fade it in...
    setTimeout(() => fadeWindowIn(remote.getCurrentWindow(), 0.1, 2), 1000)
    }
    1 change: 1 addition & 0 deletions styles.css
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    /* Empty */