4.1 基本概念
CSS 变量和媒体查询是创建自适应网页设计的强大工具,可以自动适应不同屏幕尺寸和设备。变量允许集中管理样式,而媒体查询允许根据条件(如屏幕宽度)更改这些样式。
基本概念
- CSS 变量:允许设置可以在整个 CSS 代码中重复使用的值。它们可以在不同的上下文中(如媒体查询中)更改,这使得它们对响应式设计特别有用。
- 媒体查询:允许根据设备的特性(如屏幕宽度或高度)应用 CSS 样式。这允许根据不同设备调整网页的外观和行为。
在媒体查询中使用变量
可以在媒体查询中使用 CSS 变量来根据条件更改样式值。这允许创建更加灵活且易于维护的自适应设计。
媒体查询中使用变量的示例:
CSS
:root {
--main-bg-color: #f0f0f0;
--main-text-color: #333;
--primary-color: #3498db;
--font-size: 16px;
}
body {
background-color: var(--main-bg-color);
color: var(--main-text-color);
font-size: var(--font-size);
}
a {
color: var(--primary-color);
}
@media (max-width: 600px) {
:root {
--main-bg-color: #e0e0e0;
--font-size: 14px;
}
}
@media (min-width: 601px) and (max-width: 1200px) {
:root {
--main-bg-color: #d0d0d0;
--font-size: 15px;
}
}
@media (min-width: 1201px) {
:root {
--main-bg-color: #f0f0f0;
--font-size: 16px;
}
}
HTML
<body>
<p>This is a paragraph with a link to <a href="#">Example.com</a>.</p>
</body>
解释:
在这个例子中,变量的值根据屏幕宽度变化:
- 对于宽度不超过600px的屏幕,背景颜色变为更深的阴影,字体大小减小。
- 对于宽度在601px到1200px之间的屏幕,背景变为中间色调,字体大小略增大。
- 对于宽度超过1200px的屏幕,应用原始变量值。
4.2 媒体查询中变量的例子
例子 1: 响应式的内边距和字体大小
CSS
:root {
--padding: 20px;
--font-size: 16px;
}
.container {
padding: var(--padding);
font-size: var(--font-size);
}
@media (max-width: 600px) {
:root {
--padding: 10px;
--font-size: 14px;
}
}
@media (min-width: 601px) and (max-width: 1200px) {
:root {
--padding: 15px;
--font-size: 15px;
}
}
@media (min-width: 1201px) {
:root {
--padding: 20px;
--font-size: 16px;
}
}
HTML
<div class="container">
<p>This is a responsive container with adaptive padding and font size.</p>
</div>
解释:
- 在这个例子中,
.container
的内边距和字体大小根据屏幕宽度变化
例子 2: 使用变量和媒体查询进行网站主题化
CSS
:root {
--bg-color: #ffffff;
--text-color: #000000;
--link-color: #3498db;
}
body {
background-color: var(--bg-color);
color: var(--text-color);
}
a {
color: var(--link-color);
}
@media (prefers-color-scheme: dark) {
:root {
--bg-color: #000000;
--text-color: #ffffff;
--link-color: #9b59b6;
}
}
HTML
<body>
<p>This text and link will adapt to the user's preferred color scheme. Visit <a href="#">Example.com</a>.</p>
</body>
解释:
-
在这个例子中,网站的颜色方案根据用户的偏好更改(
prefers-color-scheme: dark
)。 当切换明暗主题时,背景颜色、文本和链接颜色会自动变化。
4.3 响应式网格
使用变量和媒体查询创建响应式网格的例子:
CSS
:root {
--columns: 1fr;
--gap: 10px;
}
.grid-container {
display: grid;
grid-template-columns: var(--columns);
gap: var(--gap);
}
@media (min-width: 600px) {
:root {
--columns: 1fr 1fr;
}
}
@media (min-width: 900px) {
:root {
--columns: 1fr 1fr 1fr;
}
}
HTML
<div class="grid-container">
<div>Item 1</div>
<div>Item 2</div>
<div>Item 3</div>
<div>Item 4</div>
</div>
解释:
- 在这个例子中,使用的是响应式网格,根据屏幕宽度改变列数。 窄屏(600px 以下)有一列,中屏(600px 到 900px 之间)有两列, 宽屏(900px 以上)有三列
GO TO FULL VERSION