css 伪类实现弧形

html-css014

css 伪类实现弧形,第1张

在实现页面五花八门的有特色的ui时,我们有时会遇到要用实现一个弧形,而这样的弧形要怎么实现呢?用图片?不太优雅,这样就要无故多加载一张图片了,这里来说说怎么用css的after伪类来实现弧形。

写一个主元素,并给该元素添加伪类来设置成圆,取该圆的一部分来作为我们看到的圆弧。

第一种(正圆弧):

实现效果:

参照上面的 要点 ,大概也能知道个原理了吧。 看到的圆弧高度等于主元素高度,伪元素绝对于主元素定位,左右居中,上移100%;圆弧弧度取决于伪类的宽度 ,这点放到这里来说,是怕放在上面说反而让人觉得复杂了。

如果还不理解的话,可以把上面不必要的样式注释掉,辅助理解:

效果:

可以多调调高度宽度来帮助理解。

第二种(有角度的弧):

效果图:

实现角度弧的思路与正圆弧差不多,不同地方是:

不同点1. 伪元素大小与主元素一样,覆盖在主元素上;

不同点2. 设置伪元素的单个角度;

不用图片,只用css制作圆角的另一方法。html代码:<divclass="curvedBox"><span><spanclass="r1" ></span><spanclass="r2" ></span><spanclass="r3" ></span><spanclass="r4" ></span></span><divclass="content">Flex is a cross-platform development framework for creating rich Internet applications (RIAs). Flex enables you to create expressive, high-performance applications that run identically on all major browsers and operating systems. </div><span><spanclass="r4" ></span><spanclass="r3" ></span><spanclass="r2" ></span><spanclass="r1" ></span></span></div>css代码: ody{background-color:#000}.curvedBox{width:300pxmargin: 2510px auto 0}.curvedBox .r1,.curvedBox .r2,.curvedBox .r3,.curvedBox .r4{background-color:#fffdisplay:blockoverflow:hiddenheight:1pxfont-size:1px}.curvedBox .r2,.curvedBox .r3,.curvedBox .r4{border-width:0 1pxborder-left:1px solid #fffborder-right:1px solid #fff}.curvedBox .r1{margin:0 6px}.curvedBox .r2{margin:0 3px}.curvedBox .r3{margin:0 2px}.curvedBox .r4{margin:0 1pxheight:2px}.curvedBox .content{background:#fffborder-left:1px solid #fffborder-right:1px solid #fffpadding:0 5px}这个方法其实并不完美,其实只是利用了”无限接近”的一个概念。看放大后的图的话,可以很清楚地看到锯齿状。锯齿其实把图片放大足够地倍数地话,也能看到锯齿,不过放大地倍数得相当大了。将 r1 r2 r3 r4 层叠起来,利用它们 margin(left/right) 的改变以及 border(left/right),来实现这个近似的效果。理论上,如果 rn 足够多的话,效果就会无限趋近圆弧。不过话又说回来了,多加这么多的标签和css的话,在效率上必然会存在问题,也说不上就比用图片好到哪里去。所以说,这只是提供一个思路,到底怎么用,用在哪里,还得因地制宜。