CSS3小分队——进击的border-radius
上一篇:《CSS float属性小解——”浮“生若水》
写在前面:
~~强势插入~~如果有想进一步了解float属性的小伙伴,可以猛戳上面的链接,《CSS float属性小解——”浮“生若水》这篇文章加入了不少自己的想法,用例子讨论了float到底有没有脱离文档流这个问题,也许能给你带来意外的收获哦~~~~~~
下面切入正题。
当CSS3披荆斩棘来到我们面前,我们看到的是一个操作起来更加简便、更加炫目的html世界。如果当CSS3完全盛行起来,当多个主流浏览器开始兼容一个个CSS3属性,那么无论是对于前端开发者,还是对于坐在浏览器前浏览网页的我们,都将是一件非常美妙的事情,那时才是“旧时王谢堂前燕,飞入寻常百姓家”。
对于进击的CSS3小分队,让我们依次掀开它们华丽的面纱。第一个出场的是border-radius。
一、CSS2代码生成圆角
在网页设计中,圆角可以用来美化区域,在css2中,如果我们要制作一个圆角,方法也不少,只不过都相对复杂。比如,最方便的可以用圆角图片,但是会增加http请求,用户体验稍差,没有纯代码来得快捷;用代码的话可以用多个元素层叠的思想来“堆”出一个圆角,但是代码较多,看着就烦。当然还有其他方法,小伙伴们可以发挥奇思妙想,但是应该绝对没有border-radius来得酣畅直接。
不管是不是百战不殆,知己知彼还是很有必要的,所以在此先用CSS2的代码来生成圆角来看看效果:

思路是用多个div进行叠加,从而得到圆角的效果。上面两个角和下面两个角的div类顺序相反即可,主体div来确定区域的大小。代码如下:
HTML Markup
<!--左上角/右上角--> <div class="r_top"> <div class="r_a"></div> <div class="r_b"></div> <div class="r_c"></div> <div class="r_d"></div> <div class="r_e"></div> <div class="r_f"></div> <div class="r_g"></div> <div class="r_h"></div> </div> <div class="box"> <!-- 主体部分 --> </div> <!--左下角/右下角--> <div class="r_bottom"> <div class="r_h"></div> <div class="r_g"></div> <div class="r_f"></div> <div class="r_e"></div> <div class="r_d"></div> <div class="r_c"></div> <div class="r_b"></div> <div class="r_a"></div> </div>
CSS Code
<!--左上角/右上角--> <div class="r_top"> <div class="r_a"></div> <div class="r_b"></div> <div class="r_c"></div> <div class="r_d"></div> <div class="r_e"></div> <div class="r_f"></div> <div class="r_g"></div> <div class="r_h"></div> </div> <div class="box"> <!-- 主体部分 --> </div> <!--左下角/右下角--> <div class="r_bottom"> <div class="r_h"></div> <div class="r_g"></div> <div class="r_f"></div> <div class="r_e"></div> <div class="r_d"></div> <div class="r_c"></div> <div class="r_b"></div> <div class="r_a"></div> </div>
让我们放大看一下效果:

该暴露的都暴露出来了。。。放大后8个div的棱角都显现无遗。也许在浏览网页的时候很少有人会放大好几倍去看,但这至少是一个存在的问题。
以上是用CSS2的一种方法做出来的圆角效果,明显的代码重复,代码繁多,放大后还会有棱角出现。如果要用同样的思路生成一个圆角半径更大的圆角,而且希望得到的圆角效果更加圆润,那么就需要增加更多的标签,更多重复繁多的代码,这并不是我们想看到的。
二、CSS3进击的border-radius
CSS3中加入的border-radius很好的解决了上述的问题,着实给我们带来了极大的便利。首先来看它的语法:
border-radius : none | <length>{1,4} [/ <length>{1,4} ]?
border-radius是一种简写属性,用来设置border-*-radius的属性,值可以取数值,也可以取百分数,四个值是按照top-left、top-right、bottom-right、bottom-left的顺序即从上开始顺时针来设置的。下面分八种情况来讨论。
1、border-radius:20px;属性后只有一个值,那么即top-left、top-right、bottom-right、bottom-left圆角半径相等,效果如下:

2、border-radius:20px 40px;属性后有两个值,那么即top-left和bottom-right取第一个值,top-right和bottom-left取第二个值,即对角取值,效果如下:

