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

html-css08

[前端][CSS] 纯css实现纵向滚动固定表头与横向内容滚动,第1张

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

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

纵向滚动是挺好实现的,我开始是在内容的表格外面套了一个div,之后设置 overflow-y:auto 就实现纵向滚动了。

但横向滚动呢?

首先想到的方案是在最外面的div,outer加上 overflow-x:auto

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

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

之后想到了fixed,发现如果表头设置为fixed无论横向滚动还是都会被固定在原地。

最后突然想到一个position的新属性,sticky

设置了 position: sticky ,在屏幕范围(viewport)时该元素的位置并不受到定位影响(设置是top、left等属性无效),当该元素的位置将要移出偏移范围时,定位又会变成fixed,根据设置的left、top等属性成固定位置的效果( https://www.cnblogs.com/s1nker/p/4835079.html )。

所以最后设置了表头

css:

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

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

要css 底部固定需要两部分代码:html代码、css代码

1、html代码:

<body>

<div class='header'></div>

<div class='container'></div>

<div class='footer'></div>

</body>

2、css代码:

.container{ padding-bottom:30px/*需要 >= footer的height值*/}

.footer{ height:30pxposition:fixed  bottom:0px  z-index:-1}

扩展资料:

HTML代码使用规范问题:

1、格式问题

在代码视图中编写代码,一定要规范的格式,不要把代码全部都写到一块,这样不仅影响效率,更加影响视觉,当出现问题的时候往往很难找到原因所在,比如,我在编写HTML标签的时候总是每个标签都顶格写,结果今天在实验的时候,出现了错误,自己看着自己的代码找问题都想着急,最后根据嵌套的层数找到了原因,缺少了结束标签 导致的严重错误,所以谨记要把代码格式写规范;

2、布局问题:

在设计网页时,应该首先构造好网页的整个框架,然后对每个框架逐一进行完善,这样当那个部分出现问题的时候,我们就可以单独找到那个模块进行修改,例如我们刚刚学到的div+css这一部分的时候,应该先创建一个总的容器,然后在容器中逐一添加登录、导航、广告展示、主要内容、版权信息等各个模块,设置好各自的css样式,然后 再进行进一步的细化。

在这样的设计中,如果不先设计好总的结构,div的位置就会错乱,那样就不能很清晰地找到发生状况的原因。

3、输入问题:

一定要正确输入标签。输入标签时,不要输入多余的空格,否则浏览器可能无法识别这个标签,导致无法正确地显示信息。各种符号一定要在英文状态下输入,否则不会 显示正确的效果。源代码不区分大小写。

4、属性设置问题:

相应的标签对应着自己的属性,因为各个标签对应的属性实在是太多了,很容易混淆,如果我们想给某个标签内的内容设置相应的属性,我们必须在该标签内找到相应的 属性方法进行设置,比如将<table>的宽度设置为700、边框宽度设置为1、单元格间距为0,相应的代码设置是:<table width="700" border="1" cellspacing="0" >;

5、引用问题:

当我们在外部设置了css样式,并且要引用这个样式表时,我们必须要在<head></head>标签内添加<link>标签,如外部样式表为style.css,那么我们需要在head标签中添加的是<link href="css/style.css" rel="stylesheet" type="text/css"/>,首先href是引入样式的地址必不可少,rel定义了文档与链接的关系,stylesheet是定义一个外部加载样式表。

参考资料:百度百科——HTML代码