亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
矩形與圓角按鈕
梯形與平行四邊形
平行四邊形
梯形
切角-- 純色背景與漸變色背景
利用clip-path 實(shí)現(xiàn)漸層背景的切角圖形
箭頭按鈕
內(nèi)切圓角
借助 mask 實(shí)現(xiàn)漸變的內(nèi)切圓角按鈕
圓角不規(guī)則矩形
外圓角按鈕
總結(jié)一下
最後
首頁 web前端 css教學(xué) 巧用CSS實(shí)現(xiàn)各種奇形怪狀按鈕(附代碼)

巧用CSS實(shí)現(xiàn)各種奇形怪狀按鈕(附代碼)

Jul 19, 2022 am 11:28 AM
css javascript css3 前端

這篇文章帶大家看看怎麼使用 CSS 輕鬆實(shí)現(xiàn)高頻出現(xiàn)的各類奇形怪狀按鈕,希望對大家有幫助!

巧用CSS實(shí)現(xiàn)各種奇形怪狀按鈕(附代碼)

怎麼樣用 CSS 實(shí)作一個(gè)內(nèi)切角按鈕呢、怎麼樣實(shí)作一個(gè)箭頭的按鈕呢?

本文是基於一些高頻出現(xiàn)在設(shè)計(jì)稿中的,使用 CSS 實(shí)現(xiàn)稍微有點(diǎn)難度和技巧性的按鈕,講解使用 CSS 如何盡可能的實(shí)現(xiàn)它們。 【推薦學(xué)習(xí):css影片教學(xué)

先讓我們來看看這些常會(huì)出現(xiàn)的按鈕形狀:

矩形與圓角按鈕

正常而言,我們遇到的按鈕就這兩種-- 矩形和圓角:

它們非常的簡單,寬高和圓角和背景色。

????<div class=&#39;btn rect&#39;>rect</div>
????<div class=&#39;btn circle&#39;>circle</div>
.btn?{
????margin:?8px?auto;
????flex-shrink:?0;
????width:?160px;
????height:?64px;
}
.rect?{
????background:?#f6ed8d;
}

.circle?{
????border-radius:?64px;
????background:?#7de3c8;
}

梯形與平行四邊形

接下來,基於矩形的變形,常常會(huì)出現(xiàn)梯形與平行四邊形的按鈕。

實(shí)作它們主要使用transform 即可,但要注意一點(diǎn),使用了transform 之後,標(biāo)籤內(nèi)的文字也會(huì)同樣的變形,所以,我們通常使用元素的偽元素去實(shí)現(xiàn)造型,這樣可以做到不影響按鈕內(nèi)的文字。

平行四邊形

使用transform: skewX() 即可,注意上述說的,利用元素的偽元素實(shí)現(xiàn)平行四邊形,做到不影響內(nèi)部的文字。

<div class=&#39;btn parallelogram&#39;>Parallelogram</div>
.parallelogram?{
????position:?relative;
????width:?160px;
????height:?64px;

????&::before?{
????????content:?"";
????????position:?absolute;
????????top:?0;
????????left:?0;
????????bottom:?0;
????????right:?0;
????????background:?#03f463;
????????transform:?skewX(15deg);
????}
}

如果不想使用偽元素,除了 transform: skewX(),平行四邊形使用漸層也是可以實(shí)現(xiàn)的。

大概就是這樣:

