DEV Community

Iain Freestone
Iain Freestone

Posted on • Originally published at iainfreestone.com

πŸ’‘ Natively detect changes in ambient light.

Use ambient light events to modify how your site works depending on light intensity.

This could be used to switch to a night mode interface or mute all the sounds when in a dark environment.

Lights off, Lights on!

Demo Site

Alt Text


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Ambient Light Events</title>
    <style>
        * {
            margin: 0px;
        }
        #bulb {
            width: 100%;
            height: 100vh;
            background-repeat: no-repeat;
            background-attachment: fixed;
            background-position: center;
        }
        .on {
            background-color: white;
            background-image: url("lightsOn.png");
        }
        .off {
            background-color: black;
            background-image: url("lightsOff.png");
        }
    </style>
</head>
<body>
    <div id="bulb" class="on"/>
    <script>
    var bulb = document.getElementById('bulb');
    if ('ondevicelight' in window) {
        window.addEventListener('devicelight', function(event) {
            var bulb = document.getElementById('bulb');
            if (event.value < 50) {
            bulb.classList.add('off');
            bulb.classList.remove('on');
            } else {
            bulb.classList.add('on');
            bulb.classList.remove('off');
            }
        });
    } else {
        console.log('devicelight event not supported');
    }
    </script>
</body>
</html>
Enter fullscreen mode Exit fullscreen mode

As of June 2020 this feature is only available behind a feature flag on Firefox. It can be activated by navigating to "about:config" and toggling the device.sensors.ambientLight.enabled flag to true.

Alt Text

Ambient Light Events - MDN Docs


If you enjoyed this little snippet you can follow me on Twitter where I regularly post bite size tips relating to HTML, CSS and JavaScript.

Top comments (1)

Collapse
 
ben profile image
Ben Halpern

Cool!