vocus logo

方格子 vocus

星期三的CSS-CSSBattle#107

更新 發佈閱讀 6 分鐘

是的,身為前端工程師的基本功!還是需要時不時拿出來打磨一番!

很多大公司的切版與前端是分開的,但不能因為碰不到就不去理解,假如要系統性的調整樣式,那麼你就一定要懂基礎,就好像你要調整微前端的架構,總不能連包板工具的設定都不會吧!

回到正題,這系列文章每個禮拜三都會更新一題CSS Battle的題目,也歡迎想要學習或練習基礎切版的朋友們和我一起互動喔!

那麼我們這次從 #107 的問題來提供我的作法,那麼題目圖如下:

raw-image

封印解除XD

  1. 會考慮用一個 wrapper 將整個圓形圖案置中,那我會比較習慣使用 grid 來處理。
  2. 頭和眼睛的部分我們可以把它想成同心圓的蓋念,利用圖層堆疊的原理來組合出圖案,可以想像成紅色環形上面蓋上一個白色環形加上羽毛的圖層。
  3. 嘴巴和頸部可以把它想成長條形的色塊,利用 border-radius 去調整呈現的形狀。
  4. 最後透過 translatez-index 來調整顯示的位置。

下面的 html 是按照上述所描述的產出

<div class="wrapper">
<div class="ring">
<div id="top" class="wing"></div>
<div id="mid" class="wing"></div>
<div id="last" class="wing"></div>
</div>
<div class="mouth"></div>
<div class="neck"></div>
<div class="stick"></div>
</div>

這邊會透過 id 的方式去調整那三個羽毛的長短以及相對位移位置,那麼我們先來處理外層和 wrapper 的部分:

body {
margin: 0;
display: grid;
place-items: center;
background: #161616;
}
.wrapper {
width: 20px;
height: 20px;
border-radius: 50%;
border: 20px solid #A22015;
position: relative;
}

這裡會將 wrapper 調整成 position: relative; 主要是方便後面調整其他色塊匡時有比較直覺的參照點,接下來我們來處理白色環形和羽毛的部分:

.ring {
width: 30px;
height: 30px;
border-radius: 50%;
border: 10px solid #FFFFFF;
translate: -15px -15px;
position: relative;
}
.wing {
height: 12px;
background: #FFFFFF;
position: absolute;
border-radius: 0 0 0 50px;
}
#top {
width: 55px;
translate: -55px -3px;
}
#mid {
width: 40px;
translate: -40px 9px;
}
#last {
width: 25px;
translate: -25px 21px;
}

這個部分可以透過平台的工具去計算寬度,位移的話會依照上面一層的 content 位置去長內層的內容,也就是說我如果要讓圓心重疊,那麼我就必需位移半徑長度的位置,算是一個計算上的小技巧,可以縮短你來回使用工具的時間。

羽毛的計算就比較土法煉鋼,除了高度以外(可以利用已知的高度計算),剩下還得靠工具輔助。

上面處理完之後,剩下的色塊就相較容易許多,使用方法如下:

.mouth {
width: 70px;
height: 40px;
background: #E96A23;
position: absolute;
translate: 20px -61px;
border-radius: 0 40px 5px 0;
z-index: -1;
}
.neck {
width: 30px;
height: 30px;
background: #A22015;
border-radius: 0 0 10px 10px;
translate: -5px -17px;
position: absolute;
z-index: -1;
}
.stick {
width:20px;
height:200px;
background: #E96A23;
position: absolute;
z-index: -2;
}

基本上還得靠點經驗才做得快一點,尤其是對於 border-radius 大小的判斷,剩下的操作和前面基本上是大同小異,最後再調整一下 z-index 就能完成了。

技術總結

這題主要考的應該就是圖層堆疊的使用,有部分是關於圖形解構的能力,如果 position 沒有定位好的話,可能會花很多時間在調整位移,再來就是對 border-radius 的熟悉度,有經驗的話應該猜的到大概是多少大小,但如果面試真的遇到這類題目,要有心理準備會花比較長的時間來處理位移定位,那麼以上就是我的 100% 解法分享,一樣這題 100% 的解法絕對不會只有我這一種,大家也可以分享自己的作法與我交流,那麼我們下個禮拜三再見,Happy coding~ !

留言
avatar-img
Lee Luciano的沙龍
1會員
22內容數
Lee Luciano的沙龍的其他內容
2024/06/19
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
2024/06/19
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
2024/06/12
本文介紹了CSS Battle #172 交叉骷髏題目的解答技巧,包括圖層拆解的熟練程度和對小圓拆開處理等技巧。作者分享了100%的解法,鼓勵讀者分享自己的作法與交流。
Thumbnail
2024/06/12
本文介紹了CSS Battle #172 交叉骷髏題目的解答技巧,包括圖層拆解的熟練程度和對小圓拆開處理等技巧。作者分享了100%的解法,鼓勵讀者分享自己的作法與交流。
Thumbnail
2024/05/29
這篇文章將介紹如何透過CSS Battle的題目來練習基礎切版技巧。透過一個眼睛圖案的例子,提供了對於 border、outline、border-radius等屬性的調整方式,並分享了一種 100% 的解法。歡迎大家分享自己的作法與作者交流,一起學習成長。
Thumbnail
2024/05/29
這篇文章將介紹如何透過CSS Battle的題目來練習基礎切版技巧。透過一個眼睛圖案的例子,提供了對於 border、outline、border-radius等屬性的調整方式,並分享了一種 100% 的解法。歡迎大家分享自己的作法與作者交流,一起學習成長。
Thumbnail
看更多
你可能也想看
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News