资讯专栏INFORMATION COLUMN

用纯CSS实现优雅的tab页

lavnFan / 921人阅读

摘要:部分如上,四个区块,四大名著,嘎嘎代码如上,写的很烂,轻喷用来控制元素的显示和隐藏,实际上是为了实现动画效果此处有装逼的嫌疑,因为会阻碍,而不会,另外也可以用来代替。

说明

又是一个练手的小玩意儿,本身没什么技术含量,就是几个不常用的CSS3特性的结合而已。

要点

Label标签的for属性

单选框的:checked伪类

CSS的加号[+]选择器

效果图

原理

通常tab页的交互都是点击tab头然后展示对应的一块内容,这种排他性跟HTML里面的某个原住民很类似,是啥呢?没错!就是单选框组。

单选框组有一个:checked伪类,可以设定单选框被选中后的样式,所以我们要把一组单选框当做tab页的头部么?当然不是,单选框是很固执的,用CSS去感化他是很吃力的,那怎么办呢?

这里就要用到CSS里面的+选择器了[实际上这个选择器我之前从来没用过-_-||],简单来说+选择器就是选择紧跟在某个指定元素后面的另一个指定的元素,具体介绍请看 http://www.w3school.com.cn/cs...

Label的for属性是一个很有意思的东西,可以理解为一个遥控器:位于页面底部的一个label标签可以通过for属性来控制页面顶部的一个单选框或者复选框~,是不是很神奇?(噗→_→)

结合以上特点,可以得到一个实现tab页的基本思路:

一个单选按钮后面跟一个lable[tab头],再后面跟上一个div[tab内容块]
用.radio:checked + .tab-header 指定当前tab头的样式
用.radio:checked + .tab-header + .tab-content 指定当前tab内容块的样式

代码
《水浒传》是中国历史上第一部用古白话文写成的歌颂农民起义的长篇章回体版块结构小说,以宋江领导的起义军为主要题材,通过一系列梁山英雄反抗压迫、英勇斗争的生动故事,暴露了北宋末年统治阶级的腐朽和残暴,揭露了当时尖锐对立的社会矛盾和“官逼民反”的残酷现实。按120回本计,前70回讲述各个好汉上梁山,后50回主要为宋江全伙受招安为朝廷效力,以及被奸臣所害。
《三国演义》是中国古典四大名著之一,全名为《三国志通俗演义》。作者是元末明初小说家罗贯中,是中国第一部长篇章回体历史演义小说。描写了从东汉末年到西晋初年之间近105年的历史风云。全书反映了三国时代的政治军事斗争,反映了三国时代各类社会矛盾的转化,并概括了这一时代的历史巨变,塑造了一批叱咤风云的三国英雄人物。
《西游记》是中国古典四大名著之一,是由明代小说家吴承恩所创作的中国古代第一部浪漫主义的长篇神魔小说。主要描写了唐朝太宗贞观年间孙悟空、猪八戒、沙僧、白龙马四弟子保护唐僧西行取经,沿途历经九九八十一难,一路降妖伏魔,化险为夷,最后到达西天,取得真经的故事。取材于《大唐三藏取经诗话》和汉族民间传说。 [1]
《红楼梦》,中国古典四大名著之首,清代作家曹雪芹创作的章回体长篇小说[1] 。早期仅有前八十回抄本流传,八十回后部分未完成且原稿佚失。原名《脂砚斋重评石头记》。程伟元邀请高鹗协同整理出版百二十回全本[2] ,定名《红楼梦》。亦有版本作《金玉缘》。

HTML部分如上,四个区块,四大名著,嘎嘎

