css - 使用定位属性时避免溢出的 CSS 技巧
问题描述
此问题发生在我的自定义可滑动列表元素中。
滚动时写入的日志是scrollLeft
列表的。
当我从头开始实现一个滚动元素及其滚动条和一个列表元素时,所有元素overflow
都是hidden
. 该列表是弹性框,它的一个子对象通过更改它们的left
ortranslateX
属性来滑动(在上面的演示中,我只是使用translateX
了但是两个 + 更改right
产生了相同的结果)。并且改变left
孩子的属性会导致这种溢出。
我已经找到解决方案来避免当有一个向右滑动的孩子时奇怪的水平滚动(请注意,y轴上的列表溢出仅在left
属性为正时发生),但他们需要更多代码和其中一些导致另一个问题,例如 DOM 树中的事件处理。所以我想找到一个很好的轻巧的技巧来解决这个溢出问题。
请注意,将position
孩子的属性设置为absolute
不起作用。
为了演示这种溢出的发生,我做了一个主干演示,显示在属性上设置正值left
会导致溢出(请参阅出现水平滚动条)。
* {
position: relative;
flex-direction: column;
}
body {
height: 90vh;
}
#view-scroller {
display: flex;
}
#swipable-list-view {
height: 100%;
flex-shrink: 1;
display: flex;
}
[swiped] {
left: 20%;
}
<div id="view-scroller">
<div id="swipable-list-view">
<div>Item</div>
<div swiped>Swiped Item</div>
<div>Item</div>
</div>
<div>
解决方案
添加overflow: hidden
on#swipable-list-view
可以阻止具有该属性[swiped]
的任何内容溢出其容器。
我还建议使用css-transforms来移动[swiped]
元素,因为这更适合动画过渡。
[swiped] {
transform: translateX(20%);
flex: 1;
width: 100%;
}
推荐阅读
- ionic-framework - 改变离子含量离子4的背景而不是内部元素
- python - 如何根据 Python 中的另一个列表对一个列表进行排序?
- html - HTML 文本和 Font Awesome 图标之间的间距
- mysql - 如何在 django 中迁移 mysql 时修复迁移中的错误
- python - 如何从 python 中的完整数据集创建缺失值率(10%、20% 等)
- r - 回归 - 有界因变量 - 模型选择
- ssis - 我们可以在使用 SSIS 包上传多个文件时在 Azure blob 中使用回滚(事务)吗?
- x11 - 如何在没有桌面环境的 CentOS 中使用 dbus
- excel - 如何将行转置为列,并插入行以容纳新行?
- javascript - 轮播下一个和上一个按钮不起作用