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

html-css018

[前端][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的兼容性也是要考虑一下的。

首先是必须要有js跟CSS配合起来的,当然两者都不一定,例如js也可以实现动画效果,只是麻烦,要简单点直接用JQ里面的animate()方法配合css控制动画,又或者直接一点使用CSS3实现动画,注意是css3,但就你的代码写的是走马灯这种早就没人用的写法,目测你是个初学者,所以我的回答你并不会采纳,因为你看不懂,现在一般都用脚本写轮播图,没人用走马灯的了。

CSS3的悬停我可以写给你,JQ目测写出来对你也没多大用处,到时还得绑定什么的你一搞不出觉得我瞎说不采纳我那更悲剧

给img标签加上class或者给marquee加上class,否则怎么搞,我这里就以直接给img加上class="animate"写给你了

.animate:hover{-webkit-transform:scale(1.25,1.25)transform:scale(1.25,1.25)box-shadow: 5px 5px 6px rgba(0, 0, 0, 0.4)-webkit-transition:all .4s-moz-transition:all .4s-o-transition:all .4s-ms-transition:all .4stransition:all .4s}

里面的大小什么都是可以控制的,包括时间,这些就拜托您上W3C看看,我已经打了很多东西了,你要有良心就采纳,采纳后可以追问,否则别追问我问题了哈,我是web前端,语气有点叼,因为我被迫来问答里混,原谅我一个技术人员被叫来干这些鸟不拉屎的工作,所以带点脾气

纵向使用鼠标滚轮控制:可以设置页面的长度大于显示屏分辨率(可以设置body的height参数为3000px),多余的部分就以鼠标滚轮查看。

横向滚动条控制:在内容div或者article中设置横向长度大于屏幕分辨率,或者在父盒子设置overflow:scroll,多出的部分就使用滚动条显示。

从网页的美观性和用户体验角度,最好设置页面单向(纵向滚动)。横向滚动用户体验效果不是很好。