[前台][CSS] 纯css实现纵向滚动固定表头与横向内容滚动

作者 : 开心源码 本文共1000个字,预计阅读时间需要3分钟 发布时间: 2022-05-12 共363人阅读

这次要实现的目标是相似这种,纵向滚动时表头固定,横向滚动时,表头跟着滚动

image.png

最基础的思路就是表头和内容是用两个表格来显示(图来自https://zhuanlan.zhihu.com/p/33280304),关于怎样保存表头和内容列宽一致链接里这个文章里也有写就不另外说了。

image.png

纵向滚动是挺好实现的,我开始是在内容的表格外面套了一个div,之后设置overflow-y:auto就实现纵向滚动了。
但横向滚动呢?
首先想到的方案是在最外面的div,outer加上overflow-x:auto

<div class="outer">    <div  class="head-container">        <table  class="head">            ……        </table>     </div>   <div  class="content-container">        <table  class="content">            ……        </table>     </div><div>
.outer {  overflow-x: auto;}.content-container {  overflow-y: auto;}

尽管这样横纵都能滚动了,但是横向滚动的时候纵向滚动条也被滚走了。

image.png
滚动条被滚走了

而后想到了是用js来同步,可以是可以的,但是还是想挣扎一下。

之后想到了fixed,发现假如表头设置为fixed无论横向滚动还是都会被固定在原地。
最后忽然想到一个position的新属性,sticky
设置了position: sticky ,在屏幕范围(viewport)时该元素的位置并不受到定位影响(设置是top、left等属性无效),当该元素的位置将要移出偏移范围时,定位又会变成fixed,根据设置的left、top等属性成固定位置的效果(https://www.cnblogs.com/s1nker/p/4835079.html)。

所以最后设置了表头

<div class="outer">    <table  class="head">            ……   </table>    <div  class="content-container">        <table  class="content">            ……        </table>     </div><div>

css:

.head {      position: sticky;      top: 0; }

就成功实现了想要的效果了。

image.png

不过sticky的兼容性也是要考虑一下的。

image.png

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » [前台][CSS] 纯css实现纵向滚动固定表头与横向内容滚动

发表回复