问题描述
现代Chrome浏览器支持在设置为全屏模式的元素上滚动,但Firefox中的元素并非如此。有人知道CSS技巧可以滚动到Firefox吗?如果元素在全屏模式下不适合屏幕,我尝试了很多类似的操作来滚动元素(在本例中为主体)。
在下面使用此代码时,请打开开发工具,使其占据屏幕的75%左右,以使全屏元素无法显示在屏幕上。
function enterFullscreen(element) {
if (element.requestFullscreen) {
element.requestFullscreen();
}
else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
}
else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
}
else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
function exitFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
}
else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
}
else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
button {
padding: 40px;
}
div {
padding: 100px;
background-color: red;
}
div div {
background-color: blue;
}
body:fullscreen {
overflow: scroll !important;
}
body:-ms-fullscreen {
overflow: scroll !important;
}
body:-webkit-full-screen {
overflow: scroll !important;
}
body:-moz-full-screen {
overflow: scroll !important;
}
<button onclick="enterFullscreen(document.body);">Enter Fullscreen (BODY)</button>
<div>
<button onclick="enterFullscreen(document.getElementsByTagName('DIV')[0]);"> EnterFullscreen (DIV 0)</button>
<div>
<button onclick="enterFullscreen(document.getElementsByTagName('DIV')[1]);"> EnterFullscreen (DIV 1)</button>
<button onclick="exitFullscreen()">Exit Fullscreen</button>
</div>
</div>
解决方法
由于body元素设置为全屏,无论出于何种原因(可能是错误),都将Firefox禁用,即使body高度大于窗口也不会启用滚动。 Firefox中的任何其他DIV元素均不是这种情况。一种解决方案是将所有内容都放在一个DIV标签内,并将一个DIV标签放在BODY标签内。
<style>
button {
padding: 40px;
}
div {
background-color: red;
}
div div {
height: 200%;
background-color: blue;
}
:fullscreen {
overflow-y: scroll;
}
:-ms-fullscreen {
overflow-y: scroll;
}
:-webkit-full-screen {
overflow-y: scroll;
}
:-moz-full-screen {
overflow-y: scroll;
}
</style>
<div>
<button onclick="enterFullscreen(document.getElementsByTagName('DIV')[0]);">Enter Fullscreen</button>
<button onclick="exitFullscreen()">Exit Fullscreen</button>
<div>
</div>
</div>
<script>
function enterFullscreen(element) {
if (element.requestFullscreen) {
element.requestFullscreen();
}
else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
}
else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
}
else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
function exitFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
}
else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
}
else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
</script>