【问题标题】:How do I make a div full screen?如何使div全屏?
【发布时间】:2011-10-31 02:50:33
【问题描述】:

我正在使用Flot 绘制我的一些数据的图表,我认为在单击按钮时让此图表显示为全屏(占用监视器上的全部空间)会很棒。目前我的div如下:

<div id="placeholder" style="width:800px;height:600px"></div>

当然,style 属性仅用于测试。在实际设计之后,我会将其移至CSS。无论如何我可以让这个 div 全屏并仍然保留所有事件处理吗?

【问题讨论】:

    标签: javascript jquery html css flot


    【解决方案1】:

    可以像这样使用 FullScreen API

    function toggleFullscreen() {
      let elem = document.querySelector('#demo-video');
    
      if (!document.fullscreenElement) {
        elem.requestFullscreen().catch(err => {
          alert(`Error attempting to enable full-screen mode: ${err.message} (${err.name})`);
        });
      } else {
        document.exitFullscreen();
      }
    }
    

    演示

    const elem = document.querySelector('#park-pic');
    
    elem.addEventListener("click", function(e) {
      toggleFullScreen();
    }, false);
    
    function toggleFullScreen() {
    
      if (!document.fullscreenElement) {
        elem.requestFullscreen().catch(err => {
          alert(`Error attempting to enable full-screen mode: ${err.message} (${err.name})`);
        });
      } else {
        document.exitFullscreen();
      }
    }
    #container{
      border:1px solid #aaa;
      padding:10px;
    }
    #park-pic {
      width: 100%;
      max-height: 70vh;
    }
    <div id="container">
      <p>
        <a href="#" id="toggle-fullscreen">Toggle Fullscreen</a>
      </p>
      <img id="park-pic"
          src="https://storage.coverr.co/posters/Skate-park"></video>
    </div>

    P.S:现在使用screenfull.js。一个用于跨浏览器使用 JavaScript Fullscreen API 的简单包装器。

    【讨论】:

    • +1,因为您是 唯一 人来回答 OP 要求的特定“占用显示器上的全部空间”
    【解决方案2】:

    您可以为此使用 HTML5 Fullscreen API(这是我认为最合适的方式)。

    全屏必须通过用户事件(点击、按键)触发,否则将不起作用。

    这是一个让 div 在点击时全屏显示的按钮。而在全屏模式下,点击按钮会退出全屏模式。

    $('#toggle_fullscreen').on('click', function(){
      // if already full screen; exit
      // else go fullscreen
      if (
        document.fullscreenElement ||
        document.webkitFullscreenElement ||
        document.mozFullScreenElement ||
        document.msFullscreenElement
      ) {
        if (document.exitFullscreen) {
          document.exitFullscreen();
        } else if (document.mozCancelFullScreen) {
          document.mozCancelFullScreen();
        } else if (document.webkitExitFullscreen) {
          document.webkitExitFullscreen();
        } else if (document.msExitFullscreen) {
          document.msExitFullscreen();
        }
      } else {
        element = $('#container').get(0);
        if (element.requestFullscreen) {
          element.requestFullscreen();
        } else if (element.mozRequestFullScreen) {
          element.mozRequestFullScreen();
        } else if (element.webkitRequestFullscreen) {
          element.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
        } else if (element.msRequestFullscreen) {
          element.msRequestFullscreen();
        }
      }
    });
    #container{
      border:1px solid red;
      border-radius: .5em;
      padding:10px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="container">
      <p>
        <a href="#" id="toggle_fullscreen">Toggle Fullscreen</a>
      </p>
      I will be fullscreen, yay!
    </div>

    另请注意,Chrome 的全屏 API 不适用于非安全页面。详情请见https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins

    另外需要注意的是 :fullscreen CSS 选择器。您可以将其附加到任何 css 选择器,以便在该元素全屏时应用规则:

    #container:-webkit-full-screen,
    #container:-moz-full-screen,
    #container:-ms-fullscreen,
    #container:fullscreen {
        width: 100vw;
        height: 100vh;
        }
    

    【讨论】:

    • 这是真正的答案(我一直在寻找)
    • 由于某种原因,在这里运行 sn-p 时这似乎不起作用 - 但将代码移动到 JSFiddle 工作正常:jsfiddle.net/352cg8bv
    • 老兄,你要去的地方......阿利路亚!
    • 太棒了!添加(CSS 样式)background-color: #fff; 使全屏背景显示为白色(否则显示为黑色,在 Firefox v88 中)。
    • 你是我眼中的天才!我们整天在教室里全屏使用,直到找到这个:) 谢谢!
    【解决方案3】:

    CSS方式:

    #foo {
       position: absolute;
       top: 0;
       right: 0;
       bottom: 0;
       left: 0;
    }
    

    JS方式:

    $(function() {
        function abso() {
            $('#foo').css({
                position: 'absolute',
                width: $(window).width(),
                height: $(window).height()
            });
        }
    
        $(window).resize(function() {
            abso();         
        });
    
        abso();
    });
    

    【讨论】:

    • 此解决方案完美运行。我必须创建一个 wrapper div 并应用此样式,并且它的子元素继续按以前的要求工作!干杯!
    • 我刚刚写了这个:{position:absolute; top:0; right:0; bottom:0; left:0;} 现在效果很好。谢谢!
    【解决方案4】:

    这是最简单的一个。

    #divid {
       position: fixed;
       top: 0;
       right: 0;
       bottom: 0;
       left: 0;
    }
    

    【讨论】:

      【解决方案5】:

      如果您想在浏览器的可见区域(可滚动区域)之外显示它,请使用文档高度。

      CSS 部分

      #foo {
          position:absolute;
          top:0;
          left:0;
      }
      

      jQuery部分

      $(document).ready(function() {
         $('#foo').css({
             width: $(document).width(),
             height: $(document).height()
         });
      });
      

      【讨论】:

        【解决方案6】:

        对于浏览器渲染区域的全屏,有一个所有现代浏览器都支持的简单解决方案。

        div#placeholder {
            height: 100vh;
        }
        

        唯一值得注意的例外是低于 4.3 的 Android - 但仅在系统浏览器/webview 元素中(Chrome 工作正常)。

        浏览器支持图表:http://caniuse.com/viewport-units

        显示器的全屏请使用 HTML5 Fullscreen API

        【讨论】:

        • 这在 android WebView 中就像一个魅力,谢谢先生! #graph {宽度:100vw;高度:100vh; }
        【解决方案7】:
        <div id="placeholder" style="position:absolute; top:0; right:0; bottom:0; left:0;"></div>
        

        【讨论】:

        • 这已经在 Daryl 的回答中,你的回答没有带来任何新的东西
        【解决方案8】:
        .widget-HomePageSlider .slider-loader-hide {
            position: fixed;
            top: 0px;
            left: 0px;
            width: 100%;
            height: 100%;
            z-index: 10000;
            background: white;
        }
        

        【讨论】:

        • 请注意,大多数答案都包含一些解释和讨论,而不仅仅是代码。
        • 这是唯一对我有用的解决方案,因为我的模态对话框的 html 位于另一个 div 中,即 position: relative。谢谢。
        【解决方案9】:

        你可以试试这个..

        <div id="placeholder" style="width:auto;height:auto"></div>
        

        宽度和高度取决于您的浮动或图形..

        希望你想要这个...

        通过点击,你可以通过jquery使用它

        $("#placeholder").css("width", $(window).width());
        $("#placeholder").css("height", $(window).height());
        

        【讨论】:

          【解决方案10】:

          当您说“全屏”时,您是指计算机全屏还是占据浏览器中的整个空间?

          你不能强制用户进入全屏F11;但是,您可以使用以下 CSS 使您的 div 全屏显示

          div {width: 100%; height: 100%;}
          

          这当然会假设您的 div 是 &lt;body&gt; 标记的子级。否则,除了上述代码之外,您还需要添加以下内容。

          div {position: absolute; top: 0; left: 0;}
          

          【讨论】:

          • 我个人更喜欢div {position: absolute; top: 0; right: 0; bottom: 0; left: 0;}
          • @Codemonkey,这是一个不错的解决方案,假设您不需要支持 IE 6。
          • 如果 div 包含在另一个具有“相对”定位设置的 div 中,这将不起作用。在这种情况下,您要么需要从父 div 中删除相对定位,要么使用 jQuery 将 div .prepend 到 body 元素。
          • 对于任何类型的绝对定位都是如此;但是,可以安全地假设,当应用面纱时,它存在于最顶层的父代中;也就是body标签。
          • 您确实可以使用 HTML5 全屏 API 使浏览器真正全屏(至少如果您有用户操作授予您权限)!请在此处进一步查看 Tracker1 的答案! :-/
          猜你喜欢
          • 2020-07-09
          • 2010-12-15
          • 1970-01-01
          • 2018-04-26
          • 2021-09-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多