欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用CSS實(shí)現(xiàn)弧形卡片的三種方式小結(jié)

  發(fā)布時(shí)間:2023-12-05 12:05:52   作者:XboxYan   我要評(píng)論
在平時(shí)開發(fā)中,有時(shí)候會(huì)碰到“弧形”樣式,主要分為“內(nèi)凹”和“外凸”兩種類型,該如何實(shí)現(xiàn)呢?或者想一下,有哪些 CSS 屬性和“弧形”有關(guān)?下面介紹 3 種方式,一起看看吧

在平時(shí)開發(fā)中,有時(shí)候會(huì)碰到下面這種“弧形”樣式,主要分為“內(nèi)凹”和“外凸”兩種類型,如下

該如何實(shí)現(xiàn)呢?或者想一下,有哪些 CSS 屬性和“弧形”有關(guān)?下面介紹 3 種方式,一起看看吧

一、border-radius

通常情況下,我們用border-radius都是這樣

div{
  border-radius: 20px;
}

這樣表示 4 個(gè)角都是圓角,并且是標(biāo)準(zhǔn)的正圓

其實(shí),border-radius還支持斜杠的寫法,比如

div{
  border-radius: 20px / 10px;
}

這表示,圓角是一個(gè)x半徑為20pxy半徑為10px的橢圓,如下

放大來(lái)看,其實(shí)是這樣的

進(jìn)一步,我們將x半徑設(shè)置成50%,這樣就能得到一個(gè)完整的弧形了

div{
  border-radius: 50% / 20px;
}

效果如下

這樣就得到了“外凸”的弧形了,是不是很容易?

至于“內(nèi)凹”弧形,單純的border-radius表示無(wú)能為力,可以看接下來(lái)的方式

二、偽元素+border-radius

這個(gè)其實(shí)大多數(shù)同學(xué)都能想到的方式,一個(gè)矩形和一個(gè)橢圓組合起來(lái),不就是一個(gè)弧形卡片了嗎?原理非常簡(jiǎn)單

用代碼實(shí)現(xiàn)就是

div{
  position: relative;
}
div::after{
  content: '';
  position: absolute;
  width: 100%;
  height: 20px;
  border-radius: 100%;
  background: inherit; /* 繼承父級(jí)背景 */
  bottom: 0;
  left: 50%;
  transform: translate(-50%,50%);
}

效果如下(虛線表示偽元素的邊緣)

用偽元素的好處是,可以隨意控制弧度的大小位置,這個(gè)是border-radius所不能比的

通過(guò)overflow:hidden裁剪多余部分,可以得到一個(gè)邊緣比較“鋒利”的弧形,如下所示

另外,用偽元素還能實(shí)現(xiàn)“內(nèi)凹”的效果,不過(guò)這需要反過(guò)來(lái)思考,什么意思呢?之前是給偽元素加的背景,現(xiàn)在需要加在偽元素的外圍,這里用box-shadow實(shí)現(xiàn),原理如下

用代碼實(shí)現(xiàn)就是

div{
  background: none;
  overflow: hidden;
}
div::after{
  content: '';
  background: none;
  box-shadow: 0 0 0 9999vh #FFE8A3; /*足夠大的陰影*/
  z-index: -1;
}

效果如下(虛線表示偽元素的邊緣)

三、徑向漸變

提到圓弧,還可以想到徑向漸變,沒(méi)錯(cuò),這里通過(guò)徑向漸變也能輕易實(shí)現(xiàn)弧形卡片效果。

先來(lái)看“外凸”的,其實(shí)思路和偽元素一樣,先拆分,一個(gè)橢圓和一個(gè)矩形,對(duì)應(yīng)的就是徑向漸變(radial-gradient)和線性漸變(linear-gradient),如下

用代碼實(shí)現(xiàn)就是

