Skip to content

A21. CSS基础语法 长度属性值

1.1. 🌟 HTML元素通过style属性添加内联样式

为什么要有CSS?随着HTML的日渐成熟,人们的审美要求提高,bi等简单元素已经不能满足人们的需求。为此,人们创建了font元素,用于设置字体大小、颜色等(现已弃用),用center元素表示居中(现已弃用)。

但人们很快发现,我们需要的样式(style)太多了,难道边距、边框、阴影、字体、动画……全都用HTML实现吗?这会导致HTML文件过于繁冗,内容与样式相互混杂,职责不够明确(即耦合)。

为了解决这个问题,引入一门新的语言——CSSCascading Style Sheet,层叠样式表)成为了最终的选择。

样式即style,与title类似,也是一个全局属性(Global Attribute),可以被用于几乎所有的HTML元素上。例如:

html
<div style="font-size: 32px;">Content</div>

以上代码将div元素的字体大小(可以粗略理解为单字符的高度)设置为了32像素。

像这样,通过向元素的style属性中添加CSS属性,就是CSS最基础的使用形式。

需要注意的语法有以下几点:

  1. 每一条属性以英文分号;结尾
  2. 每一条属性内部分为属性名(name)和属性值(value),中间由英文冒号:隔开,语法为name: value;

WARNING

把分号写成中文符号(;)或者多条属性间不写分号会导致样式失效

1.2. 🌟 pxemrem是常见的长度单位

就像“物理量”是物理的基础,“属性值”就是CSS的基础。

物理量由数值+单位构成,属性值也类似。甚至,10mm也是一个合法的CSS属性值。

我们已经学过,px(即像素,pixel)是计算机显示中最基础的单位。一般浏览器默认字体大小为 16px

px是一种绝对的大小。除此之外,CSS提供了两种相对的大小,emremem 源于排版术语,表示当前字体的尺寸rem 是“root em”的缩写,表示相对于根元素(root element,即 <html> 元素)的字体大小。

以下是几个例子,读者可以查看效果,解释已写在注释之内(我们借用 font-size 即字体大小属性向大家演示):

html
<!-- 示例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> 作为属性值:

html
<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> 作为属性值:

css
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>)的 widthheight 不生效,对于其他元素大多生效。

使用例如:

html
<div style="width: 200px; height: 100px; background-color: skyblue;">
  这是一个固定宽高的 div。
</div>

TIP

对于确定宽高的元素(块级元素的宽度也是确定的,默认为其父元素的100%),子元素可以使用百分比值。例如:

html
<div style="width: 100%; height: 100px; background-color: skyblue;">
  <div style="width: 75%; height: 50%; background-color: pink;">
</div>
例题:添加一个 500x200 的元素,在内部嵌套一个宽度占 50%,高度为 5 倍根元素字体大小的元素。

注:颜色仅用于区分元素边界。

html
<div style="width: 500px; height: 200px; background-color: green;">
  <div style="width: 50%; height: 5rem; background-color: blue;"></div>
</div>

WARNING

在父元素高度不定的情况下,不能使用height: xx%;,这会导致浏览器计算陷入循环,而导致样式失效。

知识回顾

  1. CSS 通过 style 属性添加内联样式,声明格式为 属性: 值;
  2. px 是绝对单位,em 基于父级字体大小,rem 基于根字体大小。
  3. font-size 控制文字尺寸,支持关键字(如 large)和长度值(如 20px)。
  4. width / height 对块级元素生效,可以使用长度值或百分比值。

课后练习

  1. (单选)以下哪个单位不受父元素和根元素字体大小影响? A. px B. em C. rem

  2. (填空)每一条CSS属性声明必须以____结尾。

  3. (计算)父元素的宽度为 150px,子元素(块级元素)设置样式 width: 50%;,则子元素的宽度为:____。

  4. (代码纠错)修复以下代码:

    html
    <div style="width 300px; height=200px; background-color: blue">
  5. (探究)设置 width: 80vw; 有什么奇特的效果?

  6. (情景分析)为什么设计师提供的设计稿通常使用px单位,而开发时建议使用rem?

Built by Vitepress | Apache 2.0 Licensed