css - 水平位置:粘性和宽度:自动如何相关?
问题描述
有一个水平的粘性元素,我预计它width
一定不能auto
让粘性正常工作。
因此,虽然此剪断有效,但删除width: 100px;
将导致非粘性行为。
#a {
position: sticky;
left: 0;
background: red;
width: 100px;
}
#b {
/* this is to make a scrollbar */
width: 3000px;
background: blue;
}
<div id="a">a</div>
<div id="b">b</div>
为什么会这样?我有点假设浏览器需要宽度来检测元素何时离开视口,但为什么这不适用于水平模式但垂直模式下的自动计算宽度?
解决方案
粘性定位的元素仍然被限制在其包含块的边界内。当您的元素具有自动宽度并且沿水平轴粘性定位时,在其包含块的最右边缘开始推动它之前,它没有剩余空间可以粘贴,因为它的包含块被滚动出视图。
:root {
border: medium solid fuchsia;
}
#a {
position: sticky;
left: 0;
background: red;
width: 100px;
}
#t:not(:checked) ~ #a {
width: auto;
}
#b {
/* this is to make a scrollbar */
width: 3000px;
background: blue;
}
<input type="checkbox" id="t" checked><label for="t"><code>width: 100px;</code></label>
<div id="a">a</div>
<div id="b">b</div>
推荐阅读
- .net - Angular WithCredentials 不适用于 POST、PUT
- kubernetes - 使用 Traefik 进行 Kubernetes 基本身份验证
- python - 在 odoo 9 中创建不同的形式和树
- tsql - 理解t-sql中AND和WHERE的逻辑
- java - 从数据库中删除一个简单的行
- export - 导出大型数据集
- css - Webpack 不尊重导入顺序
- ios - 如何使用 swift 4 显示这样的 collectionView?
- delphi - Delphi 创建用户表单
- ruby-on-rails - nil:NilClass 的未定义方法“model_name”