纯CSS3实现圆角效果(含IE兼容解决方法)


Posted in HTML / CSS onMay 07, 2014

如今,这种利用CSS制作圆角的技术已经得到了大多数主流浏览器的支持,包括Safari,谷歌浏览器,IE,Opera和火狐浏览器。下面让我们来看看border-radius的语法,解释,以及IE是如何支持它的。

纯CSS3实现圆角效果(含IE兼容解决方法)

语法和说明

在CSS3中用来生成圆角效果的属性是border-radius.这个属性跟大家熟知的width等属性的用法相似:

复制代码
代码如下:

.roundElement {
border-radius: 10px;
}

上面的这句代码的作用是设置一个元素的四个角的弧度半径值都为10px。你也可以对每个角单独指定:
复制代码
代码如下:

.pearElement {
border-top-left-radius: 7px;
border-top-right-radius: 5px;
border-bottom-right-radius: 6px;
border-bottom-left-radius: 8px;
}

如果你觉得上面的写法太复杂,可以使用下面border-radius简写的方法:
复制代码
代码如下:

.oddRoundElement {
border-radius: 12px 5px 12px 5px;
/* or */
border-radius: 12px 5px;
}

四个值分别代表的是top-left, top-right, bottom-right, bottom-left四个角。

各浏览器对border-radius的支持

因为这种圆角技术是CSS3里出现的,老式浏览器或较早期的浏览器中用到这个属性时需要在CSS里添加浏览器引擎前缀(vendor prefixes)。会是{prefix}-border-radius这样一个样子,而具体各种浏览器引擎前缀是下面这样的写法:

复制代码
代码如下:

-moz-border-radius: 20px;
-webkit-border-radius: 20px;
-o-border-radius: 20px;</p> <p>/* 火狐浏览器 */
-moz-border-radius-topleft:15px; /* top left corner */
-moz-border-radius-topright:50px; /* top right corner */
-moz-border-radius-bottomleft:15px; /* bottom left corner */
-moz-border-radius-bottomright:50px; /* bottom right corner */
-moz-border-radius:10px 15px 15px 10px; /* shorthand topleft topright bottomright bottomleft */</p> <p>/* webkit引擎的浏览器 */
-webkit-border-top-left-radius:15px; /* top left corner */
-webkit-border-top-right-radius:50px; /* top right corner */
-webkit-border-bottom-left-radius:15px; /* bottom left corner */
-webkit-border-bottom-right-radius:50px; /* bottom right corner */

基本上,你需要对每种浏览器引擎做各自的声明,加上这些讨厌的稍微不同的代码来保证完全支持border-radius。但是,如果你使用的是最新版的浏览器,包括火狐、谷歌、IE等,你不需要使用这些前缀,因为这个技术已经很成熟,在各种最新版的浏览器里已经受到了普遍支持。

让IE支持border-radius

直到IE9才有对border-radius属性的支持,相信很多Web开发人员和Web应用设计人员都很沮丧。在IE9里,最重要的一个点是使用edge META 标记:

复制代码
代码如下:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<style>
border-top-right-radius: 7px;
border-top-left-radius: 7px;
border-bottom-right-radius: 2px;
border-bottom-left-radius: 2px;
</style>

如果你的IE比较老,不支持border-radius,有很多其它的技术可以弥补这个缺陷,我遇到过的最好的一个解决方法是使用一个很小的JavaScript程序包,叫做CurvyCorners。这个CurvyCorners用javaScript动态的生成很多div标记,用这些div标记来绘出圆角效果,甚至支持消除锯齿功能。

CurvyCorners的用法很简单。第一步是在页面中引入CurvyCorners.js脚本:

复制代码
代码如下:

<!-- SIMPLY INCLUDE THE JS FILE! -->
<script type="text/javascript" src="curvy.corners.trunk.js">
</script>

CurvyCorners会在DOM元素里寻找具有border-radius属性的元素,然后依次给它们制作出圆角效果。不需要辅助图片。你甚至可以设置指定元素的弧度半径:
复制代码
代码如下:

var settings = {
tl: { radius: 12 },
tr: { radius: 12 },
bl: { radius: 12 },
br: { radius: 12 },
antiAlias: true
};
/* moooo */
$$('.round').each(function(rd) {
curvyCorners(settings,rd);
});

我强烈建议你应该指定需要使用圆角的元素,因为让脚本搜索整个页面来寻找需要圆角处理的元素是一个很耗CPU的过程,而且这个过程是每个页面加载时都会执行。

基本的所有浏览器都支持CSSborder-radius属性,包括IE,火狐,Safari,谷歌浏览器和Opera。这个小小的功能能让你的页面表现出完全别样的效果。

HTML / CSS 相关文章推荐
简单掌握CSS3将文字描边及填充文字颜色的方法
Mar 07 HTML / CSS
css3背景图片透明叠加属性cross-fade简介及用法实例
Jan 08 HTML / CSS
CSS3 2D模拟实现摩天轮旋转效果
Nov 16 HTML / CSS
HTML5 Web 存储详解
Sep 16 HTML / CSS
HTML5拖放功能_动力节点Java学院整理
Jul 13 HTML / CSS
Html5移动端获奖无缝滚动动画实现示例
Jun 25 HTML / CSS
使用html2canvas实现浏览器截图的示例代码
Jan 26 HTML / CSS
html5配合css3实现带提示文字的输入框(摆脱js)
Mar 08 HTML / CSS
html5使用canvas画空心圆与实心圆
Dec 15 HTML / CSS
html5的pushstate以及监听浏览器返回事件的实现
Aug 11 HTML / CSS
纯CSS3实现div按照顺序出入效果
Jul 15 HTML / CSS
html原生table实现合并单元格以及合并表头的示例代码
May 07 HTML / CSS
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
May 07 #HTML / CSS
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
May 07 #HTML / CSS
纯CSS绘制漂亮的圆形图案效果
May 07 #HTML / CSS
css3制作彩色边线3d立体按钮的示例(css3按钮)
May 06 #HTML / CSS
css3实现顶部社会化分享按钮示例
May 06 #HTML / CSS
css3圆角边框和边框阴影示例
May 05 #HTML / CSS
CSS3 Columns分列式布局方法简介
May 03 #HTML / CSS
You might like
PHP实现的功能是显示8条基色色带
2006/10/09 PHP
如何使用脚本模仿登陆过程
2006/11/22 PHP
一个PHP分页类的代码
2011/05/18 PHP
php文件夹的创建与删除方法
2015/01/24 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
php弹出提示框的是实例写法
2019/09/26 PHP
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
详解js私有作用域中创建特权方法
2016/01/25 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
python中split方法用法分析
2015/04/17 Python
Python处理文本换行符实例代码
2018/02/03 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
西班牙购买隐形眼镜、眼镜和太阳镜网站:Lentiamo.es
2020/06/11 全球购物
奶茶店创业计划书范文
2014/01/17 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
安全标语口号
2014/06/09 职场文书
领导班子四风对照检查材料
2014/09/23 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