CSS – border-radius (Rounded Corners)

前言

之前的文章 CSS – W3Schools 学习笔记 (3), 这篇独立出来写, 作为整理.

 

参考:

Youtube – Advanced CSS Border-Radius Tutorial

W3C – Rounded Corners

 

正文

以长方形作为例子比较容易理解.

normal use

border-top-left-radius: 40px 30px;

设定 top-left (左上角)变圆角. horizontal 40px, vertical 30px. 效果:

one side over

如果其中一边写 over 会怎么样?

border-top-left-radius: 1000px 50px;

 怪怪的形状

both side over

如果 2 变一样 over 呢?

border-top-left-radius: 1000px 1000px;

好像挺聪明的, 尽然用了其中 1 边的极限然后 apply 到了另一边. 

它的原理应该是这样.

 

所以有一个黑科技, stackoverflow – 怎样画出这种圆角?

它的难点是要用到 height 的 50% apply 到 vertical 和 holizontal.

border-radius: 50% 的效果是 vertical use height 50%, holizontal use width 50%, 不是正确的效果.

答主给了一个很炫的答案. 

em 是依据当前的 font-size 决定的. 如果你没有设置它一般上 16px. 

50 x 16 = 800px. 相等于设置了 800px 800px

通常这个 size 会导致 both side over. 依据它的画法, 出来的结果真的会是正确的. 但其实只要设置相同的值, 然后非常大就可以做到这个效果了. 比如 10000px 10000px 效果是一样的.

use percentage

border-top-left-radius: 50% 50%;

shorthand 写法

border-top-left-radius: 50%; /* 等价于 50% 50% */

border-radius 多个一起的写法

border-radius: 10px 20px 30px 40px;
/* 等价于 */
border-top-left-radius: 10px 10px;
border-top-right-radius: 20px 20px;
border-bottom-right-radius: 30px 30px;
border-bottom-left-radius: 40px 40px;

再一个例子

border-radius: 10px 30px;
/* 等价于 */
border-radius: 10px 30px 10px 30px;

再一个例子

border-radius: 20px / 30px;
/* 等价于 */
border-top-left-radius: 20px 30px;
border-top-right-radius: 20px 30px;
border-bottom-right-radius: 20px 30px;
border-bottom-left-radius: 20px 30px;

在一个例子. 

border-radius: 20px 30px 40px 50px / 30px 40px 50px 60px;
/* 等价于 */
border-top-left-radius: 20px 30px;
border-top-right-radius: 30px 40px;
border-bottom-right-radius: 40px 50px;
border-bottom-left-radius: 50px 60px;

 

Online tool for create radius

地址: https://9elements.github.io/fancy-border-radius/full-control.html#33.39.12.33-70.74.84.73-.

 

posted @ 2022-02-24 21:58  兴杰  阅读(180)  评论(0编辑  收藏  举报