Skip to content

CSS单位与值

在CSS中,单位和值是定义样式的基础。它们决定了元素的大小、颜色、间距等视觉属性。理解和正确使用这些单位和值对于创建响应式、美观的网页设计至关重要。本文将详细介绍CSS中常用的单位和值,并通过实例展示它们的应用。

长度单位

CSS提供了多种长度单位,可以分为绝对单位和相对单位。

绝对长度单位

绝对长度单位是固定的,不会随着其他相关元素的尺寸变化而变化。

像素 (px)

像素是最常用的绝对单位,直接对应于屏幕上的像素点。

html
<div class="pixel-demo">
  <div class="box">100px × 100px</div>
</div>

<style>
.pixel-demo .box {
  width: 100px;
  height: 100px;
  background-color: #3498db;
  color: white;
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: center;
}
</style>
100px × 100px

相对长度单位

相对长度单位会根据其他元素的尺寸进行调整,更适合响应式设计。

em

em单位相对于元素的字体大小。如果用于font-size属性,它会相对于父元素的字体大小。

html
<div class="em-demo">
  <p>默认大小的文本</p>
  <p class="large">1.5em 大小的文本</p>
  <div class="nested">
    <p>嵌套元素中的文本</p>
    <p class="large">嵌套元素中 1.5em 大小的文本</p>
  </div>
</div>

<style>
.em-demo {
  font-size: 16px;
}
.em-demo .large {
  font-size: 1.5em;
}
.em-demo .nested {
  font-size: 2em;
}
</style>

默认大小的文本

1.5em 大小的文本

嵌套元素中的文本

嵌套元素中 1.5em 大小的文本

rem

rem单位相对于根元素(通常是<html>)的字体大小。这使得它在创建一致的布局时非常有用。

html
<div class="rem-demo">
  <p>默认大小的文本</p>
  <p class="large">1.5rem 大小的文本</p>
  <div class="nested">
    <p>嵌套元素中的文本</p>
    <p class="large">嵌套元素中 1.5rem 大小的文本</p>
  </div>
</div>

<style>
:root {
  font-size: 16px;
}
.rem-demo .large {
  font-size: 1.5rem;
}
.rem-demo .nested {
  font-size: 2rem;
}
</style>

默认大小的文本

1.5rem 大小的文本

嵌套元素中的文本

嵌套元素中 1.5rem 大小的文本

视口单位 (vw, vh, vmin, vmax)

视口单位相对于浏览器的视口尺寸。

  • vw: 视口宽度的1%
  • vh: 视口高度的1%
  • vmin: vwvh中的较小值
  • vmax: vwvh中的较大值
html
<div class="viewport-demo">
  <div class="box vw">50vw 宽</div>
  <div class="box vh">50vh 高</div>
</div>

<style>
.viewport-demo .box {
  background-color: #e74c3c;
  color: white;
  margin: 10px 0;
  padding: 10px;
}
.viewport-demo .vw {
  width: 50vw;
}
.viewport-demo .vh {
  height: 50vh;
}
</style>
50vw 宽
50vh 高

颜色值

CSS提供了多种定义颜色的方式。

关键字

CSS预定义了一些颜色关键字,如redbluegreen等。

十六进制

使用#后跟6位或3位十六进制数字表示颜色。

RGB 和 RGBA

使用rgb()rgba()函数定义颜色,其中a表示透明度。

HSL 和 HSLA

使用hsl()hsla()函数定义颜色,基于色相、饱和度和亮度。

html
<div class="color-demo">
  <div class="box keyword">红色关键字</div>
  <div class="box hex">#00FF00</div>
  <div class="box rgb">RGB(0, 0, 255)</div>
  <div class="box rgba">RGBA(255, 0, 0, 0.5)</div>
  <div class="box hsl">HSL(120, 100%, 50%)</div>
  <div class="box hsla">HSLA(240, 100%, 50%, 0.5)</div>
</div>

