CSS3 -- 优化滚动(scroll-behavior | scroll-snap)

发布时间 2023-10-25 00:53:59作者: Super_Mi

实现横向滑动:当子元素溢出父级盒子时,做以下操作。

第一种方式:

1.父级定义可横向滑动。

overflow-x: auto;

2.子元素设置为行内块。

display: inline-block;

3.父元素不允许子元素换行。 

white-space: nowrap;

也可以隐藏滚动条

::-webkit-scrollbar{
    display: none;
}

第二种方式:

1.父级定义可横向滑动及display:flex。

注意:当子元素溢出父级盒子时,子元素宽度会自适应,无法出现滚动。

overflow-x: auto;
display: flex;

2.子元素设置为flex-shrink: 0; 固定元素不被挤压。

flex-shrink: 0;

滑动时,让子元素有吸附效果。可以用scroll snap, 边缘汇合, 看到页面滚动,停留在你关注的区域上,捕捉用户滑动的手势,容器内子元素会依据手势做照应。

scroll snap:可以让网页容器滚动停止时,无需任何js代码的参与,浏览器可以自动平滑定位到指定元素的指定位置。类似于幻灯片广告效果,就可以纯css实现。

scroll snap的兼容性非常好,移动端几乎可以放心使用。

scroll snap是css中一个独立的模块,可以让网页容器滚动停止时,自动平滑定位到指定元素的指定位置。

scroll snap属性:

scroll-snap-type: 作用在滚动容器上。值:none,x, y, mandatory(浏览器必须捕捉到每个滚动点,滚动必须对齐到滚动容器的开始处/居中/结束处)
注意:mandatory是强制页面吸附到指定位置,能够自动滚动贴合到元素的对齐位置。
scroll-snap-align:  作用在定位子项上。值:none, start, end, center。

全屏滚动:

左滑删除功能:

注意:让捕获点在结束位置对齐。

解决button之间的间距(空白导致行内元素间隙的问题):

方法1:父元素设置font-size: 0; (消除子行内元素间,额外的空白)子元素设置具体的font-size的值。

方法2:浮动

方法3:外边距负数

平滑滚动:

scroll-behavior: 允许滚动时,采用平滑过渡。值:smooth(平稳丝滑的滚动);auto;

直接把这个属性,添加到容器中即可。