如何使div全屏显示?


68

我正在使用Flot对我的一些数据进行图形化处理,并且我认为使该图形在单击按钮时全屏显示(在监视器上占据完整空间)会很棒。目前,我div的如下:

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

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

Answers:


78

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

您不能强迫用户进入全屏模式F11;但是,您可以使用以下CSS将div全屏显示

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

当然,这将假定您的div是该<body>标签的子级。否则,除了上面的代码外,您还需要添加以下内容。

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

28
我个人更喜欢div {position: absolute; top: 0; right: 0; bottom: 0; left: 0;}
Hubro

3
@Codemonkey,这是一个很好的解决方案,假设你不需要支持IE 6
eyelidlessness

8
如果div包含在具有“相对”定位设置的另一个div中,则此方法将无效。在这种情况下,您要么需要从父div移除相对位置,要么使用jQuery将div放在body元素之前。
Dave Hilditch

1
任何类型的绝对定位都是如此。但是,可以安全地假定,在应用面纱时,该面纱存在于最上面的父面中;aka,身体标签。

3
您确实可以使用HTML5全屏API使浏览器变成真正的全屏显示(至少在您有权限授予用户权限的情况下)!请在此处进一步查看Tracker1的答案!:-/
hasse

101

您可以为此使用HTML5全屏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的Fullscreen 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;
    }

8
这是真正的答案(我一直在寻找)
JustGage '16

我也是-这绝对是正确的方法!有时我对人们接受的正确答案感到困惑。:-(弄乱宽度和高度可能会使div填满整个窗口,但这与全屏一样!:-(
hasse

3
出于某种原因,这在此处运行代码段时似乎不起作用-但将代码移至JSFiddle可以正常工作:jsfiddle.net/352cg8bv
abagshaw

这绝对是更好的答案。最终,它与接受的投票答案相联系!
Dockleryxk

2
老兄,你要去的地方... alleluyah!
M. Gara

28

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();
});

2
此解决方案效果很好。我必须创建一个包装器 div,然后将其应用到此样式,它的子元素将继续按先前的要求工作!干杯!
Migisha 2014年

1
我刚刚写了这篇文章:{position:absolute; top:0; right:0; bottom:0; left:0;}现在效果很好。谢谢!
davidrl1000 '16

22

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

div#placeholder {
    height: 100vh;
}

唯一值得注意的例外是低于4.3的Android-但仅在系统浏览器/网络视图元素中有效(Chrome可以正常运行)。

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

对于全屏显示器,请使用HTML5全屏API


1
这在android Webview中就像一个咒语一样工作,谢谢您,先生!#graph {width:100vw; 高度:100vh;}
hotzen 2014年

11
.widget-HomePageSlider .slider-loader-hide {
    position: fixed;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    z-index: 10000;
    background: white;
}

7
请注意,大多数答案都包含一些解释和讨论,而不仅仅是代码。
汤姆·齐奇

1
这是唯一对我有用的解决方案,因为我的模式对话框的html位于另一个div位置:相对。谢谢。
苗条

3

你可以试试看

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

宽度和高度取决于您的漂浮物或图表。

希望你想要这个...

要么

通过单击,您可以通过jquery使用它

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

3

可以像这样使用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>


2

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

CSS部分

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

jQuery部分

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

2

这是最简单的。

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

0
<div id="placeholder" style="position:absolute; top:0; right:0; bottom:0; left:0;"></div>

2
这已经是达里尔(Daryl)的答案,您的答案没有带来任何新变化
转到
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.