A21. CSS基础语法 长度属性值
1.1. 🌟 HTML元素通过style
属性添加内联样式
为什么要有CSS?随着HTML的日渐成熟,人们的审美要求提高,
b
、i
等简单元素已经不能满足人们的需求。为此,人们创建了font
元素,用于设置字体大小、颜色等(现已弃用),用center
元素表示居中(现已弃用)。但人们很快发现,我们需要的样式(style)太多了,难道边距、边框、阴影、字体、动画……全都用HTML实现吗?这会导致HTML文件过于繁冗,内容与样式相互混杂,职责不够明确(即耦合)。
为了解决这个问题,引入一门新的语言——CSS(Cascading Style Sheet,层叠样式表)成为了最终的选择。
样式即style
,与title
类似,也是一个全局属性(Global Attribute),可以被用于几乎所有的HTML元素上。例如:
<div style="font-size: 32px;">Content</div>
以上代码将div
元素的字体大小(可以粗略理解为单字符的高度)设置为了32像素。
像这样,通过向元素的style
属性中添加CSS属性,就是CSS最基础的使用形式。
需要注意的语法有以下几点:
- 每一条属性以英文分号
;
结尾。 - 每一条属性内部分为属性名(name)和属性值(value),中间由英文冒号
:
隔开,语法为name: value;
。
WARNING
把分号写成中文符号(;)或者多条属性间不写分号会导致样式失效!
1.2. 🌟 px
、em
、rem
是常见的长度单位
就像“物理量”是物理的基础,“属性值”就是CSS的基础。
物理量由数值+单位构成,属性值也类似。甚至,
10mm
也是一个合法的CSS属性值。
我们已经学过,px
(即像素,pixel)是计算机显示中最基础的单位。一般浏览器默认字体大小为 16px
。
px
是一种绝对的大小。除此之外,CSS
提供了两种相对的大小,em
和 rem
。em
源于排版术语,表示当前字体的尺寸;rem
是“root em”的缩写,表示相对于根元素(root element,即 <html>
元素)的字体大小。
以下是几个例子,读者可以查看效果,解释已写在注释之内(我们借用 font-size
即字体大小属性向大家演示):
<!-- 示例1:使用px设置字体大小 -->
<p style="font-size: 24px;">这是一段24像素字体大小的文字</p>
<!-- 示例2:使用em设置字体大小 -->
<div style="font-size: 24px;">
<p style="font-size: 1.5em;">这是一段1.5倍于父元素字体大小的文字</p>
</div>
<!-- 示例3:使用rem设置字体大小 -->
<div style="font-size: 24px;">
<p style="font-size: 1.5rem;">这是一段1.5倍于<b>根元素</b>字体大小的文字</p>
</div>
TIP
当下前端主流使用 rem
控制字体大小和宽高,达到较好的自适应效果。
主要因为 em
受父元素影响,层层嵌套较为复杂;px
决定了绝对尺寸,无法根据用户设置的浏览器默认字体大小进行精确控制。
1.3. font-size
属性控制字体大小
在上一个例子里也已出现,
font-size
如同其字面意义控制字体的大小。它的属性值一般为一个长度<length>
。除此之外,还可以取<absolute-size>
值,更加直观。
以下为 <length>
作为属性值:
<div style="font-size: 24px;">Text here</div>
<div style="font-size: 1.5rem;">Text here</div>
<div style="font-size: 1.5em;">Text here</div>
以下为 <absolute-size>
作为属性值:
font-size: xx-small;
font-size: x-small;
font-size: small;
font-size: medium;
font-size: large;
font-size: x-large;
font-size: xx-large;
font-size: xxx-large;
读者可以尝试上述属性值,查看效果。
1.4. 🌟 width
属性与height
属性控制部分元素的宽高
在任何用户界面(UI)开发中,我们最关心的就是元素显示的位置与大小。在计算机图形界面中我们常用一个宽(横向)为
width
,高(纵向)为height
的长方形描述一个元素在界面占用的空间。
注意:行内元素(如 <span>
)的 width
和 height
不生效,对于其他元素大多生效。
使用例如:
<div style="width: 200px; height: 100px; background-color: skyblue;">
这是一个固定宽高的 div。
</div>
TIP
对于确定宽高的元素(块级元素的宽度也是确定的,默认为其父元素的100%
),子元素可以使用百分比值。例如:
<div style="width: 100%; height: 100px; background-color: skyblue;">
<div style="width: 75%; height: 50%; background-color: pink;">
</div>
例题:添加一个 500x200 的元素,在内部嵌套一个宽度占 50%,高度为 5 倍根元素字体大小的元素。
注:颜色仅用于区分元素边界。
<div style="width: 500px; height: 200px; background-color: green;">
<div style="width: 50%; height: 5rem; background-color: blue;"></div>
</div>
WARNING
在父元素高度不定的情况下,不能使用height: xx%;
,这会导致浏览器计算陷入循环,而导致样式失效。
知识回顾
- CSS 通过
style
属性添加内联样式,声明格式为属性: 值;
。 px
是绝对单位,em
基于父级字体大小,rem
基于根字体大小。font-size
控制文字尺寸,支持关键字(如large
)和长度值(如20px
)。width
/height
对块级元素生效,可以使用长度值或百分比值。
课后练习
(单选)以下哪个单位不受父元素和根元素字体大小影响? A.
px
B.em
C.rem
(填空)每一条CSS属性声明必须以____结尾。
(计算)父元素的宽度为
150px
,子元素(块级元素)设置样式width: 50%;
,则子元素的宽度为:____。(代码纠错)修复以下代码:
html<div style="width 300px; height=200px; background-color: blue">
(探究)设置
width: 80vw;
有什么奇特的效果?(情景分析)为什么设计师提供的设计稿通常使用px单位,而开发时建议使用rem?