{
????background:?linear-gradient(45deg,?transparent?22%,?#04e6fb?22%,?#9006fb?78%,?transparent?0);
}

梯形

梯形比平行四邊形稍微複雜一點(diǎn),它多藉助了perspective,其實(shí)是利用了一定的3D 變換。原理就是一個(gè)長方形,繞著X 軸旋轉(zhuǎn),像是這樣:

使用?perspectivetransform: rotateX()即可,當(dāng)然,它們可以合在一起寫:

<div class=&#39;btn trapezoid&#39;>Trapezoid</div>
.parallelogram?{
????position:?relative;
????width:?160px;
????height:?64px;

????&::after?{
??????????content:"";
??????????position:?absolute;
??????????top:?0;?right:?0;?bottom:?0;?left:?0;
??????????transform:?perspective(40px)?rotateX(10deg);
??????????transform-origin:?bottom;
??????????background:?#ff9800;
????}
}

切角-- 純色背景與漸變色背景

接下來是切角圖形,最常見的方法主要是藉助漸變linear-gradient 實(shí)現(xiàn),來看這樣一個(gè)圖形

<div></div>
.notching?{
????background:?linear-gradient(135deg,?transparent?10px,?#ff1493?0);
????background-repeat:?no-repeat;
}

結(jié)果如下,

基於此,我們只需要利用多重漸變,實(shí)現(xiàn)4 個(gè)這樣的圖形即可,並且,利用background-position 定位到四個(gè)角:

<div class="notching">notching</div>
.notching?{
????background:?
????????linear-gradient(135deg,?transparent?10px,?#ff1493?0)?top?left,
????????linear-gradient(-135deg,?transparent?10px,?#ff1493?0)?top?right,
????????linear-gradient(-45deg,?transparent?10px,?#ff1493?0)?bottom?right,
????????linear-gradient(45deg,?transparent?10px,?#ff1493?0)?bottom?left;
????background-size:?50%?50%;
????background-repeat:?no-repeat;
}

利用clip-path 實(shí)現(xiàn)漸層背景的切角圖形

當(dāng)然,這個(gè)技巧有個(gè)問題,當(dāng)要求底色是漸層色的時(shí)候,這個(gè)方法就比較笨拙了。

好在,我們還有另一種方式,借助clip-path 切出一個(gè)切角圖形,這樣,背景色可以是任意定制的顏色,無論是漸變還是純色都不在話下:

<div class="clip-notching">notching</div>
.clip-notching?{
????background:?linear-gradient(
????????45deg,
????????#f9d9e7,
????????#ff1493
????);
????clip-path:?polygon(
????????15px?0,
????????calc(100%?-?15px)?0,
????????100%?15px,
????????100%?calc(100%?-?15px),
????????calc(100%?-?15px)?100%,
????????15px?100%,
????????0?calc(100%?-?15px),
????????0?15px
????);
}

簡單的實(shí)作一個(gè)漸變背景,接著核心就是,在漸層矩形圖形的基礎(chǔ)上,利用clip-path: polygon() 切出我們想要的形狀(一個(gè)8 邊形):

當(dāng)然,上述程式碼非常容易聯(lián)想到下述這種6 邊形,使用漸層和clip-path 都可以輕鬆得到:

箭頭按鈕

接下來是箭頭按鈕,仔細(xì)觀察上面的切角按鈕,當(dāng)兩邊的角被切掉的夠多的時(shí)候,就變成了一個(gè)箭頭的形狀。

我們可以利用兩重漸變,實(shí)作一個(gè)單箭頭按鈕:

<div class="arrow">arrow</div>
&.arrow?{
????background:?linear-gradient(
????????????????-135deg,
????????????????transparent?22px,
????????????????#04e6fb?22px,
????????????????#65ff9a?100%
????????????)
????????????top?right,
????????linear-gradient(
????????????????-45deg,
????????????????transparent?22px,
????????????????#04e6fb?22px,
????????????????#65ff9a?100%
????????????)
????????????bottom?right;
????background-size:?100%?50%;
????background-repeat:?no-repeat;
}

一個(gè)箭頭就出來了:

它是由上下兩個(gè)漸變塊組合得到的,換個(gè)顏色立馬就能明白:

那如果是這樣一個(gè)箭頭造型呢?

一樣的,它也是兩個(gè)漸變的疊加,漸變的顏色是透明 --> 顏色A --> 顏色B --> 透明。當(dāng)然,同樣在這里也可以使用 clip-path

這里給出 clip-path 的解法:

{
????background:?linear-gradient(45deg,?#04e6fb,?#65ff9a);
????clip-path:?polygon(
????????0?0,
????????30px?50%,
????????0?100%,
????????calc(100%?-?30px)?100%,
????????100%?50%,
????????calc(100%?-?30px)?0
????);
}

內(nèi)切圓角

下面這個(gè)按鈕形狀,多出現(xiàn)于優(yōu)惠券,最常見的解法,也是使用漸變,當(dāng)然,與切角不同,這里使用的徑向漸變。

首先,看這樣一個(gè)簡單的例子:

<div></div>
div?{
????background-image:?radial-gradient(circle?at?100%?100%,?transparent?0,?transparent?12px,?#2179f5?12px);
}

可以得到這樣一個(gè)圖形:

所以,只需控制下 background-size,在 4 個(gè)角實(shí)現(xiàn) 4 個(gè)這樣的圖形即可:

<div class="inset-circle">inset-circle</div>
&.inset-circle?{
????background-size:?70%?70%;
????background-image:?radial-gradient(
????????????circle?at?100%?100%,
????????????transparent?0,
????????????transparent?12px,
????????????#2179f5?13px
????????),
????????radial-gradient(
????????????circle?at?0?0,
????????????transparent?0,
????????????transparent?12px,
????????????#2179f5?13px
????????),
????????radial-gradient(
????????????circle?at?100%?0,
????????????transparent?0,
????????????transparent?12px,
????????????#2179f5?13px
????????),
????????radial-gradient(
????????????circle?at?0?100%,
????????????transparent?0,
????????????transparent?12px,
????????????#2179f5?13px
????????);
????background-repeat:?no-repeat;
????background-position:?right?bottom,?left?top,?right?top,?left?bottom;
}

借助 mask 實(shí)現(xiàn)漸變的內(nèi)切圓角按鈕

如果背景色要求漸變怎么辦呢?

假設(shè)我們有一張矩形背景圖案,我們只需要使用 mask 實(shí)現(xiàn)一層遮罩,利用 mask 的特性,把 4 個(gè)角給遮住即可。

mask 的代碼和上述的圓角切角代碼非常類似,簡單改造下即可得到漸變的內(nèi)切圓角按鈕:

<div class="mask-inset-circle">inset-circle</div>
.mask-inset-circle?{
????background:?linear-gradient(45deg,?#2179f5,?#e91e63);
????mask:?radial-gradient(
????????????circle?at?100%?100%,
????????????transparent?0,
????????????transparent?12px,
????????????#2179f5?13px
????????),
????????radial-gradient(
????????????circle?at?0?0,
????????????transparent?0,
????????????transparent?12px,
????????????#2179f5?13px
????????),
????????radial-gradient(
????????????circle?at?100%?0,
????????????transparent?0,
????????????transparent?12px,
????????????#2179f5?13px
????????),
????????radial-gradient(
????????????circle?at?0?100%,
????????????transparent?0,
????????????transparent?12px,
????????????#2179f5?13px
????????);
????mask-repeat:?no-repeat;
????mask-position:?right?bottom,?left?top,?right?top,?left?bottom;
????mask-size:?70%?70%;
}

這樣,我們就得到了這樣一個(gè)圖形:

當(dāng)然,讀懂上述代碼,你需要首先弄清楚 CSS mask 屬性的原理,如果你對它還有些陌生,可以看看我的這篇文章:

《奇妙的 CSS MASK》:https://github.com/chokcoco/iCSS/issues/80

圓角不規(guī)則矩形

下面這個(gè)按鈕形狀,也是最近被問到最多的,先來看看它的造型:

不太好給它起名,一側(cè)是規(guī)則的帶圓角直角,另外一側(cè)則是帶圓角的斜邊。

其實(shí),它就是由圓角矩形 + 圓角平行四邊形組成

所以,借助兩個(gè)偽元素,可以輕松的實(shí)現(xiàn)它們:

<div class="skew">Skew</div>
.skew?{
????position:?relative;
????width:?120px;

????&::after?{
????????content:?"";
????????position:?absolute;
????????top:?0;
????????left:?0;
????????right:?0;
????????bottom:?0;
????????border-radius:?10px;
????????background:?orange;
????????transform:?skewX(15deg);
????}
????&::before?{
????????content:?"";
????????position:?absolute;
????????top:?0;
????????right:?-13px;
????????width:?100px;
????????height:?64px;
????????border-radius:?10px;
????????background:?orange;
????}
}

由于一個(gè)偽元素疊加在另外一個(gè)之上,所以對其中一個(gè)使用漸變,一個(gè)則是純色,其顏色是可以完美銜接在一起的,這樣就實(shí)現(xiàn)了漸變色的該圖形:

外圓角按鈕

接下來這個(gè)按鈕形狀,常見于 Tab 頁上,類似于 Chrome 的分頁:

我們對這個(gè)按鈕形狀拆解一下,這里其實(shí)是 3 塊的疊加:

只需要想清楚如何實(shí)現(xiàn)兩側(cè)的弧形三角即可。這里還是借助了漸變 -- 徑向漸變,其實(shí)他是這樣,如下圖所示,我們只需要把黑色部分替換為透明即可,使用兩個(gè)偽元素即可:

代碼如下:

<div class="outside-circle">outside-circle</div>
.outside-circle?{
????position:?relative;
????background:?#e91e63;
????border-radius:?10px?10px?0?0;

????&::before?{
????????content:?"";
????????position:?absolute;
????????width:?20px;
????????height:?20px;
????????left:?-20px;
????????bottom:?0;
????????background:?#000;
????????background:radial-gradient(circle?at?0?0,?transparent?20px,?#e91e63?21px);
????}
????&::after?{
????????content:?"";
????????position:?absolute;
????????width:?20px;
????????height:?20px;
????????right:?-20px;
????????bottom:?0;
????????background:?#000;
????????background:radial-gradient(circle?at?100%?0,?transparent?20px,?#e91e63?21px);
????}
}

即可得到:

上述的所有圖形的完整程式碼,你可以在這裡看到:CodePen Demo -- CSS Various Button Shapes | CSS 各種造型按鈕

https://codepen.io/Chokcoco/pen/QWMoBGO?editors=1100

總結(jié)一下

基於上述的實(shí)現(xiàn),我們不難發(fā)現(xiàn),一些稍微特殊的按鈕,無非都透過拼接、障眼法、遮罩等方式實(shí)現(xiàn)。

而其中:

  • 漸層(線性漸層linear-gradient、徑向漸層radial-gradient、多重漸層)
  • 遮罩mask
  • 裁切clip-path
  • 變形transform

發(fā)揮了重要的作用,熟練使用它們,我們對於這些圖形就可以信手拈來,基於它們的變形也能從容面對。

上述的圖形,再配合 filter: drop-shadow(),基本上都能實(shí)現(xiàn)不規(guī)則陰影。

再者,更為複雜的圖形,如下所示:

#還是切圖吧,CSS 雖好,實(shí)際使用中也需要考慮投入產(chǎn)出比。

最後

本文的目的更多的是當(dāng)一個(gè)簡單的手冊,實(shí)際中實(shí)現(xiàn)上述的效果可能有更好的方法,本文沒有一一枚舉,也歡迎補(bǔ)充指正。

好了,這篇文章到此結(jié)束,希望這篇文章對你有幫助:)

原文網(wǎng)址:https://segmentfault.com/a/1190000041044028

作者:chokcoco

(學(xué)習(xí)影片分享:web前端入門

以上是巧用CSS實(shí)現(xiàn)各種奇形怪狀按鈕(附代碼)的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
如何用PHP搭建社交分享功能 PHP分享接口集成實(shí)戰(zhàn) 如何用PHP搭建社交分享功能 PHP分享接口集成實(shí)戰(zhàn) Jul 25, 2025 pm 08:51 PM

在PHP中搭建社交分享功能的核心方法是通過動(dòng)態(tài)生成符合各平臺(tái)要求的分享鏈接。 1.首先獲取當(dāng)前頁面或指定的URL及文章信息;2.使用urlencode對參數(shù)進(jìn)行編碼;3.根據(jù)各平臺(tái)協(xié)議拼接生成分享鏈接;4.在前端展示鏈接供用戶點(diǎn)擊分享;5.動(dòng)態(tài)生成頁面OG標(biāo)籤優(yōu)化分享內(nèi)容展示;6.務(wù)必對用戶輸入進(jìn)行轉(zhuǎn)義以防止XSS攻擊。該方法無需複雜認(rèn)證,維護(hù)成本低,適用於大多數(shù)內(nèi)容分享需求。

PHP打造博客評論系統(tǒng)變現(xiàn) PHP評論審核與防刷策略 PHP打造博客評論系統(tǒng)變現(xiàn) PHP評論審核與防刷策略 Jul 25, 2025 pm 08:27 PM

1.評論系統(tǒng)商業(yè)價(jià)值最大化需結(jié)合原生廣告精準(zhǔn)投放、用戶付費(fèi)增值服務(wù)(如上傳圖片、評論置頂)、基於評論質(zhì)量的影響力激勵(lì)機(jī)制及合規(guī)匿名數(shù)據(jù)洞察變現(xiàn);2.審核策略應(yīng)採用前置審核 動(dòng)態(tài)關(guān)鍵詞過濾 用戶舉報(bào)機(jī)制組合,輔以評論質(zhì)量評分實(shí)現(xiàn)內(nèi)容分級曝光;3.防刷需構(gòu)建多層防禦:reCAPTCHAv3無感驗(yàn)證、Honeypot蜜罐字段識(shí)別機(jī)器人、IP與時(shí)間戳頻率限制阻止灌水、內(nèi)容模式識(shí)別標(biāo)記可疑評論,持續(xù)迭代應(yīng)對攻擊。

什麼是常見的CSS瀏覽器不一致? 什麼是常見的CSS瀏覽器不一致? Jul 26, 2025 am 07:04 AM

不同瀏覽器對CSS解析存在差異,導(dǎo)致顯示效果不一致,主要包括默認(rèn)樣式差異、盒模型計(jì)算方式、Flexbox和Grid佈局支持程度及某些CSS屬性行為不一致。 1.默認(rèn)樣式處理不一致,解決方法是使用CSSReset或Normalize.css統(tǒng)一初始樣式;2.舊版IE的盒模型計(jì)算方式不同,建議統(tǒng)一使用box-sizing:border-box;3.Flexbox和Grid在邊緣情況或舊版本中表現(xiàn)有差異,應(yīng)多測試並使用Autoprefixer;4.某些CSS屬性行為不一致,需查閱CanIuse並提供降級

如何用Mac搭建PHP Nginx環(huán)境 MacOS配置Nginx與PHP服務(wù)組合 如何用Mac搭建PHP Nginx環(huán)境 MacOS配置Nginx與PHP服務(wù)組合 Jul 25, 2025 pm 08:24 PM

Homebrew在Mac環(huán)境搭建中的核心作用是簡化軟件安裝與管理。 1.Homebrew自動(dòng)處理依賴關(guān)係,將復(fù)雜的編譯安裝流程封裝為簡單命令;2.提供統(tǒng)一的軟件包生態(tài),確保軟件安裝位置與配置標(biāo)準(zhǔn)化;3.集成服務(wù)管理功能,通過brewservices可便捷啟動(dòng)、停止服務(wù);4.便於軟件升級與維護(hù),提升系統(tǒng)安全性與功能性。

描述'垂直align”屬性及其典型用例 描述'垂直align”屬性及其典型用例 Jul 26, 2025 am 07:35 AM

1.ItAdjustSelementsLikeImagesRikeImagesOrformInputswithIntExtLineSustLineSlineSlineSlineSlikeLikeLikeBaseline,中間,Super,Super,Super和Sub.2.intablebecells,ItControlScontentalStalteNtalmscontentalMedwithThtop,Middle,Middle,Midder,Midder,經(jīng)常

什麼是口音色的物業(yè)? 什麼是口音色的物業(yè)? Jul 26, 2025 am 09:25 AM

accent-color是CSS中用於自定義復(fù)選框、單選按鈕和滑塊等表單元素高亮顏色的屬性;1.它直接改變表單控件選中狀態(tài)的默認(rèn)顏色,如將復(fù)選框的藍(lán)色勾選標(biāo)記改為紅色;2.支持的元素包括type="checkbox"、type="radio"和type="range"的輸入框;3.使用accent-color可避免複雜的自定義樣式和額外DOM結(jié)構(gòu),保持原生可訪問性;4.現(xiàn)代瀏覽器普遍支持,舊瀏覽器需降級處理;5.設(shè)置accent-col

如何將SCSS編譯到CSS? 如何將SCSS編譯到CSS? Jul 27, 2025 am 01:58 AM

installdartsassvianpmafterinstallingnode.jsusingnpminstall-gsass.2.compilescsstocssssusingthecommandSassInput.scsssoutput.css.3。 useass - watchinput.scssoutput.csstoauto-compileonsave.4.watchentirefolderswithsass-watchscss:css.5.usepartialswith_prefixfo

如何更改CSS中的文本顏色? 如何更改CSS中的文本顏色? Jul 27, 2025 am 04:25 AM

要改變CSS中文本顏色,需使用color屬性;1.使用color屬性可設(shè)置文本前景色,支持顏色名稱(如red)、十六進(jìn)制碼(如#ff0000)、RGB值(如rgb(255,0,0))、HSL值(如hsl(0,100%,50%))以及帶透明度的RGBA或HSLA(如rgba(255,0,0,0.5));2.可將顏色應(yīng)用於包含文本的任何元素,如h1至h6標(biāo)題、段落p、鏈接a(需注意a:link、a:visited、a:hover、a:active不同狀態(tài)的顏色設(shè)置)、按鈕、div、span等;3.最

See all articles