CSS 网格位于具有以下内容的页面上max-width:
body {
outline: 1px solid black;
}
.max-width {
max-width: 400px;
margin: 0 auto;
}
.grid {
display: grid;
grid-template-columns: repeat(12, 1fr);
}
.first-grid-item {
grid-column: 1 / -1;
background-color: #ccc;
}
.second-grid-item {
grid-column: 1 / -1;
background-color: tomato;
}
@media (min-width: 576px) {
.max-width {
max-width: 500px;
}
.first-grid-item {
grid-column: 1 / 9;
}
.second-grid-item {
grid-column: 9 / 13;
}
}Run Code Online (Sandbox Code Playgroud)
<div class="max-width">
<div class="grid">
<div class="first-grid-item">First</div>
<div class="second-grid-item">Second</div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
在较小的屏幕上,布局会发生变化,第二个网格项位于第一个下方:
现在,出现了一个新要求,即为较小屏幕上的第二项添加全角背景颜色,如下所示:
你将如何实现这一目标?
注意事项:
在小屏幕上,您实际上并不需要网格。
这是我的尝试:
body {
outline: 1px solid black;
}
.first-grid-item{
max-width: 400px; /* Only restrict the first item */
margin: 0 auto;
}
.first-grid-item {
background-color: #ccc;
}
.second-grid-item {
background-color: tomato;
padding:0 calc(50% - 200px); /* to have the content inside the 400px (remove this if not)*/
}
@media (min-width: 576px) {
.max-width {
max-width: 500px;
margin: 0 auto;
}
/* only here we need the grid */
.grid {
display: grid;
grid-template-columns: repeat(12, 1fr);
}
/**/
.first-grid-item {
grid-column: 1 / 9;
margin:0; /* reset margin */
max-width: 100%; /* reset max-width */
}
.second-grid-item {
grid-column: 9 / 13;
background-color: lightblue;
padding:0; /* reset padding */
}
}Run Code Online (Sandbox Code Playgroud)
<div class="max-width">
<div class="grid">
<div class="first-grid-item">First</div>
<div class="second-grid-item">Second</div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
您也可以像下面这样做:
body {
outline: 1px solid black;
}
.max-width {
max-width: 500px;
margin: 0 auto;
}
.grid {
display: grid;
grid-template-columns: repeat(12, 1fr);
}
.first-grid-item {
grid-column: 1 / 9;
background-color: #ccc;
}
.second-grid-item {
grid-column: 9 / 13;
background-color: lightblue;
}
@media (max-width: 576px) {
.max-width {
max-width: 100%;
}
.grid {
display: block;
}
.first-grid-item {
max-width: 400px;
margin: 0 auto;
}
.second-grid-item {
background-color: tomato;
padding: 0 calc(50% - 200px);
}
}Run Code Online (Sandbox Code Playgroud)
<div class="max-width">
<div class="grid">
<div class="first-grid-item">First</div>
<div class="second-grid-item">Second</div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
想要有不同的色彩,多重背景就可以轻松做到
body {
outline: 1px solid black;
}
.max-width {
max-width: 500px;
margin: 0 auto;
}
.grid {
display: grid;
grid-template-columns: repeat(12, 1fr);
}
.first-grid-item {
grid-column: 1 / 9;
background-color: #ccc;
}
.second-grid-item {
grid-column: 9 / 13;
background:
linear-gradient(lightblue,lightblue) content-box,
tomato;
}
@media (max-width: 576px) {
.max-width {
max-width: 100%;
}
.grid {
display: block;
}
.first-grid-item {
max-width: 400px;
margin: 0 auto;
}
.second-grid-item {
padding: 0 calc(50% - 200px);
}
}Run Code Online (Sandbox Code Playgroud)
<div class="max-width">
<div class="grid">
<div class="first-grid-item">First</div>
<div class="second-grid-item">Second</div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)