CSS= Cascading Style Sheets 階層式樣式表
有三種使用 CSS 的方法:
<style>
標籤包住的裡面<link rel='stylesheet' href='xxx.css'>
連結,這樣 CSS 和 HTML 兩個檔案互不干擾。CSS Selector Universal Selectors: 可以使用 *
到所有的元素。
標籤 selctor 會選到所有的標籤。
缺點:在實際開發的時候,不常用到標籤 selector,因為通常選到一兩個要的元素來更改樣式。
HTML | CSS | 譬喻 | 規則說明 |
---|---|---|---|
id='div1' | #div1 {} | 身份證 | 整個檔案只能有一個 id |
class='bg-yellow' | .bg-yello {} | 一個元素可以有很多個 class | |
class='bg-yellow text-white' | .bg-yello {} | 各個元素可以擁有複數個 class 也可以共享 class |
同時符合的條件,selector 才會有效。
什麼是底下的元素?
如下程式,那要怎麼選 lv3 的CSS selector呢?
class=lv1
的下一層 div
.lv1 .'bg-red'
意即:.lv1
底下(所有被包住的裡面層)所有的bg-red
Summary:
CSS=Cascading Style Sheets 裡,Cascade(階層式)的一層一層的概念,一個包一個的結構。
「同一層」「旁邊」的元素: + 與 ~
+
:旁邊的一個元素
class='bg-red'
旁邊也是 class='bg-red'
的標籤,所以是 div4
顯示 background: red
。div
旁邊的 span
的 span
,變成 background: blue;
~
:旁邊的所有元素
div
旁邊所有 span
的元素,所以是 456
、789
皆變成background: blue
應用:希望在 span
貼齊邊邊,然後 span1 span2 span3 span4
想要在每個 span
的中間加間隔。
:hover
,滑鼠不用移到上面,也可以顯示 hover
:last-child
:nth-child(3)
:nth-child(odd)
::nth-childe(3n)
: n=0, 3, 6, 9:nth-childe(3n+1)
: n=1, 4, 7舉例:nth-child(n)
先看順序才看標籤
.wrapper .bg-red:nth-child(2)
是怎麼看的?
.wrapper
底下的第二個 .bg-red
的標籤.wrapper
底下的第二個是不是 .bg-red
的標籤::
span
權重:id
> class
> 標籤
(越詳細的贏)
小幫手: Chrome developer > elements > styles 可以看樣式的權重
「很少用的」例外:HTML inline style 與
!important
- HTML inline style >> CSS selector 權重
[盡量少用 因為會把其他蓋掉]
放在color:red !important
的!important
權重公式:
id | (psuedo)class, attribute | tag(標籤) |
---|---|---|
0 | 0 | 0 |
權重計算:
CSS selector | 權重計算 |
---|---|
.wrapper .list .item | 0,3,0 |
div.wrapper > div.list | 0,2,2 |
#pick | 1,0,0 |
!important | 1,0,0,0 |
Summary:
!important
及 HTML inline stylesid
> class
> 標籤
(越詳細的贏)可以把背景設計成顏色及圖片
background: red
50%
, px
, contain
, cover
contain
:看是長、寬哪一部份貼合,不會更改長寬比例cover
: 常用。往 box 外面延伸,然後框起來。
border
加了 border
會影響到原本 box 位置,所以 box會移動。
border style
:
solid
:dotted
等等。border-radius
:
10px
, 100px
, 50%
etc.border-top
, border-bottom
, border-left
, border-right
, height
, width
畫三角形。outline
:
加了之後,往元素外面延伸,不會動到任何 box 位置
margin
: 外邊距。
margin: 20px
: 上下左右 20pxmargin: 20px 10px
: 上下 20px,左右 10pxmargin: 8px
: 在開瀏覽器看 CSS box 成果時,會與最邊邊有空白,那是瀏覽器自行加上的,如果要與邊邊無空隙,可以在CSS檔案上寫 margin: 0px
padding
: 內邊距。color: white
: 文字顏色font-size: 30px
: 文字大小font-weight: 100
: 100~900 細體、粗體、一般等等font-family: serif
: 字體letter-spacing: 1px
: 字母與字母間的間距line-height: 1.5 em
:就是字大小的1.5倍行高。
line height:100px
與 text-align: center
: 與色塊(height:200px),這樣就會有垂直置中的效果。缺點就是如果有兩行文字的話,第二行就會隔很開。padding: 30px 0px
,上下 30px 左右 0px 一樣會被放在中間。text-align: center
: 置中對齊。調整文字很長的時候,做切割。
word-break
:
break-all
: 單字直接被切兩行。break-word
: 會把單字放在同一行的切成不同行。white-space
:
nowrap
: 強制在同一行內容超出方框寬度要怎麼處理?
overflow:
text-overflow
的差異:overflow
的應用較廣
scroll
: 不管有沒有超過,都會顯示可滾動的滾輪區域hidden
: 截斷,然後藏起來auto
: 如果有超過寬度,才會顯示滾輪,可滾動的區域text-overflow:
overflow
的差異:text-overflow
只能用在文字
ellipsis
: 把多的字,使用...
蓋掉,
overflow: hidden
,才能把多的蓋掉white-space: nowrap
: 強制在同一行漸變,搭配 hover
,不過 transition
不是放在hover
transition: all 1s ease-in
變形轉換
:hover {transform:... }
scale(2)
: 從中心點變大兩倍。rotate(180deg)
: 可以轉 180 度。translate(50px, -20px)
: 從原本位置偏移,不會影響到其他方塊。「常用」
置中在畫面正中央
position: absolute
top: 50%
上方整個畫面的 50%left: 50%
方框左上角為正中間transform: translate(-50%, -50%)
依照元素寬度高度一半向左上移動,就達成垂直水平置中。box-sizing: border-box
,設定的寬高 200px 100px,整個元素的 content、border、padding 就是 200px 100px。display:
block
: div、h1、p 的預設。inline
: span a 的預設,
padding
會影響元素的大小,不會影響位置,但通常沒什麼用。inline-block
:
button
、input
、select
。inline-block
vs block
: 一行內可不可以擺多個元素。static
:
relative
:
top
、left
、right
、bottom
: 20pxposition:
fixed
: 不管怎麼捲動頁面,都會在瀏覽器上定位,更精確是 wiewport 做定位。absolute
: 需要一參考點。
決定圖層順序
z-index=10
數字越大,圖層越前面。
top: 0px
& postion: sticky
當滾輪滾到該元素為 top: 0px
時,從 static 變成 fix 。
__
兩個底線align-items: vertical-align
:inline
元素、table
。<div>
: 視覺上的區塊flexbox
: frog 小遊戲。flexbox
-> grid
-> float
reset.css
:
normalize.css
:
MTR05
Lidemy學習筆記