<style>
.color-demo .box {
  width: 150px;
  height: 50px;
  margin: 10px;
  display: flex;
  justify-content: center;
  align-items: center;
  color: white;
  text-align: center;
}
.color-demo .keyword { background-color: red; }
.color-demo .hex { background-color: #00FF00; }
.color-demo .rgb { background-color: rgb(0, 0, 255); }
.color-demo .rgba { background-color: rgba(255, 0, 0, 0.5); }
.color-demo .hsl { background-color: hsl(120, 100%, 50%); }
.color-demo .hsla { background-color: hsla(240, 100%, 50%, 0.5); }
</style>
红色关键字
#00FF00
RGB(0, 0, 255)
RGBA(255, 0, 0, 0.5)
HSL(120, 100%, 50%)
HSLA(240, 100%, 50%, 0.5)

百分比

百分比值通常相对于父元素的尺寸。

html
<div class="percentage-demo">
  <div class="parent">
    父元素
    <div class="child">子元素 (50% 宽, 50% 高)</div>
  </div>
</div>

<style>
.percentage-demo .parent {
  width: 200px;
  height: 200px;
  background-color: #3498db;
  color: white;
  padding: 10px;
}
.percentage-demo .child {
  width: 50%;
  height: 50%;
  background-color: #e74c3c;
  display: flex;
  justify-content: center;
  align-items: center;
}
</style>
父元素
子元素 (50% 宽, 50% 高)

特殊值

CSS还包括一些特殊值,如autoinheritinitialunset

html
<div class="special-values-demo">
  <div class="parent">
    <div class="child auto">Auto 宽度</div>
    <div class="child inherit">继承颜色</div>
    <div class="child initial">初始字体大小</div>
    <div class="child unset">Unset 边框</div>
  </div>
</div>

<style>
.special-values-demo .parent {
  width: 300px;
  color: blue;
  font-size: 20px;
  border: 2px solid black;
  padding: 10px;
}
.special-values-demo .child {
  margin: 5px 0;
  padding: 5px;
  background-color: #f1c40f;
}
.special-values-demo .auto { width: auto; }
.special-values-demo .inherit { color: inherit; }
.special-values-demo .initial { font-size: initial; }
.special-values-demo .unset { border: unset; }
</style>
Auto 宽度
继承颜色
初始字体大小
Unset 边框

calc() 函数

calc()函数允许在CSS中进行数学计算,甚至可以混合不同的单位。

html
<div class="calc-demo">
  <div class="box">
    宽度为视口宽度的50%减去100px
  </div>
</div>

<style>
.calc-demo .box {
  width: calc(50vw - 100px);
  height: 100px;
  background-color: #9b59b6;
  color: white;
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: center;
  padding: 10px;
}
</style>
宽度为视口宽度的50%减去100px

结论

CSS单位和值是构建网页样式的基础。通过灵活运用这些单位和值,我们可以创建出响应式、美观且功能丰富的网页设计。从固定的像素到灵活的视口单位,从简单的颜色关键字到复杂的HSL值,CSS提供了丰富的选择来满足各种设计需求。

在实际开发中,选择合适的单位和值取决于具体的设计需求和目标设备。例如,在响应式设计中,相对单位和视口单位通常比固定单位更受青睐。而在处理颜色时,RGBA和HSLA提供了更灵活的透明度控制。

在处理布局时,百分比和calc()函数可以创建更动态和适应性强的设计。特殊值如inheritinitialunset则在处理样式继承和重置时非常有用。

最后,熟练掌握这些单位和值,并了解它们的适用场景,将极大地提升你的CSS编写效率和网页设计能力。随着Web技术的不断发展,保持对新单位和值的关注也很重要,如CSS变量(自定义属性)等新特性的出现,为样式定义带来了更多的可能性。

通过不断实践和探索,你将能够更好地利用CSS单位和值来创造出独特、高效且用户友好的Web界面。

CSDN博主 大宝贱 的个人博客