在平时开发中,有时候会碰到下面这种弧形样式,主要分为内凹和外凸两种类型,如下 该如何实现呢?或者想一下,有哪些 CSS 属性和弧形有关?下面介绍 3 种方式,一起看看吧 一、
在平时开发中,有时候会碰到下面这种“弧形”样式,主要分为“内凹”和“外凸”两种类型,如下 该如何实现呢?或者想一下,有哪些 CSS 属性和“弧形”有关?下面介绍 3 种方式,一起看看吧 一、border-radius通常情况下,我们用border-radius都是这样
这样表示 4 个角都是圆角,并且是标准的正圆 其实,border-radius还支持斜杠的写法,比如
这表示,圆角是一个x半径为20px,y半径为10px的椭圆,如下 放大来看,其实是这样的 进一步,我们将x半径设置成50%,这样就能得到一个完整的弧形了
效果如下 这样就得到了“外凸”的弧形了,是不是很容易? 至于“内凹”弧形,单纯的border-radius表示无能为力,可以看接下来的方式 二、伪元素+border-radius这个其实大多数同学都能想到的方式,一个矩形和一个椭圆组合起来,不就是一个弧形卡片了吗?原理非常简单 用代码实现就是
效果如下(虚线表示伪元素的边缘) 用伪元素的好处是,可以随意控制弧度的大小和位置,这个是border-radius所不能比的 通过overflow:hidden裁剪多余部分,可以得到一个边缘比较“锋利”的弧形,如下所示 另外,用伪元素还能实现“内凹”的效果,不过这需要反过来思考,什么意思呢?之前是给伪元素加的背景,现在需要加在伪元素的外围,这里用box-shadow实现,原理如下 用代码实现就是
效果如下(虚线表示伪元素的边缘) 三、径向渐变提到圆弧,还可以想到径向渐变,没错,这里通过径向渐变也能轻易实现弧形卡片效果。 先来看“外凸”的,其实思路和伪元素一样,先拆分,一个椭圆和一个矩形,对应的就是径向渐变(radial-gradient)和线性渐变(linear-gradient),如下 用代码实现就是
效果如下(紫色部分是径向渐变) 再来看“内凹”的弧形,其实也和伪元素思路类似,只不过这里需要绘制一个足够大的渐变,从透明到纯色的径向渐变,示意如下 调整好渐变中心点,用代码实现就是
效果如下(全部都是径向渐变绘制) 当然你也可以随意改变径向的弧度和大小,来实现各种不同的效果。 以上所有demo都可以查看以下在线链接 CSS radius layout (codepen.io) 四、优缺点总结以上就是本文的全部内容了,共介绍了 3 种不同的方式,下面总结一下各自优缺点
大家可以根据自己的实际场景自行选择适当的方式,当然最好都能够掌握,这样碰到类似需求时才能游刃有余,如果你有其他的思路,欢迎留言讨论。 |
2021-04-14
2023-10-11
2021-04-29
2023-11-01
2018-01-07