# 20230429 margin/display/grid ### margin collapsing 資料:[MDN](https://developer.mozilla.org/zh-TW/docs/Web/CSS/CSS_box_model/Mastering_margin_collapsing) 練習:https://codepen.io/Jamixcs/pen/yLrVmNP?editors=1100 #### 父層緊連著子層 當父層的margin-top/bottom與子層的margin-top/bottom中間沒有被阻隔時,會以最大值為margin  解決方法: (1)parent加上border  (2)parent加上padding  #### 相鄰的兩個block 同一層的margin-top/bottom 之間沒有被阻隔時,會以最大值為margin  解決方法: 把外層的display:block改為flex或grid  ### margin的移動法 #### margin-top 影響元素本身,基準點分為以下兩種: (1)外層容器的border margin-top:50px  margin-top:-50px  (2)上方容器的margin-bottom margin-top:20px  margin-top:-60px  #### margin-left 影響元素本身,基準點分為以下兩種 (1)外層容器的border margin-left:20px  margin-left:-20px  (2) --- ### display #### block區塊元素 常見標籤包含: article、div、form、hr、p、h1~h6 特性: (1)獨佔一行,width預設100% (2)可以指定width & height (3)可以設定margin (4)可已設定padding,會自動推擠其他元素 (5)無法設定vertical-align(垂直對齊),文字永遠向上對齊 <補充>line-height行高 value可以填入:比例、百分比、px、em 自動計算line-weight與font-size,使文字自動顯示在正中間 #### inline行內元素 常見標籤包含:span、a、br、img、sub、sup、label 特性: (1)元素在同一行呈現 (2)width & height 受內容影響,無法指定 (3)只可設定左右magin,無法設定上下margin(上下margin並不是不能設,而是他不會把周圍的元素推開,所以你在畫面上看不出來差別) (4)可以設定padding,但上下並不會自動推擠其他元素 (5)不可包含block-level elements(瀏覽器可能不會拋錯,但結構上不合規範) #### inline-block行內區塊元素 常見的標籤包含:button、input、textarea、select (1)以inline方式呈現,但擁有block屬性 特性: (1)可以指定width & height (2)可以設定margin (3)可以設定padding,會自動推擠其他元素 (4)不可包含block-level elments(瀏覽器可能不會拋錯,但結構上不合規範) #### none不顯示 元素不顯示且不佔空間 常被拿來與visibility: hidden做比較。該屬性也可以以使元素被隱藏,但卻會佔有空間 <補充>visibility指定元素是否顯示在頁面上,不同瀏覽器可能不同,勿亂用,屬性介紹: (1)visible預設值,顯示 (2)hidden隱藏元素,仍保有原先位置 (3)collapse完全隱藏table相關元素 a.使用於tr.tbody.col.colgroup元素 會使整個row/column會被刪除,且不佔有空間(相當於display:none) b.其他元素(如:td) 相當於visibility:hidden,會佔有空間 (4)全域變數 | 變數值 | 定義 | | ------------ | ------------------------------------------------ | | inherit | 繼承父元素的屬性(若父層無宣告,則不再向外繼承) | | intial | 恢復為css預設值 | | unset | 父元素有須個則為inherit,父元素無宣告則為initial | | revert | 使用瀏覽器預設值,若無預設值則等同於unset | | revert-layer | 回到上ㄧ層@layer的屬性 | #### content 顯示內容 元素本身不產生作用,只會render子元 ### Grid網絡系統 1.以表格方式來將網頁排版 2.基本參數 (1)fr->等分   (2)repeat(次數,值組)->重複某個值組n次  (3)minmax(最小值,最大值)->限定區塊大小   #### grid-template-column 直欄 #### grid-template-rows 橫列  #### grid-template 宣告方式: grid-template-rows / grid-template-columns  #### order 宣告在grid容器裡的物件中,可定義本身的排序 值可為正負整數,越小的排越前面 預設值為0  #### grid-auto-flow 排列方向 ##### row 由左到右,由上到下 → 此為預設值 元素會以一列一個一列一個去排 ##### column 由上到下,由左到右 元素會以一欄一個一欄一個去排 #### grid-auto-columns 欄寬   #### grid-auto-rows 列寬   #### column-gap 欄間距 欄與欄之間的間距 #### row-gap 列間距 列與列之間的間距  #### gap 欄與列間距 宣告方式:<row-gap> <column-gap>  #### justify-content start  center  end  space-between  space-around  space-evenly  #### justify-items stretch(預設)  start(left)  end(right)  center  #### justify-self stretch(預設) start(left)  end(right)  center  #### align-content 列整體對齊方式 center  start  end  space-between  space-around  space-evenly  #### align-items 每列對齊方式    #### align-self 物件本身的垂直對齊方式  ### 區塊 #### grid-area 宣告在物件css裏,用於幫物件取名 grid-template-areas 指定區塊 宣告在grid容器css裡,指定物件的擺放順序,宣告時以雙引號表示一列,空格區番不同欄:"區塊1 區塊2" "區塊3 區塊4" 每列數目一定要相同,否則沒有作用 空格時以 . 表示  ### 指定起始與結束 grid-column-start: grid-column-end: grid-cloumn: / grid-row-start: grid-row-end: grid-row: / grid-area:row_start / column_start / row_end / column_end
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up