Css Secrets - Flexible ellipses


Flexible ellipses

顾名思义,灵活的椭圆。
椭圆,是我们今天的主角。
拿它用来做什么呢?😄,对了,拿它做圆角。

border-radius,这是个 简单,实用的属性,我们先对它进行一个小小的回顾.

border-radius :
用来设置边框圆角。当使用一个半径时确定一个圆形;当使用两个半径时确定一个椭圆,这个(椭)圆与边框的交集形成圆角效果。

border-radius.png

即使元素没有边框,圆角也可以用到 background
上面,具体效果受 background-clip
影响。

这是一个简写属性,用来设置
border-top-left-radius
,
border-top-right-radius
,
border-bottom-right-radius

border-bottom-left-radius

和其他简写属性类似,无法为个别值设定为继承,如 border-radius:0 0 inherit inherit,这会覆盖一部分现有定义。在这种情况下只能使用完整属性来指定。

用法

Formal syntax: <length> | <percentage> []{1,4} / <length> | <percentage> []{1,4} []?

半径的第一个语法取值可取1~4个值:
border-radius: radius
border-radius: top-left-and-bottom-right top-right-and-bottom-left
border-radius: top-left top-right-and-bottom-left bottom-right
border-radius: top-left top-right bottom-right bottom-left

半径的第二个语法取值也可取1~4个值 :
border-radius: (first radius values) / radius

border-radius: (first radius values) / top-left-and-bottom-right top-right-and-bottom-left

border-radius: (first radius values) / top-left top-right-and-bottom-left bottom-right

border-radius: (first radius values) / top-left top-right bottom-right bottom-left

border-radius: inherit;

属性值

radius 属性

进入正题,先画个圆压压惊:

<pre>
background: #fb3;
width: 200px;height: 200px;
border-radius: 100px;
</pre>

🌞

border-radius: 100px;

你或许已经发现了,这里设置的值,只要大于等于边的一半就可以了,但到底是为什么呢?

我们看官网的一段描述:

“When the sum of any two adjacent border radii exceeds the size of theborder box, user agents must proportionally reduce the used values of allborder radii until none of them overlap.”
—CSSBackgrounds & Borders Level 3

这段话的意思是,如果相邻的border-radius 值的和超过了border-box 的范围, 那么 用户代理就会相应的减小所有的border-radius 的值,直到它们中的任何一个都不发生重叠。

通常情况下,我们不会给一个元素固定的宽高,因为我们想根据内容去自适应,最终的尺寸我们是不知道的。即使我们要做的是一个静态网站,并且内容是固定的,这样我们可以确定它的尺寸。即使以后某一天,我们想进行一些修改,也可以修改字号来实现同样的尺寸。

在之前的例子中,我们画了一个圆,但是如果宽度变大一些,比如150px,那就变成了胶囊了。

所以,在宽高不一致的情况下,我们可以把角做成一个椭圆。

<pre>
border-radius: 100px / 75px;
</pre>

border-radius 接受 横向和垂直两个方向的参数,可以用 斜线(/)去分开。

<pre>
width:200px;
height:150px;
border-radius: 100px / 75px;
</pre>

这里还有一个明显的问题,我们使用了固定的数值,当内容改变导致容器尺寸改变时,我们希望border-radius也相应变化。

border-radius 接受百分数,不仅仅是具体的值。
所以,我们可以把上面的代码改写为:

<pre>
width:200px;
height:150px;
border-radius:50% / 50% ;
</pre>

因为 分割线左边和 右边的半分数是一样的,所以也能合并起来:

<pre>
border-radius:50% ;
</pre>

现在我们已经知道怎么画一个椭圆了,那我们能不能画出半个椭圆呢 ?

这必须是当然的 😄。

椭圆有两个轴 x,y 轴,四个角。
分别是:

border-top-left-radius
border-top-right-radius
border-bottom-right-radius
border-bottom-left-radius

给它们赋予不同的值就可以实现很多奇妙的图形。

半个矩形

以这个图形为例:
它是水平对称的,所以它的
top-left-radius 和 bottom-left-radius 应该是一样的,

top-right-raidus 和bottom-right-radius 也应该是一样的:

代码:

<pre>
width: 8em;
height: 8em;
background-color: #fb3;
border-top-left-radius: 100% 50%;
border-top-right-radius: 0px 50%;
border-bottom-right-radius: 0px 50%;
border-bottom-left-radius: 100% 50%;
</pre>

可以简写为:

<pre>
border-radius: 100% 0 0 100% / 50%;
</pre>

知道这个,就让我们愉快的玩耍吧:

我们可以这样:

气泡

<pre>
border-radius: 100% 100% 100% 0 / 100% 100% 100% 0;
</pre>
可以这样:

切糕

<pre>
border-radius: 100% 0 0 0;
</pre>

这样:


芒果

<pre>
border-radius: 100% 0 / 50% 0;
</pre>
也可以这样:

蝴蝶

或者也可以放大招:

糖果按钮

这是设计师 simurai设计的,很好玩吧,为了方便访问,我把它拿了下来,戳这里查看
这是他在css conf 上的一个演讲,Styling with STRINGS ,挺有趣的,有兴趣的同学可以看一下。


结尾

//每次结尾都不知道说什么 = =
border-radius 还有很多有趣的用法,就不多说了。
最后,感谢阅读,欢迎交流,文中若有表述不准确的地方,也欢迎大力指正,就先到这,本篇结束。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容