第1章:CSS入门与样式美化

各位同学,咱们今天来聊聊CSS。说实话,我刚入行那会儿,觉得CSS就是给HTML「涂脂抹粉」的工具。后来才发现,这玩意儿才是决定页面好不好看、用户体验到不到位的关键。

CSS全称叫 Cascading Style Sheets,层叠样式表。名字挺长,但核心就一句话:控制HTML元素的呈现方式。你想想看,没有CSS的网页,就像没穿衣服的人——功能都在,但实在没法看。

1.1 CSS的三种引入方式

CSS怎么跟HTML结合?有三种方式。我个人的习惯是,小demo用内嵌,正式项目必须外链。但每种方式都有它的适用场景,咱们一个一个说。

1.1.1 行内样式

直接在HTML标签的 style 属性里写CSS。最直接,但也最不推荐。

<p style="color: red; font-size: 20px;">这段文字是红色的</p>

我在项目中遇到过,有些老系统为了快速修复样式,临时用行内样式打补丁。结果后来维护的时候,满屏都是 style="...",改一个颜色要翻十几个文件。嗯,那叫一个酸爽。

避坑指南:行内样式优先级最高,会覆盖其他所有样式。我曾经因为没注意这个,调试了整整两个小时才发现是行内样式在「捣乱」。

1.1.2 内嵌样式

在HTML的 <head> 里放一个 <style> 标签。适合单页面或小项目。

<head>
  <style>
    p {
      color: blue;
      font-size: 16px;
    }
  </style>
</head>

说白了,内嵌样式比行内好管理,但多个页面共享样式时就很尴尬——每个页面都得复制一遍。我刚开始做项目时就这么干过,后来被同事教育了。

1.1.3 外链样式

把CSS单独写成一个 .css 文件,用 <link> 引入。这是企业级项目的标准做法。

<head>
  <link rel="stylesheet" href="style.css">
</head>
我的建议:从第一天学CSS就养成用外链的习惯。一个文件管所有样式,改一处全局生效。这才是工程化的思维。

1.2 选择器:CSS的「寻址系统」

选择器就是告诉浏览器:「嘿,你要给哪个元素上样式?」。CSS提供了多种选择器,咱们先掌握最常用的三种。

1.2.1 标签选择器

直接拿HTML标签名当选择器。简单粗暴,但一竿子打翻一船人。

p {
  color: green;
}

h1 {
  font-size: 32px;
}

你想想看,如果页面上有10个 <p> 标签,用标签选择器会让它们全部变绿。有时候这正是我们想要的,但更多时候我们需要更精确的控制。

1.2.2 类选择器

. 开头,配合HTML的 class 属性。这是我最常用的选择器,没有之一。

.highlight {
  background-color: yellow;
  font-weight: bold;
}

.card {
  border: 1px solid #ccc;
  padding: 16px;
}
<p class="highlight">这段文字有黄色背景</p>
<div class="card">这是一个卡片容器</div>

类选择器可以复用,一个元素也可以有多个类。比如 class="card highlight",两个样式叠加生效。我在项目中经常用这种方式做组件化设计,灵活得很。

1.2.3 ID选择器

# 开头,配合HTML的 id 属性。记住:一个页面里,ID是唯一的

#header {
  background-color: #333;
  color: white;
  height: 60px;
}

#submit-btn {
  background-color: #007bff;
  color: white;
}
<div id="header">网站头部</div>
<button id="submit-btn">提交</button>
注意:ID选择器优先级比类选择器高。我曾经在项目中看到有人用ID做样式,结果想覆盖样式时发现权重太高,只能加 !important 来强行覆盖——那场面,简直是灾难。

1.3 常用属性:让页面「活」起来

掌握了选择器,咱们来看看能设置哪些样式。我挑几个最常用的说说。

1.3.1 颜色与字体

属性 作用 示例
color 文字颜色 color: #ff6600;
font-size 字体大小 font-size: 16px;
font-weight 字体粗细 font-weight: bold;
font-family 字体类型 font-family: "微软雅黑", sans-serif;
text-align 文字对齐 text-align: center;
p {
  color: #333;
  font-size: 14px;
  font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
  line-height: 1.8;
}

颜色这块,我建议用十六进制(比如 #ff6600)或者RGB(比如 rgb(255, 102, 0))。别用 redblue 这种英文单词——颜色选择太少,而且不同浏览器解析可能有细微差异。

1.3.2 背景样式

.banner {
  background-color: #f0f0f0;
  background-image: url('bg.png');
  background-size: cover;
  background-position: center;
}

背景属性可以组合使用。比如你想让一个区域有背景色,同时还有背景图,图没加载出来时颜色能兜底。我在项目中经常这么干,用户体验会好很多。

1.4 盒模型初探

盒模型是CSS的基石。说白了,每个HTML元素都是一个盒子。这个盒子由四部分组成:

  • 内容区(content):放文字、图片的地方
  • 内边距(padding):内容到边框的距离
  • 边框(border):盒子的边界线
  • 外边距(margin):盒子与其他元素的距离
.box {
  width: 200px;
  height: 100px;
  padding: 20px;
  border: 2px solid #333;
  margin: 10px;
}

你想想看,这个 .box 实际占用的宽度是多少?200 + 20*2 + 2*2 + 10*2 = 264px。很多新手在这里栽跟头——明明设了200px宽,怎么实际占了264px?

小技巧:box-sizing: border-box; 可以让padding和border算在width里面。这样你设200px,实际就是200px。我写项目时,几乎都会在全局加上这个属性。
* {
  box-sizing: border-box;
}

盒模型这东西,刚开始觉得抽象。但你只要记住一句话:每个元素都是一个盒子,盒子有内容、有填充、有边框、有间距。多写几个demo,自然就理解了。

小结

这一章咱们聊了CSS的三种引入方式、三种基础选择器、几个常用属性,还有盒模型的基本概念。说实话,这些内容看起来简单,但都是后面所有CSS知识的地基。地基打不牢,后面盖楼肯定歪。

下一章咱们会深入盒模型,聊聊那些让人头疼的边距合并、定位方式。到时候你会发现,CSS其实挺有意思的——只要你摸清了它的脾气。

公众号:蓝海资料掘金营,微信deep3321