組件實作 : Demo
今天要來研究一下 Flexbox 的寫法,它是一個用來排版的神器,可以很有效的處理元素水平與垂直置中對齊,本篇主要是參考這篇文章,建議可以把文章先收藏起來,要用的時候可以查閱。
HTML:
<div class="flexbox">
<div class="header">Flexbox</div>
<div class="container">
<div class="cards">
<h3>display</h3>
<p>display:<span>flex</span>;</p>
<div class="demo-display outbox">
<p class="innerbox">1</p>
<p class="innerbox innerbox__2times">2</p>
<p class="innerbox">3</p>
</div>
</div>
...
</div>
</div>
顯示結果:
CSS:(起手式)
* {
margin: 0;
padding: 0;
list-style: none;
font-family: "微軟正黑體";
box-sizing: border-box;
}
html {
width: 100%;
height: 100%;
background-color: #7b4a91;
}
body {
width: 100%;
height: 100%;
background-color: #eee;
display: flex;
align-items: center;
overflow-x: hidden;
}
CSS:
.flexbox {
width: 100%;
height: 100%;
overflow-x: hidden;
}
.header {
line-height: 50px;
height: 50px;
text-align: center;
background: #333;
color: wheat;
margin: 0;
font-size: 30px;
letter-spacing: 5px;
}
.container {
width: 100%;
padding: 20px;
font-weight: 600;
}
顯示結果:
.cards {
width: 100%;
margin-bottom: 15px;
border: solid 1px rgba(0, 0, 0, 0.15);
padding: 15px 20px;
box-sizing: border-box;
border-radius: 10px;
background-color: rgba(238, 238, 238, 0.6);
box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.15);
background-image: linear-gradient(to bottom, #ecd6f0 70%, #fff 100%);
}
顯示結果:
.innerbox {
background: #f7941f;
margin: 10px;
height: 40px;
border: 2px solid black;
box-shadow: 1px 1px 0 1 #f7941f;
border-radius: 3px;
box-shadow: 10px 10px #f9af56 inset, 5px 5px #824f9a;
flex-grow: 1;
font-size: 24px;
color: white;
text-align: center;
line-height: 40px;
flex-shrink: 0;
min-width: 40px;
}
顯示結果:
.outbox {
width: auto;
border-radius: 3px;
border: 1px solid black;
background: #995db5;
box-shadow: 10px 10px #7b4a91 inset;
margin: 10px 0;
}
顯示結果:
CSS:
.demo-display {
display: flex;
justify-content: space-around;
}
顯示結果:
CSS:
.innerbox__2times {
flex-grow: 2;
}
顯示結果:
CSS:
p {
background: #1b1b1b;
border-radius: 5px;
color: #72e0d1;
padding: 5px;
}
span {
color: #f5d67b;
}
顯示結果:
Coming Soon。
本來想說要一起直接講解grid
的用法,但是後來發現其實grid
再獨立出來寫一篇會比較好,個人認為Flexbox
用在置中對齊上很方便,寫法上也不用像是float
一樣,需要clear
掉一些東西。至於grid
的用法,它可以排出一些「方正」的矩形,可以用在像是電商的商品清單、追劇時的影片列表等等。每一種排版方式都有各自的特性,如何選擇該用哪一種方式排版呢?個人認為,只要熟悉各種排版的用法,了解每個語法的特性,以及差異點,久而久之應該就能掌握到技巧。那麼,今天的內容到這邊結束啦~我們明天見!
花了很多時間在解決排版的問題,其實 Flexbox 是在幾個星期前寫的程式,今天重新檢視了一遍,卻有種不知道自己在寫什麼的窘境,這應該代表著「寫程式功力有所成長了(吧?)」,雖然修改起來還蠻辛苦的,但是有一種向前邁進的感覺,希望可以變得越來越好!