在实现页面五花八门的有特色的ui时,我们有时会遇到要用实现一个弧形,而这样的弧形要怎么实现呢?用图片?不太优雅,这样就要无故多加载一张图片了,这里来说说怎么用css的after伪类来实现弧形。
写一个主元素,并给该元素添加伪类来设置成圆,取该圆的一部分来作为我们看到的圆弧。
第一种(正圆弧):
实现效果:
参照上面的 要点 ,大概也能知道个原理了吧。 看到的圆弧高度等于主元素高度,伪元素绝对于主元素定位,左右居中,上移100%;圆弧弧度取决于伪类的宽度 ,这点放到这里来说,是怕放在上面说反而让人觉得复杂了。
如果还不理解的话,可以把上面不必要的样式注释掉,辅助理解:
效果:
可以多调调高度宽度来帮助理解。
第二种(有角度的弧):
效果图:
实现角度弧的思路与正圆弧差不多,不同地方是:
不同点1. 伪元素大小与主元素一样,覆盖在主元素上;
不同点2. 设置伪元素的单个角度;
border-radius:该CSS属性是为一个div设置弧度值。border属性,CSS3提供了四个单独的属性:(可以实现弧度的转换)
border-top-left-radius为左上角设置弧度值。border-top-right-radius为右上角设置弧度值。border-bottom-left-radius为左下角设置弧度值。
border-bottom-right-radius为右下角设置弧度值。
例如设置:border-top-left-radius:15px
见效果:可见只有左上角具有了px的弧度。
可以做一个animation,举一个例子,让一个元素在某一个范围之内,左距离和上距离同时改变。但是,弧线要让两个距离改变速度变化不一致,所以最好一个元素改变上方距离(可以是top也可是margin-top),里面嵌入一个元素改变左边距离。例如,假如你要让横轴均匀变化,纵轴不均匀变化,轨迹为⌒形,可以左变化为{from{margin-left:0px}to{margin-left:200px}},运动方式设为linear,然后上下变化可以{from{margin-top:100px}50%{margin-top:0px}to{margin-top:100px}},运动方式设为ease-in-out。由于时间仓促我没有具体实验过,而且表达可能不太清楚,请原谅。