184

在 IE10 中,滚动条并不总是存在……当它出现时,它会以覆盖的形式出现……这是一个很酷的功能,但我想为我的特定网站关闭它,因为它是一个全屏应用程序,而且我的标志和菜单在它后面丢失了。

IE10:

在此处输入图像描述

铬合金:

在此处输入图像描述

任何人都知道始终将滚动条固定在 IE10 上的方法吗?

溢出-y:滚动似乎不起作用!它只是将它永久放在我的网站上。

这可能是导致问题的引导程序,但我不知道哪一部分!看这里的例子:http: //twitter.github.io/bootstrap/

4

6 回答 6

180

正如 xec 在他的回答中提到的,这种行为是由 @-ms-viewport 设置引起的。

好消息是您不必删除此设置即可恢复滚动条(在我们的示例中,我们依赖 @-ms-viewport 设置来进行响应式网页设计)。

您可以使用 -ms-overflow-style 来定义溢出行为,如本文所述:

http://msdn.microsoft.com/en-us/library/ie/hh771902(v=vs.85).aspx

将样式设置为滚动条以获取滚动条:

body {
    -ms-overflow-style: scrollbar;
}

滚动条

指示元素在其内容溢出时显示经典滚动条类型的控件。与 -ms-autohiding-scrollbar 不同,将 -ms-overflow-style 属性设置为 scrollbar 的元素上的滚动条始终出现在屏幕上,并且在元素处于非活动状态时不会淡出。滚动条不会覆盖内容,因此会占用它们出现的元素边缘的额外布局空间。

于 2013-10-31T12:42:49.590 回答
163

在谷歌搜索了一下之后,我偶然发现了一个讨论,其中“Blue Ink”留下的评论指出:

检查页面,我设法使用以下方法重现它:

@-ms-viewport { 宽度:设备宽度;}

这会导致滚动条变得透明。有道理,因为内容现在占据了整个屏幕。

在这种情况下,添加:

溢出-y:自动;

使滚动条自动隐藏

bootstraps responsive-utilities.less 文件的第 21 行中, 您可以找到以下 CSS 代码

// IE10 in Windows (Phone) 8
//
// Support for responsive views via media queries is kind of borked in IE10, for
// Surface/desktop in split view and for Windows Phone 8. This particular fix
// must be accompanied by a snippet of JavaScript to sniff the user agent and
// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at
// our Getting Started page for more information on this bug.
//
// For more information, see the following:
//
// Issue: https://github.com/twbs/bootstrap/issues/10497
// Docs: http://getbootstrap.com/getting-started/#support-ie10-width
// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/
// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/

@-ms-viewport {
  width: device-width;
}

此代码段是导致该行为的原因。我建议阅读上面注释代码中列出的链接。(它们是在我最初发布此答案后添加的。)

于 2013-06-11T13:55:19.757 回答
12

解决方案:两个步骤 - 检测是否为 IE10,然后使用 CSS:

在初始化时执行此操作:

if (/msie\s10\.0/gi.test(navigator.appVersion)) {
    $('body').addClass('IE10');
} else if (/rv:11.0/gi.test(navigator.appVersion)) {
    $('body').addClass('IE11');
}

// --OR--

$('body').addClass(
  /msie\s10\.0/gi.test(navigator.appVersion) ? 'IE10' :
  /rv:11.0/gi.test(navigator.appVersion)     ? 'IE11' :
  ''  // Neither
);

// --OR (vanilla JS [best])--

document.body.className +=
  /msie\s10\.0/gi.test(navigator.appVersion) ? ' IE10' :
  /rv:11.0/gi.test(navigator.appVersion)     ? ' IE11' :
  '';  // Neither

添加这个CSS:

body.IE10, body.IE11 {
    overflow-y: scroll;
    -ms-overflow-style: scrollbar;
}

为什么有效:

  • overflow-y:scroll永久打开<body>标签垂直滚动条。
  • -ms-overflow-style:scrollbar关闭自动隐藏行为,从而推动内容并为我们提供我们都习惯的滚动条布局行为。

为询问 IE11 的用户更新。- 参考https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/compatibility/ms537503(v=vs.85)

于 2014-03-08T01:11:48.847 回答
4

尝试这个

body{-ms-overflow-style: scrollbar !important;}
于 2015-06-23T11:51:14.047 回答
0

这个问题也发生在 Bootstrap 4 上的数据表中。我的解决方案是:

  1. 检查ie浏览器是否打开。
  2. 将 table-responsive-ie 类替换为 table-responsive-ie 类。

CSS:

.table-responsive-ie {
display: block;
width: 100%;
overflow-x: auto;}

JS:

var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) //If IE
        {
            $('#tableResponsibleID').removeClass('table-responsive');
            $('#tableResponsibleID').addClass('table-responsive-ie');
        }  
于 2018-09-18T12:51:12.977 回答
-4

尝试了@-ms-viewport和其他建议,但在 Windows 7 上使用 IE11 的情况下都没有。我没有滚动条,这里的其他帖子最多会给我一个滚动条,即使有丰富的内容。发现这篇文章http://www.rlmseo.com/blog/overflow-auto-problem-bug-in-ie/减少到 . . .

body { overflow-x: visible; }

. . . 并为我做了伎俩。

于 2015-02-23T22:54:01.003 回答