3、border-radius:20px 30px 40px;属性后有三个值,那么即top-left取第一个值,top-right和bottom-left取第二个值,bottom-right取第三个值,其实还是按照top-left、top-right、bottom-right、bottom-left的顺序即从上开始顺时针来设置的,因为正常情况下top-right和bottom-left取值相等,所以第三个值自然是bottom-right,效果如下:

4、border-radius:20px 30px 40px 50px;属性后有四个值,那么按照按照top-left、top-right、bottom-right、bottom-left的顺序即从上开始顺时针来设置,依次取值,效果如下:

以上为基本的四种取值,接下来列出另外四种取值形式,下面四种形式其实是和上面四种形式没有什么区别的,只是设置了不同的水平半径和垂直半径而已:
5、border-radius:水平半径/垂直半径,即border-radius:20px/40px;即四个圆角均取同一个水平半径和垂直半径,其实属于1的变形,效果如下:

6、border-radius:水平半径1 水平半径2/垂直半径1 垂直半径2,即border-radius:20px 30px/40px 50px;即top-left和bottom-right取水平半径1和垂直半径1,top-right和bottom-left取水平半径2和垂直半径2,其实属于2的变形,效果如下:

7、border-radius:水平半径1 水平半径2 水平半径3/垂直半径1 垂直半径2 垂直半径3,即border-radius:20px 30px 40px/50px 60px 70px;即top-left取水平半径1和垂直半径1,top-right和bottom-left取水平半径2和垂直半径2,bottom-right取水平半径3和垂直半径3,其实属于3的变形,效果如下:

8、border-radius:水平半径1 水平半径2 水平半径3 水平半径4/垂直半径1 垂直半径2 垂直半径3 垂直半径4,即border-radius:20px 30px 40px 50px/60px 70px 80px 90px;即顺时针依次取值,其实属于4的变形,效果如下:

当然,除了像素等单位,还可以用百分号作单位,不要忘记哦~~~~~~~~~
让我们放大效果看一下:

放大以后,圆角依然是像素级别的,一下子感觉整个世界都圆润起来了呢。
当然,border-radius也可以拆开写:
border-top-left-radius: <length> <length> //左上角 border-top-right-radius: <length> <length> //右上角 border-bottom-right-radius:<length> <length> //右下角 border-bottom-left-radius:<length> <length> //左下角
PS:对于较老的浏览器请不要忘记添加可恶的浏览器前缀-moz-/-webkit-。
三、这货能干什么
border-radius能干什么就是厨师做菜的问题了,不一样的厨师有不一样的思想,有不一样的手艺,做出来的菜肴也千差万别。
有这样的菜品:

也有这样的菜品:

还有这样椭圆的菜品:

或者来个圆圆的大饼等等:

