选项卡是个很常见的小组件,总结一下想到的知识点和方法
这里就拿一般意义上的横向选项卡来说,一般来说会结合点击/鼠标移入实现效果的变化,如下拉菜单,背景变化等。
选项卡是个很常见的小组件,总结一下想到的知识点和方法
这里就拿一般意义上的横向选项卡来说,一般来说会结合点击/鼠标移入实现效果的变化,如下拉菜单,背景变化等
- 布局
 
float 肯定是可以实现的,absolute+float:left+li,将列表横向布局实现。
如果用这种方法,免不了要想 浮动 可能引发的问题 - 父级高度塌陷。解决的方法也很容易搜到,“古老”方法可以在结构最后添加一个空div清除浮动;“现代”方法用::after伪元素也分分钟解决,注意要设置伪元素为块级元素block才能出现效果,加上clear:both
接下来可能会引申到两端对齐 还可以用inline-block+text-align: justify 实现两端对齐,不过其默认对最后一行无效,新浏览器可配合text-align-last: justify使用。面对兼容问题一样可以使用添加空div或者伪元素,设置display: inline-block,并设置宽度为 100%
另外也可以 flex ,操作更加容易一些
- 切换
 
利用 checked 及相关伪类
利用input radio的单选特性实现切换,最后清除radio选项的视觉显示
1  | <!DOCTYPE html>  | 

利用 锚点实现 herf + :target
利用a将href与对应的id绑定,调整显示层级z-index实现切换
要注意利用a的话,点击之后后会自动跳转到 以对应id元素为页面顶端的位置
1  | <!DOCTYPE html>  | 

利用 js
直观上想,可以直接利用 js onmouseover onclick 等实现,不过这就不属于纯 css 实现的范畴了