CSS
网格布局 | Grid Layout

网格模板 | grid-template

grid-template

grid-templateCSS属性是定义一个网格列,行和领域的速记属性。

/* Keyword value */ grid-template: none; /* grid-template-rows / grid-template-columns values */ grid-template: 100px 1fr / 50px 1fr; grid-template: auto 1fr / auto 1fr auto; grid-template: [linename] 100px / [columnname1] 30% [columnname2] 70%; grid-template: fit-content(100px) / fit-content(40% /* grid-template-areas grid-template-rows / grid-template-column values */ grid-template: "a a a" "b b b"; grid-template: "a a a" 20% "b b b" auto; grid-template: [header-top] "a a a" [header-bottom] [main-top] "b b b" 1fr [main-bottom] / auto 1fr auto; /* Global values */ grid-template: inherit; grid-template: initial; grid-template: unset;

可以为速记属性值:grid-template-rowsgrid-template-columns,和grid-template-areas

初始值作为简写的每个属性:grid-template-columns:none grid-template-rows:none grid-template-areas:none
适用于网格容器
遗传没有
百分比作为简写的每一个属性:grid-template-columns:引用内容区域的相应尺寸grid-template-rows:引用内容区域的对应尺寸
媒体视觉
计算值作为简写的每个属性:grid-template-columns:按照规定,但相对长度转换为绝对长度grid-template-rows:按指定,但相对长度转换为绝对长度grid-template-areas:as规定
动画类型离散的
规范的顺序形式语法定义的独特的非模糊顺序

  • grid-template-columns*none

  • grid-template-rows*none

  • grid-template-areas*none

Applies to grid containers [Inherited](inheritance) no Percentages as each of the properties of the shorthand:

  • grid-template-columns*参考内容区域的相应维度

  • grid-template-rows*参考内容区域的相应维度

Media visual [Computed value](computed_value) as each of the properties of the shorthand:

  • grid-template-columns::按规定,但相对长度转换为绝对长度

  • grid-template-rows::按规定,但相对长度转换为绝对长度

  • grid-template-areas*具体规定

Animation type discrete Canonical order the unique non-ambiguous order defined by the formal grammar

语法

取值

none是一个将所有三个longhand属性设置为的关键字none,这意味着没有明确的网格。没有命名的网格区域。行和列将隐式生成; 他们的大小将由grid-auto-rows和grid-auto-columns属性决定。<'grid-template-rows'> / <'grid-template-columns'>设置grid-template-rows和grid-template-columns指定的值,并设置grid-template-areas为none。[ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?设置grid-template-areas为列出的字符串,grid-template-rows每个字符串后面的轨道大小(填充auto任何缺少的大小),并在每个大小之前/之后定义的命名行中拼接,以及grid-template-columns在斜杠后面指定的轨道列表(或者none,如果未指定)。

注:repeat()函数在这些轨道列表中是不允许的,因为这些轨道是为了直观地将一对一地与“ASCII art”中的行/列对齐。

注:grid速记接受相同的语法,但也复位隐含网格属性为初始值。使用grid(而不是grid-template)来防止这些值单独级联。

形式语法

none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?where <line-names> = '[' <custom-ident>* ']' <track-size> = <track-breadth> | minmax( <inflexible-breadth> , <track-breadth> ) | fit-content( [ <length> | <percentage> ] ) <explicit-track-list> = [ <line-names>? <track-size> ]+ <line-names>? where <track-breadth> = <length-percentage> | <flex> | min-content | max-content | auto <inflexible-breadth> = <length> | <percentage> | min-content | max-content | auto where <length-percentage> = <length> | <percentage>

实例

CSS

#page { display: grid; width: 100%; height: 200px; grid-template: [header-left] "head head" 30px [header-right] [main-left] "nav main" 1fr [main-right] [footer-left] "nav foot" 30px [footer-right] / 120px 1fr; } header { background-color: lime; grid-area: head; } nav { background-color: lightblue; grid-area: nav; } main { background-color: yellow; grid-area: main; } footer { background-color: red; grid-column: foot; }

HTML

<section id="page"> <header>Header</header> <nav>Navigation</nav> <main>Main area</main> <footer>Footer</footer> </section>

结果

规范

SpecificationStatusComment
CSS Grid LayoutThe definition of 'grid-template' in that specification.Candidate RecommendationInitial definition

浏览器兼容性

FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support57.01No support352.0 (52.0)2No support3444No support5

FeatureAndroid WebviewChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support57.0157.0152.0 (52.0)2No support344No support