gpt4 book ai didi

html - Chrome 中滚动条的媒体查询布局问题

转载 作者:行者123 更新时间:2023-11-28 13:23:16 25 4
gpt4 key购买 nike

我在 Chrome 中遇到了一个关于媒体查询的奇怪问题,这个问题相当晦涩,但确实困扰着我,所以我希望能在这里找到解决方案,或者至少确认我不会发疯。 .

基本上,当媒体查询启动时,似乎会将页面从内容滚出屏幕的状态(因此您有 y 轴滚动条)变为内容现在适合的状态在屏幕上(所以 y 轴滚动条不应该出现)似乎有一小段时间,页面布局呈现为好像滚动条在那里,即使它不存在(所以一些东西试图填充整个屏幕将不会在此期间出现)

我已经建立了一个简单的页面来展示这个问题。它包含两个 float div,当媒体查询以小于 500 像素的宽度启动时,它们将设置为不再 float 并具有更大的宽度——此时标题栏也从蓝色变为红色(为清楚起见)。

http://appasylum.net/test/mediaQueryChromeScrollBarIssue/

  <!DOCTYPE html>
<html>
<head>

<title>Media Query Chrome Scrollbar issue</title>
<style type="text/css">

html,
body
{
margin:0;
padding:0;
}

.header
{
background-color: blue;
padding: 10px;
color: white;
font-family: Helvetica, Arial, sans-serif;
}

.content
{
background-color: #f5f5f5;
border: 1px solid #e3e3e3;
float: left;
width: 40%;
margin: 20px;
}

@media (max-width: 500px) {

.header
{
background-color: red;
}

.content
{
float:none;
width: 90%;
}
}
</style>

</head>

<body>

<div class="header">
Header
</div>

<div class="content"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. In nec purus ut quam vestibulum porta sed ultrices velit. Suspendisse dapibus justo id ligula iaculis cursus. Fusce non diam ut ante porta lacinia id vel nisl. Mauris laoreet orci vel nulla imperdiet ac rhoncus diam accumsan. Quisque sed mauris mi, sollicitudin commodo ligula. Etiam arcu arcu, vehicula ut porttitor id, viverra non augue. Mauris laoreet fringilla tempus. Praesent elit elit, molestie eget bibendum vitae, fringilla nec turpis. Suspendisse eget ipsum sed sem egestas ultricies. Cras eleifend imperdiet magna nec elementum. Etiam arcu arcu, vehicula ut porttitor id, viverra non augue. Mauris laoreet fringilla tempus. Praesent elit elit, molestie eget bibendum vitae, fringilla nec turpis. Suspendisse eget ipsum sed sem egestas ultricies. Cras eleifend imperdiet magna nec elementum.Etiam arcu arcu, vehicula ut porttitor id, viverra non augue. Mauris laoreet fringilla tempus. Praesent elit elit, molestie eget bibendum vitae, fringilla nec turpis. Suspendisse eget ipsum sed sem egestas ultricies. Cras eleifend imperdiet magna nec elementum.
</div>

<div class="content"> Aliquam in mauris quis arcu aliquam aliquam eu ut mauris. Quisque ut tortor eu massa scelerisque vehicula. Morbi velit diam, egestas at placerat vel, tincidunt a nulla. Vivamus arcu augue, vulputate at elementum sit amet, adipiscing quis odio. Etiam arcu arcu, vehicula ut porttitor id, viverra non augue. Mauris laoreet fringilla tempus. Praesent elit elit, molestie eget bibendum vitae, fringilla nec turpis. Suspendisse eget ipsum sed sem egestas ultricies. Cras eleifend imperdiet magna nec elementum
</div>

</body>
</html>

要在大于 500 像素宽(蓝色标题)的窗口中复制打开上面的链接,并且在一个只能让内容滚出页面的高度 - 然后慢慢减小窗口的宽度,直到它变成红色(即宽度小于 500 像素)。假设您的窗口高度导致未 float 的 div 不再需要滚动条(反之亦然) - 在红色和蓝色标题之间的过渡点(即媒体查询变为事件状态)您应该注意到很短的时间红色标题未填满整个视口(viewport)宽度的时期。

最佳答案

我认为 Chrome 在这里进入了无限循环。在你稍微低于 500px 之后,他删除了垂直滚动条,但是在他删除滚动条之后,窗口宽度又回到了 500px 以上,他为该宽度应用了 CSS,这反过来又需要垂直滚动条,我们又回到了我们开始的地方...如此无限循环。基本上,Chrome 只是通过保留垂直滚动条使用的空间来保护自己免受无限循环。

据我所知,您可以完全删除滚动条,即 overflow:hidden on body(但我想这对 99% 的网站没有多大帮助),或者使用 overflow-y 始终将其保留在 body 上:滚动。

编辑:也许您可以尝试删除 body 标签上的滚动条,但将所有内容封装在一个带有 overflow-y:scroll 的 div 中。尽管 div 和 body 一样宽,但它似乎以这种方式工作,在我的测试中没有出现故障。这需要将此 div 设置为屏幕的 100% 高度,这可能是可行的。

关于html - Chrome 中滚动条的媒体查询布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14444831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com