html,body{
  height: 100%;
  margin: 0;
  padding: 0;
  background-color: #58596b;
}
.container{
  width: 800px;
  height: 400px;
  margin: 100px auto;
  background-color: #fff;
  box-shadow: 0 1px 3px rgba(0,0,0,.1);
}
.tab-wrapper{
  position: relative;
  width: 800px;
  height: 60px;
  background-color: #33344a;
}
.tab-wrapper .tab-radio{
  display: none;
}
.tab-handler{
  position: relative;
  z-index: 2;
  display: block;
  float: left;
  height: 60px;
  padding: 0 40px;
  color: #717181;
  font-size: 16px;
  line-height: 60px;
  transition: .3s;
  transform: scale(.9);
}
.tab-radio:checked + .tab-handler{
  color: #fff;
  background-color: #e74c3c;
  transform: scale(1);
}
.tab-radio:checked + .tab-handler + .tab-content{
  visibility: visible;
  opacity: 1;
  transform: scale(1);
}
.tab-wrapper .tab-content{
  visibility: hidden;
  position: absolute;
  top: 60px;
  left: 0;
  width: 740px;
  padding: 30px;
  color: #999;
  font-size: 14px;
  line-height: 1.618em;
  background-color: #fff;
  opacity: 0;
  transition: transform .5s, opacity .7s;
  transform: translateY(20px);
}

CSS代码如上,写的很烂,轻喷~
用visibility+opacity来控制元素的显示和隐藏,实际上是为了实现动画效果(此处有装逼的嫌疑),因为display会阻碍transition,而visibility不会,另外也可以用pointer-events+opacity来代替。

代码就上面那些了,另附jsbin地址:http://output.jsbin.com/cicadu/4
在新版opera/chrome/firefox测试完美,safari上面有严重问题,貌似切换了tab之后,tab内容块的样式已经应用了然而却没有生效,目测页面没有重绘?在开发者工具里面将其focus一下才生效,具体原因未知,有哪位大神知道的请不吝赐教。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/111097.html

相关文章

  • 用纯CSS实现优雅tab

    摘要:部分如上,四个区块,四大名著,嘎嘎代码如上,写的很烂,轻喷用来控制元素的显示和隐藏,实际上是为了实现动画效果此处有装逼的嫌疑,因为会阻碍,而不会,另外也可以用来代替。 说明 又是一个练手的小玩意儿,本身没什么技术含量,就是几个不常用的CSS3特性的结合而已。 要点 Label标签的for属性 单选框的:checked伪类 CSS的加号[+]选择器 效果图 showImg(https...

    Ali_ 评论0 收藏0
  • 用纯css实现Tab切换

    摘要:所以当我们思考能否用来实现时还应考虑到的结构,能不能构造出满足已存在的选择器的布局。用来实现的好处就是可以尽量大的把组件功能和业务逻辑分离开来,真正做一个组件该做的事,希望越来越好 我们今天用css来实现一个常见的tab切换效果 查看原文可以有更好的排版效果哦 先看效果 https://codepen.io/xboxyan/pe... 前言 哪些简单的效果可以考虑用css来实现呢,目前...

    hizengzeng 评论0 收藏0
  • CSS实现Tab切换效果

    摘要:绑定和这个不用说和属性绑定隐藏按钮这个方法有很多充分发挥你们的想象力就可以了,我见过的方法有设置隐藏的设置绝对定位,将设置为很大的负值,移动到页面外达到隐藏效果设置绝对定位使元素脱离文档流,然后设置为透明来达到隐藏效果。 用CSS实现Tab切换效果 最近切一个页面的时候涉及到了一个tab切换的部分,因为不想用js想着能不能用纯CSS的选择器来实现切换效果。搜了一下大致有下面三种写法。 ...

    dayday_up 评论0 收藏0
  • CSS实现Tab切换效果

    摘要:绑定和这个不用说和属性绑定隐藏按钮这个方法有很多充分发挥你们的想象力就可以了,我见过的方法有设置隐藏的设置绝对定位,将设置为很大的负值,移动到页面外达到隐藏效果设置绝对定位使元素脱离文档流,然后设置为透明来达到隐藏效果。 用CSS实现Tab切换效果 最近切一个页面的时候涉及到了一个tab切换的部分,因为不想用js想着能不能用纯CSS的选择器来实现切换效果。搜了一下大致有下面三种写法。 ...

    Warren 评论0 收藏0

发表评论

0条评论

lavnFan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<