grid
åºçº¿
广æ³å¯ç¨
èª 2017å¹´10æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
grid æ¯ä¸ä¸ª CSS ç®å屿§ï¼å¯ä»¥ç¨æ¥è®¾ç½®ä»¥ä¸å±æ§ï¼
æ¾å¼ç½æ ¼å±æ§ grid-template-rowsãgrid-template-columns å grid-template-areasï¼
éå¼ç½æ ¼å±æ§ grid-auto-rowsãgrid-auto-columns å grid-auto-flowï¼
é´è·å±æ§ grid-column-gap å grid-row-gapã
å°è¯ä¸ä¸
grid: auto-flow / 1fr 1fr 1fr;
grid: auto-flow dense / 40px 40px 1fr;
grid: repeat(3, 80px) / auto-flow;
<section class="default-example" id="default-example">
<div class="example-container">
<div class="transition-all" id="example-element">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
</div>
</section>
#example-element {
border: 1px solid #c5c5c5;
display: grid;
grid-gap: 10px;
width: 200px;
}
#example-element :nth-child(1) {
background-color: rgba(0, 0, 255, 0.2);
border: 3px solid blue;
}
#example-element :nth-child(2) {
background-color: rgba(255, 0, 200, 0.2);
border: 3px solid rebeccapurple;
grid-column: auto / span 3;
grid-row: auto / span 2;
}
#example-element :nth-child(3) {
background-color: rgba(94, 255, 0, 0.2);
border: 3px solid green;
grid-column: auto / span 2;
}
夿³¨ï¼ä½ ä»
å¯å¨ä¸ä¸ª grid 屿§ä¸å£°ææ¾å¼æéå¼ç½æ ¼ãä¸å
¶ä»ç®å屿§åæ ·ï¼è¥ææ¬¡çº§å±æ§æªè¢«å£°æï¼å
¶å°ä½¿ç¨åå§å¼ãå¦å¤ï¼å°½ç®¡æ¤ç®åå£°ææ æ³è®¾ç½®ç½æ ¼çæ§½ï¼gutterï¼ï¼æ§½ä¼è¢«è¯¥å£°æéç½®ã
è¯æ³
/* <'grid-template'> values */
grid: none;
grid: "a" 100px "b" 1fr;
grid: [linename1] "a" 100px [linename2];
grid: "a" 200px "b" min-content;
grid: "a" minmax(100px, max-content) "b" 20%;
grid: 100px / 200px;
grid: minmax(400px, min-content) / repeat(auto-fill, 50px);
/* <'grid-template-rows'> /
[ auto-flow && dense? ] <'grid-auto-columns'>? values */
grid: 200px / auto-flow;
grid: 30% / auto-flow dense;
grid: repeat(3, [line1 line2 line3] 200px) / auto-flow 300px;
grid: [line1] minmax(20em, max-content) / auto-flow dense 40%;
/* [ auto-flow && dense? ] <'grid-auto-rows'>? /
<'grid-template-columns'> values */
grid: auto-flow / 200px;
grid: auto-flow dense / 30%;
grid: auto-flow 300px / repeat(3, [line1 line2 line3] 200px);
grid: auto-flow dense 40% / [line1] minmax(20em, max-content);
/* Global values */
grid: inherit;
grid: initial;
grid: unset;
å¼
<'grid-template'>-
å®ä¹äº
grid-templateï¼å ¶å å«grid-template-columnsï¼grid-template-rowsågrid-template-areasã <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>?éè¿grid-template-rows屿§æ¾å¼è®¾ç½®è¡è½¨éæ¥è®¾ç½®èªå¨æµï¼grid-template-columns屿§è®¾ä¸ºnoneï¼ï¼å¹¶éè¿grid-auto-columnsæç¡®è¯¥å¦ä½èªå¨éå¤å轨éï¼åæ¶grid-auto-rows屿§è®¾ä¸º autoï¼ãgrid-auto-flow屿§ä¹è¢«ç¸åºç设置为columnï¼å¹¶å¯éæ denseã-
ææå ¶ä½
gridæ¬¡çº§å±æ§è¢«é置为åå§å¼ã [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>-
éè¿
grid-template-columns屿§æ¾å¼è®¾ç½®åè½¨éæ¥è®¾ç½®èªå¨æµï¼grid-template-rows屿§è®¾ä¸ºnoneï¼ï¼å¹¶éè¿grid-auto-rowsæç¡®è¯¥å¦ä½èªå¨éå¤è¡è½¨éï¼åæ¶grid-auto-columns屿§è®¾ä¸ºautoï¼ãgrid-auto-flow屿§ä¹è¢«ç¸åºç设置为rowï¼å¹¶å¯éæ denseã ææå ¶ä½gridæ¬¡çº§å±æ§è¢«é置为åå§å¼ã
æ åè¯æ³
grid =
<'grid-template'> |
<'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? |
[ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>
<grid-template> =
none |
[ <'grid-template-rows'> / <'grid-template-columns'> ] |
[ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?
<grid-template-rows> =
none |
<track-list> |
<auto-track-list> |
subgrid <line-name-list>?
<grid-auto-columns> =
<track-size>+
<grid-auto-rows> =
<track-size>+
<grid-template-columns> =
none |
<track-list> |
<auto-track-list> |
subgrid <line-name-list>?
<line-names> =
'[' <custom-ident>* ']'
<track-size> =
<track-breadth> |
minmax( <inflexible-breadth> , <track-breadth> ) |
fit-content( <length-percentage [0,â]> )
<explicit-track-list> =
[ <line-names>? <track-size> ]+ <line-names>?
<track-list> =
[ <line-names>? [ <track-size> | <track-repeat> ] ]+ <line-names>?
<auto-track-list> =
[ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>? <auto-repeat> [ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>?
<line-name-list> =
[ <line-names> | <name-repeat> ]+
<track-breadth> =
<length-percentage [0,â]> |
<flex [0,â]> |
min-content |
max-content |
auto
<inflexible-breadth> =
<length-percentage [0,â]> |
min-content |
max-content |
auto
<length-percentage> =
<length> |
<percentage>
<track-repeat> =
repeat( [ <integer [1,â]> ] , [ <line-names>? <track-size> ]+ <line-names>? )
<fixed-size> =
<fixed-breadth> |
minmax( <fixed-breadth> , <track-breadth> ) |
minmax( <inflexible-breadth> , <fixed-breadth> )
<fixed-repeat> =
repeat( [ <integer [1,â]> ] , [ <line-names>? <fixed-size> ]+ <line-names>? )
<auto-repeat> =
repeat( [ auto-fill | auto-fit ] , [ <line-names>? <track-size> ]+ <line-names>? )
<name-repeat> =
repeat( [ <integer [1,â]> | auto-fill ] , <line-names>+ )
<integer> =
<number-token>
<fixed-breadth> =
<length-percentage [0,â]>
å®ä¾
>HTML
<div id="container">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
CSS
#container {
display: grid;
grid: repeat(2, 60px) / auto-flow 80px;
}
#container > div {
background-color: #8ca0ff;
width: 50px;
height: 50px;
}
ç»æ
è§è
| è§è |
|---|
| CSS Grid Layout Module Level 2 > # grid-shorthand > |
æµè§å¨å ¼å®¹æ§
åè§
- ç¸å
³ CSS 屿§ï¼
grid-template,grid-template-rows,grid-template-columns,grid-template-areas,grid-auto-columns,grid-auto-rows,grid-auto-flow - ç½æ ¼å¸å±æåï¼Line-based placement with CSS Grid
- ç½æ ¼å¸å±æåï¼Grid template areas - Grid definition shorthands