如上图所示,border-radius为我们生成椭圆和圆提供了很大的便利,也为我们生成更多的图案提供的更多的可能。
四、小了个结
配合其他属性,发挥主观能动性,border-radius可以做出很多优雅的效果。关于border-radius至此告一段落,希望能给需要的朋友带来帮助,有新的想法和问题也欢迎讨论,有讲的不对的地方还恳请批评指正。
~~再次强势插入~~如果有想进一步了解float属性的小伙伴,可以猛戳下面的链接,《CSS float属性小解——”浮“生若水》这篇文章加入了不少自己的想法,用例子讨论了float到底有没有脱离文档流这个问题,也许能给你带来意外的收获哦~~~~~~
下一篇:《CSS3小分队——text分身text-shadow》
CSS3小分队——进击的border-radius的更多相关文章
- CSS3:不可思议的border属性&Web字体图标Font Awesome
CSS3:不可思议的border属性 转载至——译文:不可思议的CSS border属性 原文:Magic of CSS border property Web字体图标Font Awesome 转载 ...
- 利用css3动画和border来实现圆形进度条
最近在学习前端的一些知识,发现border的功能十分强大啊! 首先来看看demo 就是这么一个圆形的进度条,在文本框中输入0-100的数值下面的进度条相应的转到多少 这个主要是利用border,旋转和 ...
- CSS3:不可思议的border属性
在CSS中,其border属性有很多的规则.对于一些事物,例如三角形或者其它的图像,我们仍然使用图片代替.但是现在就不需要了,我们可以用CSS形成一些基本图形,我分享了一些关于这方面的技巧. 1.正三 ...
- CSS3——盒子模型 border(边框) 轮廓(outline)属性 margin外边距 padding填充
盒子模型 包括——边距,边框,填充,和实际内容 Margin(外边距) - 清除边框外的区域,外边距是透明的. Border(边框) - 围绕在内边距和内容外的边框. Padding(内边距) - 清 ...
- 为 Web 设计师准备的 20 款 CSS3 工具
1.CSS3 Generator 2. Border Radius 3. CSS3 Maker 4. CSS3 Transforms 5. CSS3 Drop shadow generator 6. ...
- 纯CSS打造银色MacBook Air(完整版)
上一篇:<selection伪元素小解> ::selection{ background:blue; color:red; }p{font-size:14px;} 作者主页:myvin 博 ...
- css3新特性学习系列 -- border
css3新特性 border属性(border-radius.border-image.box-shadow)详解 1.border-radius 圆角 支持:IE9+ 用法: border-rad ...
- 利用CSS3实现圆角的outline效果的教程
一.首先,outline是个很牛的东西1. border近亲outline和border是近亲,为什么这么讲呢?首先,都是给元素外面套框框的:其次,支持的属性值几乎都是一样的,例如,outline-s ...
- [css]需警惕CSS3属性的书写顺序
转载张鑫旭:http://www.zhangxinxu.com/wordpress/2010/09/%E9%9C%80%E8%AD%A6%E6%83%95css3%E5%B1%9E%E6%80%A7% ...
随机推荐
- ajaxFileUpload文件上传
一.简介 ajaxFileUpload是一种异步的文件上传控件,通过ajax进行文件上传,并获取上传处理结果.在很多时候我们需要使用到文件上传的功能,但是不需要使用那些强大的上传插件.此时就可以使用a ...
- php session文件修改路径
默认状态下php的 sess_文件会生成到/tmp目录下,1天的时间就会生成很多,由于/tmp目录下还有别的重要文件,所以看起来不爽.具体更改做法是,找到 php.ini文件里面的session.sa ...
- [转]Javascript中的自执行函数表达式
[转]Javascript中的自执行函数表达式 本文转载自:http://www.ghugo.com/javascript-auto-run-function/ 以下是正文: Posted on 20 ...
- runv kill 流程分析
1.runv/kill.go Action: func(context *cli.Context) 该函数做的工作很简单,就是通过grpc客户端,发送一个grpc请求而已,如下: c.Signal(n ...
- 【Android UI设计与开发】7.底部菜单栏(四)PopupWindow 实现显示仿腾讯新闻底部弹出菜单
前一篇文章中有用到 PopupWindow 来实现弹窗的功能.简单介绍以下吧. 官方文档是这样解释的:这就是一个弹出窗口,可以用来显示一个任意视图.出现的弹出窗口是一个浮动容器的当前活动. 1.首先来 ...
- 【读书笔记《Android游戏编程之从零开始》】2.Hello,World!
本人看的是PDF文档,很多都是直接都是复制粘贴的记录,简单的记录下笔记! 2.1 创建一个Android项目 Application Name: 应用名称(安装在手机上显示的名字)Project Na ...
- ADS(一)
LC匹配 已知输入输出阻抗,设计LC匹配电路使输入输出阻抗共轭匹配 Step1 Step2 Result1 Result2 微带线单枝匹配 已知源和负载阻抗,求微带线单枝匹配电路 Step1 ...
- web前端笔试题总结
em和rem的区别: 浏览器的默认字体高度是16px,1em=16px:大小可以自己设置调整,并且默认集成父级容器中文本的大小. rem是CSS3中新增的属性,默认情况下是文本尺寸的大小,不同的是它集 ...
- HDU 4045 Machine scheduling --第二类Strling数
题意: n个数(1~n)取出r个数,取出的数相差要>=k, 然后分成m个可空组,问有多少种情况. 解法: 先看从n个数中取r个相差>=k的数的方法数,可以发现 dp[i][j] = dp[ ...
- sql 入门经典(第五版) Ryan Stephens 学习笔记 (第一,二,三,,四,五章)
SQL - Structured Query Language (结构化查询语言) 1/ SQL 命令的类型 : 数据定义语言: DDL 数据操作语言: DML 数据查询语言: DQL 数据控制语言 ...