# screenfull > Simple wrapper for cross-browser usage of the JavaScript [Fullscreen API](https://developer.mozilla.org/en/DOM/Using_full-screen_mode), which lets you bring the page or any element into fullscreen. Smoothens out the browser implementation differences, so you don't have to. **This package is ESM. Please [familiarize](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) yourself with that that implies.**\ If you cannot use ESM or need to support older browsers without using transpilation, use version 5.2.0. **[Not supported on iPhone](#support)** **This package is feature complete. No new features will be accepted.** #### [Demo](https://sindresorhus.com/screenfull) ## Install Only 0.7 kB gzipped. ```sh npm install screenfull ``` Also available on [cdnjs](https://cdnjs.com/libraries/screenfull.js/5.1.0) *(older version)*. ## Why? ### Screenfull ```js import screenfull from 'screenfull'; if (screenfull.isEnabled) { screenfull.request(); } ``` ### Vanilla JavaScript ```js document.fullscreenEnabled = document.fullscreenEnabled || document.mozFullScreenEnabled || document.documentElement.webkitRequestFullScreen; function requestFullscreen(element) { if (element.requestFullscreen) { element.requestFullscreen(); } else if (element.mozRequestFullScreen) { element.mozRequestFullScreen(); } else if (element.webkitRequestFullScreen) { element.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); } } if (document.fullscreenEnabled) { requestFullscreen(document.documentElement); } // This is not even entirely comprehensive. There's more. ``` ## Support [Supported browsers](https://caniuse.com/#feat=fullscreen) **Note:** Safari is supported on desktop and iPad, but not on iPhone. This is a limitation in the browser, not in Screenfull. ## Documentation ### Examples #### Fullscreen the page ```js import screenfull from 'screenfull'; document.getElementById('button').addEventListener('click', () => { if (screenfull.isEnabled) { screenfull.request(); } else { // Ignore or do something else } }); ``` #### Fullscreen an element ```js import screenfull from 'screenfull'; const element = document.getElementById('target'); document.getElementById('button').addEventListener('click', () => { if (screenfull.isEnabled) { screenfull.request(element); } }); ``` #### Hide navigation user-interface on mobile devices ```js import screenfull from 'screenfull'; const element = document.getElementById('target'); document.getElementById('button').addEventListener('click', () => { if (screenfull.isEnabled) { screenfull.request(element, {navigationUI: 'hide'}); } }); ``` #### Fullscreen an element with jQuery ```js import screenfull from 'screenfull'; const element = $('#target')[0]; // Get DOM element from jQuery collection $('#button').on('click', () => { if (screenfull.isEnabled) { screenfull.request(element); } }); ``` #### Toggle fullscreen on a image with jQuery ```js import screenfull from 'screenfull'; $('img').on('click', event => { if (screenfull.isEnabled) { screenfull.toggle(event.target); } }); ``` #### Detect fullscreen change ```js import screenfull from 'screenfull'; if (screenfull.isEnabled) { screenfull.on('change', () => { console.log('Am I fullscreen?', screenfull.isFullscreen ? 'Yes' : 'No'); }); } ``` Remove listeners with: ```js import screenfull from 'screenfull'; screenfull.off('change', callback); ``` #### Detect fullscreen error ```js import screenfull from 'screenfull'; if (screenfull.isEnabled) { screenfull.on('error', event => { console.error('Failed to enable fullscreen', event); }); } ``` See the [demo](https://sindresorhus.com/screenfull) for more examples, and view the source. #### Fullscreen an element with Angular.js You can use the [Angular.js binding](https://github.com/hrajchert/angular-screenfull) to do something like: ```html
This is a fullscreen element