利用css3 translate完美实现表头固定效果


Posted in HTML / CSS onFebruary 28, 2017

前言

前段时间在工作中正好需要这个功能,但是找了很多都不能完美的实现,所以在此就自己做了一个固定表头的方法,主要用到了css3中的translate和一小段js代码,下面来一起看看吧。

效果如下:

利用css3 translate完美实现表头固定效果

感觉是不是很和谐,而且代码也少,不足的是IE9以下不支持translate属性,但现在也没多少要考滤IE9以下的兼容了吧,做前端老兼顾低版本的浏览器难免会让自己束手束脚。。。。

下面来看下代码吧

HTML

<div class="box">
    <table>
        <thead>
            <tr>
                <th>1</th>
                <th>2</th>
                <th>3</th>
                <th>4</th>
                <th>5</th>
                <th>6</th>
                <th>7</th>
                <th>8</th>
                <th>9</th>
                <th>10</th>
                <th>11</th>
                <th>12</th>
                <th>13</th>
                <th>14</th>
                <th>15</th>
            </tr>
        </thead>
        <tbody>
            <script>
            var tr = '';
            for(var i=0; i<15; i++) {
                tr += '<tr>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                        <td>'+i+'</td>\
                    </tr>';
            }
            document.write(tr);
            </script>                
        </tbody>
    </table>
</div>

CSS样式

<style>
*{ margin: 0; padding: 0; list-style: none;}
.box {
    width: 300px;
    height: 300px;
    margin: 50px auto 0;
    overflow: auto;
}
.box table{
    width: 100%;
    border-collapse: collapse;
    border-right: 1px solid #ccc;
    border-top: 1px solid #ccc;
    text-align: center;
}
.box table thead {
    background-color: #ccc;
}
.box table th,
.box table td {
    padding: 8px 10px;
    border-left: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
    white-space: nowrap;
}
</style>

JS脚本

<script>
window.onload = function() {
    var $ = document.querySelector.bind(document);
    var boxEle = $('.box');
    boxEle.addEventListener('scroll', function(e) {
        this.querySelector('thead').style.transform = 'translate(0, '+this.scrollTop+'px)';
    });
}
</script>

总结

好了,以上就是这篇文章的全部内容了,代码是不是真的很少呢,还在等什么?快点感受一下吧。希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

HTML / CSS 相关文章推荐
CSS3 渐变(Gradients)之CSS3 径向渐变
Jul 08 HTML / CSS
css3 给背景设置渐变色的方法
Sep 12 HTML / CSS
纯CSS3打造动感漂亮时尚的扇形菜单
Mar 18 HTML / CSS
五款漂亮的纯CSS3动画按钮的实例教程
Nov 21 HTML / CSS
CSS3绘制不规则图形的一些方法示例
Nov 07 HTML / CSS
纯CSS3实现8组超炫酷鼠标滑过图片动画
Mar 16 HTML / CSS
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
Aug 25 HTML / CSS
CSS3中的display:grid,网格布局介绍
Oct 30 HTML / CSS
使用html5+css3来实现slider切换效果告别javascript+css
Jan 08 HTML / CSS
HTML5新特性之用SVG绘制微信logo
Feb 03 HTML / CSS
详解如何获取localStorage最大存储大小的方法
May 21 HTML / CSS
使用HTML5加载音频和视频的实现代码
Nov 30 HTML / CSS
纯CSS3实现Material Design效果
Mar 09 #HTML / CSS
CSS3实现精美横向滚动菜单按钮
Apr 14 #HTML / CSS
真正了解CSS3背景下的@font face规则
May 04 #HTML / CSS
手把手教你用纯css3实现轮播图效果实例
May 04 #HTML / CSS
使用HTML5和CSS3表单验证功能
May 05 #HTML / CSS
CSS3实现任意图片lowpoly动画效果实例
May 11 #HTML / CSS
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
Jun 15 #HTML / CSS
You might like
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
Laravel find in set排序实例
2019/10/09 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
js实现消息滚动效果
2017/01/18 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
Python enumerate索引迭代代码解析
2018/01/19 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
某某同志考察材料
2014/05/28 职场文书
营销总监岗位职责
2014/09/16 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书
2014年内勤工作总结
2014/11/24 职场文书
优秀团员事迹材料
2014/12/25 职场文书
刑事辩护词范文
2015/05/21 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android