铿鸟百科网

当前位置:主页 > 百科 > 电脑百科 >

CSS3的border-radius属性规范与圆角制作

CSS3的border-radius属性规范与圆角制作

时间:2025-07-06 来源:铿鸟百科网 收集整理:小编 阅读:
导读:圆角因使人感觉舒适的友好风格而变得无处不在。这个无处不在也让很多前端工程师带来困扰:实现麻烦、兼容困难、性能不佳。而W3C早在 2002年的CSS3草案 中就加入了一个叫 border-radius 的属性,通过它可以直接来定义HTML元素

圆角因使人感觉舒适的友好风格而变得无处不在。这个无处不在也让很多前端工程师带来困扰:实现麻烦、兼容困难、性能不佳。而W3C早在 2002年的CSS3草案 中就加入了一个叫 border-radius 的属性,通过它可以直接来定义HTML元素的圆角制作

CSS3的border-radius规范

最新草案 中其主要信息如下:

属性:

border-top-right-radius

border-bottom-right-radius

border-bottom-right-radius

border-bottom-right-radius

它们分别是定义角形状的四分之一椭圆的两个半径。

第一个值是水平半径。如果第二个值省略,则它等于第一个值,这时这个角就是一个四分之一圆角。如果任意一个值为0,则这个角是矩形,不会是圆的。值不允许是负值。属性:border-radius。它是上面四个属性值的简写。

值:{1,4} [ / {1,4} ]?如果斜线前后的值都存在,那么斜线前的值设置水平半径,且斜线后的值设置垂直半径。如果没有斜线,则水平半径和垂直半径相等。四个值是按照top-left、top-right、 bottom-right、 bottom-left的顺序来设置的。如果bottom-left省略,那么它等于top-right。如果bottom-right省略,那么它等于top-left。如果top-right省略,那么它等于top-left。应用范围:所有的元素,除了table的样式属性border-collapse是collapse时内边半径等于外边半径减去对应边的厚度。当这个结果是负值时,内边半径是0。所以内外边曲线的圆心并不一定是一致的。border-radius也会导致该元素的背景也是圆的,即使border是none。如果 background-clip 是padding-box,则背景(background)会被曲线的内边裁剪。如果是border-box则被外边裁剪。border和padding定义的区域也一样会被曲线裁剪。所有的边框样式(solid、dotted、inset等)都遵照角的曲线。如果设置了border-image,则曲线以外的部分会被裁剪掉。如果角的两个相邻边有不同的宽度,那么这个角将会从宽的边平滑过度到窄的边。其中一条边甚至可以是0。两条相邻边颜色和样式转变的中心点是在一个和两边宽度成正比的角上。比如,两条边宽度相同,这个点就是一个45°的角上,如果一条边是另外一条边的两倍,那么这个点就在一个30°的角上。界定这个转变的线就是连接在内外曲线上的两个点的直线角不允许相互重叠,所以当相邻两个角半径的和大于所在矩形区域的大小时,用户代理(浏览器)比如缩小一个或多个角半径。运算法则如下:f = min(Li/Si),i ∈ {top, right, bottom, left},Ltop = Lbottom = 所在矩形区域的宽,Lleft = Lright = 所在矩形区域的高。如果f < 1,那么所有角半径都乘以f。

浏览器支持

实际中,目前没有任何一款浏览器支持这个属性,只有部分浏览器利用其私有属性支持部分实现:

Firefox对border-radius的支持 :

-moz-border-radius: {1,4} | inherit

-moz-border-radius-bottomleft : | inherit

-moz-border-radius-bottomright : | inherit

-moz-border-radius-topleft : | inherit

-moz-border-radius-topright : | inherit只对每个角设置一个半径,只支持实现四分之一圆角,并不支持椭圆形圆角。具体每个角的命名规则也和W3C不一致,这个比较讨厌。Firefox3圆角已经相当圆滑了,Firefox2比较糟糕,好在它即将终结了。
Safari和Chrome对border-radius的支持 :

-webkit-border-radius: {1,2} | inherit

-webkit-border-bottom-left-radius : {1,2} | inherit

-webkit-border-bottom-right-radius : {1,2} | inherit

-webkit-border-top-left-radius : {1,2} | inherit

