红色
展示
粉色
紫色
青色
茶色
绿色
提示:响应宽度点为:1200px, 900px, 600px
代码
CSS代码:
.box {
--columns: 4;
--margins: calc(24px / var(--columns));
--space: calc(4px * var(--columns));
--fontSize: calc(20px - 4 / var(--columns));
}
.box {
width: 50%;
min-width: 320px;
margin: auto;
overflow: hidden;
}
.cell {
width: calc((100% - var(--margins) * var(--columns) * 2) / var(--columns));
margin: var(--margins);
box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12);
background-color: #f0f3f9;
float: left;
}
.cell-header {
background: currentColor;
}
.cell-title {
color: #fff;
padding: var(--space);
font-size: var(--fontSize);
}
.cell-content {
height: 150px;
padding: var(--space);
font-size: var(--fontSize);
}
@media screen and (max-width: 1200px) {
.box {
--columns: 3;
}
}
@media screen and (max-width: 900px) {
.box {
--columns: 2;
}
}
@media screen and (max-width: 600px) {
.box {
--columns: 1;
}
}
HTML代码:
<div class="box">
<div class="cell" style="color: #F44336;">
<header class="cell-header">
<div class="cell-title">红色</div>
</header>
<main class="cell-content">改变浏览器的宽度</main>
</div>
<div class="cell" style="color: #E91E63;">
<header class="cell-header">
<div class="cell-title">粉色</div>
</header>
<main class="cell-content">会看到布局发生了变化</main>
</div>
<div class="cell" style="color: #9C27B0;">
<header class="cell-header">
<div class="cell-title">紫色</div>
</header>
<main class="cell-content">仅仅是通过CSS改变一个变量值实现</main>
</div>
<div class="cell" style="color: #00BCD4;">
<header class="cell-header">
<div class="cell-title">青色</div>
</header>
<main class="cell-content">这比传统的响应式处理要更省代码更好维护</main>
</div>
<div class="cell" style="color: #009688;">
<header class="cell-header">
<div class="cell-title">茶色</div>
</header>
<main class="cell-content">本例子主要为了演示响应式与变化效果</main>
</div>
<div class="cell" style="color: #4CAF50;">
<header class="cell-header">
<div class="cell-title">绿色</div>
</header>
<main class="cell-content">所以,至于布局变化细节是否合理就不用在意了。</main>
</div>
</div>