函数clac(),css 媒体查询
calc
在 CSS 中,calc() 是一个非常有用的函数,它允许你在 CSS 属性值中进行数学计算。这使得你可以根据不同的长度单位(如像素、百分比等)动态地计算属性值,为网页布局提供了更大的灵活性。以下是关于 calc() 的详细介绍:
基本语法
1 | calc(expression) |
其中 expression 是一个数学表达式,该表达式可以包含加(+)、减(-)、乘(*)、除(/)四种基本运算符,同时可以使用不同的长度单位,如 px、%、em、rem 等。需要注意的是,运算符前后必须有空格。
示例代码及解释
- 使用 calc() 进行宽度计算
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.parent {
width: 800px;
background-color: lightgray;
padding: 20px;
}
.child {
/* 子元素宽度为父元素宽度减去40px */
width: calc(100% - 40px);
background-color: lightblue;
height: 50px;
}
</style>
</head>
<body>
<div class="parent">
<div class="child"></div>
</div>
</body>
</html>
在上述代码中,.child 元素的宽度通过 calc(100% - 40px) 计算得出,即父元素宽度减去 40px。这样可以确保子元素在父元素内部有一定的左右边距。
- 使用 calc() 进行高度计算
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
html,
body {
height: 100%;
margin: 0;
}
.box {
/* 元素高度为视口高度的50%加上20px */
height: calc(50vh + 20px);
background-color: lightgreen;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
在这个例子中,.box 元素的高度通过 calc(50vh + 20px) 计算,即视口高度的 50% 再加上 20px。
注意事项
媒体查询
CSS 媒体查询是实现网页响应式设计的关键技术,它能让网页在不同设备和屏幕尺寸下都有良好的显示效果。以下从基础概念、语法、常见应用场景和注意事项等方面详细介绍 CSS 媒体查询的学习要点。
基础概念
媒体查询允许你根据设备的各种特性(如屏幕宽度、高度、分辨率、设备方向等)来应用不同的 CSS 样式。通过媒体查询,可以为不同的设备环境定制特定的样式规则,从而实现网页在多种设备上的自适应布局。
基本语法
1 | @media media_type and (media_feature) { |
media_type(媒体类型):指定适用的设备类型,常见值有:
all:适用于所有设备,是默认值。
screen:用于计算机屏幕、平板电脑、智能手机等。
print:用于打印机和打印预览。
speech:用于屏幕阅读器等语音合成设备。
media_feature(媒体特性):描述设备的具体特性,通常以括号包裹。常见的媒体特性有:
width、min-width 和 max-width:分别表示屏幕宽度、最小屏幕宽度和最大屏幕宽度。例如 (min-width: 768px) 表示屏幕宽度大于等于 768 像素。
height、min-height 和 max-height:分别表示屏幕高度、最小屏幕高度和最大屏幕高度。
orientation:表示设备的方向,值为 portrait(竖屏)或 landscape(横屏)。
逻辑运算符
可以使用逻辑运算符组合多个媒体特性或媒体类型,使查询条件更灵活:
and:
用于连接多个媒体特性,表示所有条件都必须满足。例如:
1 | @media screen and (min-width: 768px) and (max-width: 1023px) { |
上述代码表示在屏幕设备且宽度在 768px 到 1023px 之间时,将 body 元素的字体大小设置为 16px。
,(逗号):表示或的关系,只要其中一个条件满足即可。例如:
1 | @media screen and (max-width: 767px), print { |
这段代码表示在屏幕设备宽度小于等于 767px 或者在打印时,隐藏 sidebar 元素。
not:用于取反查询结果。例如:
1 | @media not screen and (min-width: 768px) { |
表示除了屏幕设备且宽度大于等于 768px 的情况外,应用这些样式。
常见应用场景
- 响应式布局
根据不同屏幕宽度调整页面布局。例如,在小屏幕设备上采用单列布局,大屏幕设备上采用多列布局:
1 | /* 小屏幕设备(宽度小于 768px) */ |
- 字体大小调整
在不同屏幕尺寸下调整字体大小以提高可读性:
1 | /* 小屏幕设备 */ |
- 图片显示优化
根据设备分辨率和屏幕大小显示不同尺寸的图片,节省带宽:
1 | /* 小屏幕设备 */ |
注意事项