我有一个<header>
元素,当用户滚过页面时,它会使用position: sticky
贴在页面顶部。不知何故,在Chrome中,所述元素不会按预期显示,而是在元素的顶部和左侧添加一些空间。我设法将我的CSS文件中的代码隔离出来以重现该错误并在Chrome(Android和Windows 7桌面)中成功复制它。有谁知道为什么会这样,以及是否有解决方案?
body {
margin: 0;
}
header {
display: block;
height: 44px;
background: #263238;
color: #fafafa;
padding: 2px 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.18), 0 2px 3px rgba(0, 0, 0, 0.26);
white-space: nowrap;
overflow-x: auto;
overflow-y: hidden;
}
header.sticky {
position: -webkit-sticky;
position: sticky;
z-index: 1101;
top: 0;
}
<p>Blah blah</p>
<header class="sticky">
<button>Home</button>
<button>About</button>
</header>
<!-- some spacing to allow users to scroll the page -->
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
下图显示了<header>
元素在所有浏览器中的外观。目前,Chrome似乎无法正确显示(请参阅下一张图片)。
此图片显示了Chrome中<header>
元素的外观。注意元素左侧和顶部留下的小空间。
答案 0 :(得分:1)
现在我可以看到你想说的话,box:shadow
在这种情况下是邪恶的。我假设您无法将其删除,因此我在overflow:hidden
css中添加了body
。
看看下面的片段。
body {
margin: 0;
overflow:hidden;
background: red
}
header {
display: block;
height: 44px;
background: #263238;
color: #fafafa;
padding: 2px 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.18), 0 2px 3px rgba(0, 0, 0, 0.26);
white-space: nowrap;
overflow-x: auto;
overflow-y: hidden;
}
header.sticky {
position: -webkit-sticky;
position: sticky;
z-index: 1101;
top: 0;
}
<p>Blah blah</p>
<header class="sticky">
<button>Home</button>
<button>About</button>
</header>
<!-- some spacing to allow users to scroll the page -->
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
答案 1 :(得分:-3)
将不受支持的position: sticky
替换为position: fixed; width: 100%;
,并在所有浏览器上进行尝试。正如@aje所提到的,在使用实验/新css3样式之前,请始终检查浏览器兼容性。