最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

如何使用純CSS實(shí)現(xiàn)大白的形象(附源碼)

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-02 22:08:42
文檔

如何使用純CSS實(shí)現(xiàn)大白的形象(附源碼)

如何使用純CSS實(shí)現(xiàn)大白的形象(附源碼):本篇文章給大家?guī)淼膬?nèi)容是關(guān)于如何使用純CSS實(shí)現(xiàn)大白的形象(附源碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。效果預(yù)覽源代碼下載https://github.com/comehope/front-end-daily-challenges代碼解讀整個(gè)人物分為 3
推薦度:
導(dǎo)讀如何使用純CSS實(shí)現(xiàn)大白的形象(附源碼):本篇文章給大家?guī)淼膬?nèi)容是關(guān)于如何使用純CSS實(shí)現(xiàn)大白的形象(附源碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。效果預(yù)覽源代碼下載https://github.com/comehope/front-end-daily-challenges代碼解讀整個(gè)人物分為 3
本篇文章給大家?guī)淼膬?nèi)容是關(guān)于如何使用純CSS實(shí)現(xiàn)大白的形象(附源碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。

效果預(yù)覽

1159753516-5bb7f318b7581_articlex.png

源代碼下載

https://github.com/comehope/front-end-daily-challenges

代碼解讀

整個(gè)人物分為 3 部分:頭、身體、腿,下面按照這個(gè)順序分別畫出,先畫頭部。
定義 dom,容器 .baymax 表示大白,head 表示頭部:

<div class="baymax">
 <div class="head">
 <div class="eyes"></div>
 </div>
</div>

居中顯示:

body {
 margin: 0;
 height: 100vh;
 display: flex;
 align-items: center;
 justify-content: center;
 background-color: rgba(176, 0, 0, 0.75);
}

定義容器尺寸和子元素對齊方式:

.baymax {
 width: 30em;
 height: 41em;
 font-size: 10px;
 display: flex;
 justify-content: center;
 position: relative;
}

畫出頭部輪廓:

.head {
 position: absolute;
 width: 9em;
 height: 6em;
 background-color: white;
 border-radius: 50%;
 box-shadow: 
 inset 0 -1.5em 3em rgba(0, 0, 0, 0.2),
 0 0.5em 1.5em rgba(0, 0, 0, 0.2);
}

畫出雙眼中間的線條:

.head .eyes {
 position: absolute;
 width: 4.8em;
 height: 0.1em;
 background-color: #222;
 top: 2.3em;
 left: calc((9em - 4.8em) / 2);
}

畫出雙眼:

.head .eyes::before,
.head .eyes::after {
 content: '';
 position: absolute;
 width: 0.8em;
 height: 0.9em;
 background-color: #222;
 border-radius: 50%;
 top: -0.3em;
}

.head .eyes::after {
 right: 0;
}

接下來畫身體。
html 文件中增加身體的 dom 元素:

<div class="baymax">
 <div class="head">
 <!-- 略 -->
 </div>
 <div class="body">
 <div class="chest">
 <span class="button"></span>
 </div>
 <div class="belly"></div>
 <div class="left arm">
 <div class="fingers"></div>
 </div>
 <div class="right arm">
 <div class="fingers"></div>
 </div>
 </div>
</div>

定義身體的寬度:

.body {
 position: absolute;
 width: inherit;
}

畫出胸部:

.body .chest {
 position: absolute;
 width: 19em;
 height: 26em;
 background-color: white;
 top: 4em;
 left: calc((100% - 19em) / 2);
 border-radius: 50%;
 z-index: -1;
}

畫出胸前的按鈕:

.body .chest .button {
 position: absolute;
 width: 2em;
 height: 2em;
 background-color: white;
 border-radius: 50%;
 top: 4em;
 right: 4em;
 box-shadow: 
 inset 0 -0.5em 0.8em rgba(0, 0, 0, 0.15),
 0.2em 0.3em 0.2em rgba(0, 0, 0, 0.05);
 filter: opacity(0.75);
}

畫出肚皮:

.body .belly {
 position: absolute;
 width: 24em;
 height: 31em;
 background-color: white;
 top: 5.5em;
 left: calc((100% - 24em) / 2);
 border-radius: 50%;
 z-index: -2;
 box-shadow: 
 inset 0 -2.5em 4em rgba(0, 0, 0, 0.15),
 0 0.5em 1.5em rgba(0, 0, 0, 0.25);
}

定義胳膊的高度起點(diǎn):

.body .arm {
 position: absolute;
 top: 7.5em;
}

胳膊分為肘以上的部分和肘以下的部分。
先設(shè)計(jì)這兩段的共有屬性:

.body .arm::before,
.body .arm::after {
 content: '';
 position: absolute;
 background-color: white;
 border-radius: 50%;
 transform-origin: top;
 z-index: -3;
}

再用偽元素分別畫出這兩部分:

.body .arm::before {
 width: 9em;
 height: 20em;
 left: 7em;
 transform: rotate(30deg);
}

.body .arm::after {
 width: 8em;
 height: 15em;
 left: -0.8em;
 top: 9.5em;
 transform: rotate(-5deg);
 box-shadow: inset 0.4em -1em 1em rgba(0, 0, 0, 0.2);
}

定義兩根手指的共有屬性:

.body .arm .fingers::before,
.body .arm .fingers::after {
 content: '';
 position: absolute;
 width: 1.8em;
 height: 4em;
 background-color: white;
 border-radius: 50%;
 transform-origin: top;
}

用偽元素分別畫出兩根手指:

.body .arm .fingers::before {
 top: 22em;
 left: 2em;
 transform: rotate(-25deg);
 box-shadow: inset 0.2em -0.4em 0.4em rgba(0, 0, 0, 0.4);
}

.body .arm .fingers::after {
 top: 21.5em;
 left: 4.8em;
 transform: rotate(-5deg);
 box-shadow: inset -0.2em -0.4em 0.8em rgba(0, 0, 0, 0.3);
 z-index: -3;
}

至此,完成了右胳膊。把右胳膊復(fù)制并水平翻轉(zhuǎn),即可得到左胳膊:

.body .arm.left {
 transform: scaleX(-1);
 right: 0;
 z-index: -3;
}

接下來畫腿部。
在 html 文件中增加腿的 dom 元素:

<div class="baymax">
 <div class="head">
 <!-- 略 -->
 </div>
 <div class="body">
 <!-- 略 -->
 </div>
 <div class="left leg"></div>
 <div class="right leg"></div>
</div>

畫出腿的內(nèi)側(cè):

.leg {
 position: absolute;
 width: 5em;
 height: 16em;
 bottom: 0;
 background-color: white;
 border-bottom-right-radius: 1.5em;
 left: 10em;
 box-shadow: inset -0.7em -0.6em 0.7em rgba(0, 0, 0, 0.1);
 z-index: -3;
}

畫出腿的外側(cè):

.leg::before {
 content: '';
 position: absolute;
 width: 2.5em;
 height: inherit;
 background-color: white;
 border-bottom-left-radius: 100%;
 left: -2.5em;
 box-shadow: inset 0.7em 1.5em 0.7em rgba(0, 0, 0, 0.4);
}

至此,完成了右腿。把右腿復(fù)制并水平翻轉(zhuǎn),即可得到左腿:

.leg.left {
 transform-origin: right;
 transform: scaleX(-1);
}

大功告成!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

如何使用純CSS實(shí)現(xiàn)大白的形象(附源碼)

如何使用純CSS實(shí)現(xiàn)大白的形象(附源碼):本篇文章給大家?guī)淼膬?nèi)容是關(guān)于如何使用純CSS實(shí)現(xiàn)大白的形象(附源碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。效果預(yù)覽源代碼下載https://github.com/comehope/front-end-daily-challenges代碼解讀整個(gè)人物分為 3
推薦度:
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top