纯CSS圆角Tab

Tab能算的上是网页里最为常见的组件,不论是作为内容切换,还是直接作为导航,形形色色的Tab扮演着各种交互角色。既然是重要的交互角色,那么无论其颜色还是形状都关乎整个交互过程——圆角是有意义的,在视觉上把Tab和其他分隔元素区别开来是必要的,就如同圆角按钮一样——可能很多时候圆角按钮都与整个设计风格格格不入,但却是必须的,因为交互元素的凸显比整个设计浑然一体更为重要。

在IE67日渐边缘的如今,2012可能是前端重心转移最为明显的一年。于此也就不去考虑过时浏览器的兼容性了,对于它们,能看看内容就已经不错了,管它美不美观错不错位,时代在进步,往前看才不至于失业……

今天琢磨了会写了下面这样一个CSS圆角Tab,和网上流行的圆角Tab不同之处在于:Tab底部也使用圆角过渡

Pure CSS Rounded Tab Navigation

我简单制作了一个DEMO,列出了HTML结构和CSS:

为达到底部使用圆角过渡的目的,关键就是下面两点:

  1. border-radius 的使用时显而易见的,这个属性在所有现代浏览器中工作良好,并且在无论是Firefox还是Chrome的更新里,都不再需要前缀。
  2. 由于Tab下沿的圆角无法填补,需要用 li 的伪元素来定位填补,同时还需要 a 的伪元素来定位覆盖隐藏Tab下沿的边线。

具体结构我绘制了一张框图,感觉上这种圆角的参数很微妙…

rounded tab html construction diagram

代码里面值得一提的可能只有一条:

1
2
3
4
5
6
7
8
9
.top-nav li.current:after{
	content:"\200B";
	position:absolute;
	display:block;
	width:100%;
	left:0;
	bottom:-5px;
	border-bottom:1px solid #fff;
}

那就是 content:"\200B";。其实之前的 再谈清除浮动 里也已经提到,这个 U+200B 字符是一个“零宽度空白”,其本身就不可见,所以也就不需要在使用 visibility:hidden; 来隐藏内容。

2012/01/10更新:非常巧合的,css-tricks的Chris Coyier在几天后也发了一篇关于圆角tab的文章 (Better) Tabs with Round Out Borders。对于Chris Coyier大神的圆角我只能说,“用阴影而不是伪元素来盖住直角多余的部分”这真太有创意了!他的实现使用了2个伪元素和box-shadow,而我用了3个伪元素,但没有使用box-shadow。讽刺的是,在IE67下轻微错位的我实现方式,可能更适应国情…

Related Post:

  • 2013/01/06 -- 那些CSS的细节问题(2) —— 圆角响应区 (6)
    之前《那些CSS/JavaScript的细节问题》我都是凑足3个再开始写,现在发觉,很多时候要凑出3个古里古怪的问题还真不是件易事~ 有的时候想到要写一个问题,想等凑多些再写,但又总是一直拖着,好端端的讨论话题都过期了。更糟糕的是,往往好不容易凑足了数量,结果之前要写的东西居然又模糊不清了...以后,在一定时间里凑不出数量的话,也只好先写起来再说:) 所以今天,就只有一个问题,关于边框圆角:...
  • 2013/04/12 -- 那些CSS的细节问题(4) —— 圆角边框和outline (3)
    能写文章,说明时间略有空余,这应该算好事吧~看了下草稿箱,果断还是选这篇先写完,因为和前面的几篇有关联。在之前的 圆角响应区 以及 圆角边框和overflow 中,已经讨论过圆角边框的一些问题,本篇如题,是关于圆角边框和 outline 的,这里也正好回答了一丝在圆角响应区里提出的“为什么不在做DEMO的时候用 outline 描画边缘?”的问题。在写那篇之前做DEMO的时候,我是用了 outli...
  • 2012/11/28 -- 那些CSS的细节问题(1) (7)
    几个月前写了一篇 那些JavaScript的细节问题(1),专记些细微的,古怪的,甚少有用的东西,不过,可以当作茶余饭后的消遣。这次凑了3个CSS的问题,也好给JavaScript那个系列凑个成对。 好了废话不多说了,来看看下面这些或易或难的无聊问题吧~...
  • 2012/02/17 -- webkit自定义滚动条 (3)
    在之前的 Google Reader的颓然改变 里我吐槽了google reader的这次改版实在是糟糕透了,但是现在看来,自己似乎也渐渐习惯了——这得益于Google的不断的改进,扭转很多不如意的方面。比如内容区添加了清晰的边线,工具条的高度被压缩,甚至如果窗口高度不高的情况下,搜索栏和工具栏的空间会被压缩的更多。当然,直到现在我还是没法接受那种泛白的背景,长时间阅读还是很累人的。 但其实...
  • 2010/08/07 -- CSS定位机制之一:普通流 (25)
    文档流,其实标准里根本就没有这个词。如果把文档流直译为英文就是 document flow ,但标准里只有另一个词,叫做普通流( normal flow ),或者称为常规流。但似乎大家更习惯文档流的称呼,因为很多中文翻译的书就是这么来的。比如《CSS Mastery》,英文原书中至始至终都只有普通流 normal flow 这一词,从来没出现过文档流 document flow 。但是中文译本“普...

3 Responses to “纯CSS圆角Tab”

  1. 为什么搞的那么复杂呀?既然用了Css3 border-radius属性那干脆更简洁点:不如直接把.top-nav li a中加上{border-radius:2px 2px 0 0;}直接搞定圆角。个人感觉底部有那个圆角过渡不怎么好看,呵呵。

  2. it’s working super for all browser and thanks

Leave a Reply