-webkit-border-top-right-radius : {1,2} | inherit每个属性有1个或2个值,当有两个值时1个表示水平半径,一个表示垂直半径writing-mode改变也随之而变)。所以,Safari和Chrome中的圆角可以是椭圆角。webkit的实现方法和 W3C的CSS3草案2005年版本 非常一致,和当前的草案最大不同就是简写属性-webkit-border-radius的属性值也只有1个或2个值,意义和前面相同。Chrome中圆角锯齿比较严重,基本上和Firefox2是同一水平,或许是它的webkit版本较低造成的。由于webkit出生于kHTML,所以把 上面属性中的webkit换成khtml即会得到以khtml为核心的浏览器支持的属性了。当相邻的角半径之和大于所在矩形区域的大小时,都会直接设置所有的角半径为0,即圆角失效,而不会像Firefox那样同比率缩小。
Opera尚不支持border-radius,虽然 Opera10 alpha拥有众多的CSS3改进 ,但是依旧看不到对其支持的希望。IE就不用说了,标准的不支持了。从MSDN的 CSS Compatibility and Internet Explorer 中可以看出IE8已经铁定不支持了。

实际应用

最简单的应用就是支持的用圆角,不支持的用方角。比如wordpress2.7的后台、 雅虎口碑UED 的blog和 今天你带伞了吗? 。基础代码如下:

border-width: 1px;

border-style: solid;

-moz-border-radius: 11px;

-kHTML-border-radius: 11px;

-webkit-border-radius: 11px;

border-radius: 11px;

利用VML可以实现从IE5-7的圆角 ,但是貌似IE8不支持VML了。 组件DD_roundies 就是综合以上解决方案的一个具体应用。说实话这样实现出来的圆角也比较粗糙了,我感觉还不如不要。

像VML一样,Canvas也能实现圆角,切除了IE外,所有的主流浏览器都支持。所以就有了两者结合实现的组件 Cornerz 。

如果上面的现实太痛苦,而又非要用圆角的话,要么一个像素一个像素去拼装,比如Chunky Borders;要么就老老实实用图片来实现吧,比如 CSS Mojo 的方式。

相关阅读

  • win10怎么快速关闭屏幕?win10快速关闭屏幕方法

    win10怎么快速关闭屏幕?win10快速关闭屏幕方法

    估计很多用 Win10 的人都会想要快速锁屏来保护个人隐私,但是也有人不知道怎么快速关掉屏幕。其实很简单,你可以直接按 Win + L 快捷键,或者右键点击桌面上的空白地方,然后选择快捷方式就可以啦。下面我们就来详细说一下 Win10 快速

  • 苹果iOS 17.4 Beta版开放侧载功能,但iPad不在列

    苹果iOS 17.4 Beta版开放侧载功能,但iPad不在列

    1月27日消息,苹果公司近日针对欧盟《数字市场法》作出了响应,上线了iOS 17.4 Beta版,向欧盟用户开放了侧载功能。然而,尽管iPadOS与iOS在本质上并无太大差异,但iPad并不支持侧载功能。这意味着,安装第三方应用商店以及从第

  • 极氪20万台新能源汽车里程碑达成

    极氪20万台新能源汽车里程碑达成

    1月8日消息,国内新能源汽车市场再传捷报。极氪汽车今日欣喜公布,经过26个月的不懈努力,其累计交付汽车数量已突破20万台大关。这一成就不仅彰显了极氪在新能源领域的强劲实力,更使其持续刷新着新势力品牌的最快交付纪录,同时保持着全球唯一的新能源

  • Win11系统intel核显控制面板怎么打开-打开intel核显控制面板的方法

    Win11系统intel核显控制面板怎么打开-打开intel核显控制面板的方法

    你晓得吗?有些小伙伴想开自己电脑的intel核显控制面板来看显卡驱动信息。里面可以检查更新驱动。但是,他们不知道怎么开这个面板。如果也想试试看的话,可以看看下面的操作方法哦!打开intel核显控制面板的方法1. 右键桌面空白处,就能打开英特

  • Windows10玩GTA5闪退怎么解决?Windows10玩GTA5闪退解决方法

    Windows10玩GTA5闪退怎么解决?Windows10玩GTA5闪退解决方法

    Windows10玩GTA5闪退怎么解决?GTA5是一款非常知名的游戏,很多的玩家都在畅玩,但是很多的用户们在玩耍这一款游戏的时候,遇到了自己电脑玩GTA5会闪退,这个问题我们怎么解决呢?下面小编为大家带来详细的解决方法介绍,快来看看吧!

  • 极氪第二款MPV车型“CM2E”谍照曝光,或于2024年上半年亮相

    极氪第二款MPV车型“CM2E”谍照曝光,或于2024年上半年亮相

    1月17日消息,近日,知名汽车博主@SugarDesign在社交媒体上发布了极氪品牌旗下第二款MPV车型——内部代号“CM2E”的谍照。据推测,新车可能为小型MPV,有望于2024年上半年与大家正式见面。  从曝光的谍照中可以看出,极氪CM