div{
  background: 
    radial-gradient(closest-side, #9747FF 100%,transparent 0) center bottom/100% 20px no-repeat,
    linear-gradient(#FFE8A3, #FFE8A3) 0 0/100% calc(100% - 10px) no-repeat;
}

效果如下(紫色部分是徑向漸變)

再來(lái)看“內(nèi)凹”的弧形,其實(shí)也和偽元素思路類似,只不過(guò)這里需要繪制一個(gè)足夠大的漸變,從透明到純色的徑向漸變,示意如下

調(diào)整好漸變中心點(diǎn),用代碼實(shí)現(xiàn)就是

div{
  background: radial-gradient(50% 10px at center bottom, transparent 100%,#FFE8A3 0) center bottom;
}

效果如下(全部都是徑向漸變繪制)

當(dāng)然你也可以隨意改變徑向的弧度和大小,來(lái)實(shí)現(xiàn)各種不同的效果。

以上所有demo都可以查看以下在線鏈接

CSS radius layout (codepen.io)

四、優(yōu)缺點(diǎn)總結(jié)

以上就是本文的全部?jī)?nèi)容了,共介紹了 3 種不同的方式,下面總結(jié)一下各自優(yōu)缺點(diǎn)

  • border-radius 支持斜杠語(yǔ)法,可以單獨(dú)控制圓弧的x、y半徑,實(shí)現(xiàn)“外凸”圓弧最簡(jiǎn)單,缺點(diǎn)是圓弧不能自定義弧度,也不能實(shí)現(xiàn)“內(nèi)凹”效果
  • 偽元素最符合常規(guī)思維,可以解決以上問(wèn)題,缺點(diǎn)是需要占用偽元素,略微麻煩
  • 漸變實(shí)現(xiàn)和偽元素拼接思路類似,缺點(diǎn)是語(yǔ)法復(fù)雜,需要熟練掌握漸變語(yǔ)法

大家可以根據(jù)自己的實(shí)際場(chǎng)景自行選擇適當(dāng)?shù)姆绞?,?dāng)然最好都能夠掌握,這樣碰到類似需求時(shí)才能游刃有余,如果你有其他的思路,歡迎留言討論。

以上就是用CSS實(shí)現(xiàn)弧形卡片的三種方式小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于CSS實(shí)現(xiàn)弧形卡片的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用純CSS實(shí)現(xiàn)網(wǎng)頁(yè)閱讀進(jìn)度條

    為了構(gòu)建一個(gè)閱讀進(jìn)度條,即顯示用戶向下滾動(dòng)時(shí)閱讀文章的進(jìn)度,很難不考慮 JavaScript,但是,事實(shí)證明,您也可以使用純 CSS 構(gòu)建閱讀進(jìn)度條,本文小編就給大家介紹如何使
    2023-12-05
  • css實(shí)現(xiàn)元素四周陰影的示例代碼

    CSS的陰影效果為網(wǎng)頁(yè)設(shè)計(jì)增添了許多細(xì)節(jié)和質(zhì)感,本文就來(lái)介紹一下css實(shí)現(xiàn)元素四周陰影的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-04
  • CSS利用浮動(dòng)實(shí)現(xiàn)多個(gè)盒子并排

    CSS 中盒子并列是指在同一行或同一列中,將多個(gè)盒子按照一定的規(guī)則排列在一起的布局方式,本文主要介紹了CSS利用浮動(dòng)實(shí)現(xiàn)多個(gè)盒子并排,感興趣的可以了解一下
    2023-11-29
  • CSS 文字溢出:ellipsis在IE上不起效果的解決

    設(shè)置text-overflow: ellipsis;即可實(shí)現(xiàn)文本溢出省略的效果,本文主要介紹了CSS 文字溢出:ellipsis在IE上不起效果的解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-23
  • CSS取消移動(dòng)端長(zhǎng)按元素背景色的方法

    在開發(fā)微信小程序的時(shí)候,發(fā)現(xiàn)有的元素長(zhǎng)按之后,出現(xiàn)了討厭人的背景色,這就很奇怪,就想把它去掉,本文給大家介紹CSS取消移動(dòng)端長(zhǎng)按元素背景色的方法,感興趣的朋友一起
    2023-11-23
  • CSS實(shí)現(xiàn)空心尖角的示例代碼

    web開發(fā)中,三角形指示箭頭最為常見,本文就來(lái)介紹了CSS實(shí)現(xiàn)空心尖角的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-22
  • 新CSS Math方法中rem()和mod()的使用

    CSS 添加了許多新的數(shù)學(xué)函數(shù)來(lái)補(bǔ)充舊有的函數(shù)(如 calc() 和最近的 clamp() ),本文主要為大家介紹了rem()和mod()的常見用例以及不太常見的用例,感興趣的小伙伴可以跟隨小
    2023-11-22
  • 純CSS實(shí)現(xiàn)炫酷文本時(shí)鐘特效

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)純CSS實(shí)現(xiàn)炫酷的文本時(shí)鐘特效,文中的示例代碼講解詳細(xì),對(duì)我們掌握CSS有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-21
  • 使用CSS實(shí)現(xiàn)多行文本展開收起效果

    這篇文章主要為大家詳細(xì)介紹了如何使用CSS實(shí)現(xiàn)多行文本展開收起效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-21
  • css中flexbox和grid的區(qū)別小結(jié)

    本文我們將深入探討css中flexbox和grid的布局,通過(guò)了解他們的主要差異,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面
    2023-11-20

最新評(píng)論