CSS3是样式表(style sheet)语言的最新版本,它的一大优点就是支持圆角。

网页设计大师Nicholas Zakas的最新文章,清晰易懂地解释了CSS3圆角的各个方面,非常值得学习。以下就是我翻译的中文版。

=========================================

CSS3圆角详解

作者:Nicholas Zakas

译者:阮一峰

发表日期:2010年12月8日

一、CSS3圆角的优点

传统的圆角生成方案,必须使用多张图片作为背景图案。CSS3的出现,使得我们再也不必浪费时间去制作这些图片了,而且还有其他多个优点:

* 减少维护的工作量。图片文件的生成、更新、编写网页代码,这些工作都不再需要了。

* 提高网页性能。由于不必再发出多余的HTTP请求,网页的载入速度将变快。

* 增加视觉可靠性。某些情况下(网络拥堵、服务器出错、网速过慢等等),背景图片会下载失败,导致视觉效果不佳。CSS3就不会发生这种情况。

二、border-radius属性

CSS3圆角只需设置一个属性:border-radius(含义是"边框半径")。你为这个属性提供一个值,就能同时设置四个圆角的半径。所有合法的CSS度量值都可以使用:em、ex、pt、px、百分比等等。

比如,下面是一个div方框:

现在设置它的圆角半径为15px:

border-radius: 15px;

这条语句同时将每个圆角的"水平半径"(horizontal radius)和"垂直半径"(vertical radius)都设置为15px。

border-radius可以同时设置1到4个值。如果设置1个值,表示4个圆角都使用这个值。如果设置两个值,表示左上角和右下角使用第一个值,右上角和左下角使用第二个值。如果设置三个值,表示左上角使用第一个值,右上角和左下角使用第二个值,右下角使用第三个值。如果设置四个值,则依次对应左上角、右上角、右下角、左下角(顺时针顺序)。

border-radius: 15px 5px;

border-radius: 15px 5px 25px;

border-radius: 15px 5px 25px 0px;

(左下角的半径为0,就变成直角了。)

border-radius还可以用斜杠设置第二组值。这时,第一组值表示水平半径,第二组值表示垂直半径。第二组值也可以同时设置1到4个值,应用规则与第一组值相同。

border-radius: 15px 5px / 3px;

border-radius: 15px 5px 25px / 3px 5px;

border-radius: 15px 5px 25px 5px / 3px 5px 10px 15px;

三、单个圆角的设置

除了同时设置四个圆角以外,还可以单独对每个角进行设置。对应四个角,CSS3提供四个单独的属性:

* border-top-left-radius

* border-top-right-radius

* border-bottom-right-radius

* border-bottom-left-radius

这四个属性都可以同时设置1到2个值。如果设置1个值,表示水平半径与垂直半径相等。如果设置2个值,第一个值表示水平半径,第二个值表示垂直半径。

border-top-left-radius: 15px;

border-top-left-radius: 15px 5px;

四、浏览器支持

IE 9、Opera 10.5、Safari 5、Chrome 4和Firefox 4,都支持上述的border-radius属性。早期版本的Safari和Chrome,支持-webkit-border-radius属性,早期版本的Firefox支持-moz-border-radius属性。

目前来看,为了保证兼容性,只需同时设置-moz-border-radius和border-radius即可。

-moz-border-radius: 15px;

border-radius: 15px;

(注意:border-radius必须放在最后声明,否则可能会失效。)

另外,早期版本Firefox的单个圆角的语句,与标准语法略有不同。

* -moz-border-radius-topleft(标准语法:border-top-left-radius)

* -moz-border-radius-topright(标准语法:border-top-right-radius)

* -moz-border-radius-bottomleft(标准语法:border-bottom-left-radius)

* -moz-border-radius-bottomright(标准语法:border-bottom-right-radius)

五、注意事项

虽然各大浏览器都支持border-radius,但是在某些细节上,实现都不一样。当四个角的颜色、宽度、风格(实线框、虚线框等)、单位都相同时,所有浏览器的渲染结果基本一致;一旦四个角的设置不相同,就会出现很大的差异。比如,下面这段代码在不同的浏览器中,渲染结果就相差很大。

border-color: black;

border-style: solid dashed;

border-width: 1px 2px 3px;

border-top-color: red;

border-radius: 5%;

另外,并非所有浏览器,都支持将圆角半径设为一个百分比值。

因此,目前最安全的做法,就是将每个圆角边框的风格和宽度,都设为一样的值,并且避免使用百分比值。

(完)

css 外弧_CSS3圆角详解相关推荐

  1. css样式继承规则详解

    css样式继承规则详解 一.总结 一句话总结:继承而发生样式冲突时,最近祖先获胜(最近原则). 1.继承中哪些样式不会被继承? 多数边框类属性,比如象Padding(补白),Margin(边界),背景 ...

  2. CSS浏览器兼容性问题详解总结

    CSS浏览器兼容性问题详解总结 2009-11-12 11:39 对css缩写的支持问题: 不论是ie 还是ff对css的缩写都有一小点问题 比如 border: 0xp solid #fff;两个浏 ...

  3. css中float详解,CSS浮动属性Float详解?史上最全Float详解

    我们在学习css样式的时候,都知道css是盒概念,并且每一个盒子都是一个元素,下面我们就对CSS浮动属性Float进行详解,让你彻底了解Float. 一:什么是Float浮动? Float浮动是css ...

  4. html 自定义打印模板,HTML+CSS入门 自定义模板详解

    本篇教程介绍了HTML+CSS入门 自定义模板详解,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门.< 首先总的stylecss和大模板都是当初angel_Kitty学姐的,嗯, ...

  5. (图文详细)最通俗易懂的CSS 浮动float属性详解

    (图文详细)最通俗易懂的CSS 浮动float属性详解 声明:本文属于搬砖大神的文章到自己的博客上,原文地址为:https://www.cnblogs.com/iyangyuan/archive/20 ...

  6. 我的学习笔记——CSS背景渐变(Gradients)详解

    我的学习笔记--CSS背景渐变(Gradients)详解 一.线性渐变(Linear Gradients) 1.语法 background-image: linear-gradient(directi ...

  7. html内容折叠,HTML+CSS入门 文本折叠详解

    本篇教程介绍了HTML+CSS入门 文本折叠详解,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门. < 先看效果: 收缩状态 展开状态 源代码: html> 文本折叠测试 ...

  8. css中table标签详解(一)

    css中table标签详解(一) 什么是table标签,以及table标签的组成? 不叨叨,直接上代码 <table><tr><td></td>< ...

  9. CSS中line-height属性详解(CSS之四)

    CSS中line-height属性详解 基本概念 line-height,又称行高,指的是两行文字基线之间的距离,又可以称为这行文字所占的高度. 图中两行基线之间的距离就是行高,基线相关可以查看CSS ...

最新文章

  1. 博为峰Java技术题 ——JavaSE Java Swing组件类的层次
  2. Python 爬虫实例(4)—— 爬取网易新闻
  3. 计算属性|| 计算属性与方法的区别:计算属性是基于它们的依赖进行缓存的 ;方法不存在缓存||侦听器
  4. 最短路算法模板--SPFA
  5. mysql 正则替换 换行,MySQL中使用replace、regexp进行正则表达式替换的用法分析
  6. serialize-and-deserialize-bst
  7. win7 java jna找不到_java – 资源路径中找不到JNA本机支持(/com/sun/jna/linux-arm/libjnidispatch.so)...
  8. UVA12032 The Monkey and the Oiled Bamboo【序列处理】
  9. 表达式求值(栈方法/C++语言描述)(一)
  10. 《现代通信原理学习》(二)随机信号分析
  11. Hexo 博客提交百度、谷歌搜索引擎收录
  12. 岌岌可危 中立之争决定云计算未来
  13. 【比赛游记】NOI2019打铁记
  14. android如何替换contact的来电铃声
  15. java lint_提高你的代码稳定性与可读性-lint工具
  16. NPOI写Excel,Spire.XLS for.NET组件转换Excel为PDF
  17. ios开源框架——UITableView+FDTemplateLayoutCell优化UITableViewCell高度计算
  18. 超牛逼!这款开源性能监控系统真强大~
  19. 汽车标志品牌查询介绍小程序源码
  20. (数学实验)Matlab实现猜数小游戏(增加了错误输入的判断)

热门文章

  1. 大顶堆小顶堆优先队列
  2. java 根据日期获取天数,java获取日期之间天数的方法
  3. 俄罗斯研究人员表示可访问全球所有小米宠物喂食器
  4. [书]x86汇编语言:从实模式到保护模式 -- 第六、七章 编写主引导扇区代码
  5. transferto 文件不存在_文件上传transferTo一行代码的bug
  6. 关于futabaT14SG与futabaR6208SB对频的方法
  7. 《疯狂java讲义》学习(25):正则表达式
  8. 通达信板块监控指标_通达信主力监控系统主图/副图指标公式
  9. centos mysql mysqldump 带主机_centos 下mysqldump备份多个数据库命令[转]
  10. wxpython开发的上传下载功能