当前位置:首页 > 技术 > 正文内容

CSS层叠样式表核心知识

访客 技术 2026年7月15日 1

CSS基础概念

CSS(层叠样式表)用于控制HTML标签的视觉呈现。要有效使用CSS,需要掌握两个核心能力:精准选择目标标签,以及灵活调整样式属性。

基础语法结构

选择器 {
    属性名1: 属性值1 属性值2;
    属性名2: 属性值;
}
/* 单行注释 */
/* 多行注释 */

CSS引入方式

  1. 内部样式表(开发练习常用):
    <head>
        <style>
            p { color: green; }
        </style>
    </head>
    
  2. 外部样式表(生产推荐):
    <head>
        <link rel="stylesheet" href="styles.css">
    </head>
    
  3. 内联样式(不推荐):
    <div style="color: green;">内容</div>
    

CSS选择器详解

基本选择器

HTML标签可通过类型、id属性和class属性来区分:

  • id:页面唯一标识,每个id只能使用一次
  • class:可重复使用,一个标签可包含多个class值,用于分组
选择器类型 语法示例
标签选择器 p
ID选择器 #header
类选择器 .highlight
通用选择器 *

通用选择器常用于重置默认样式:

.highlight {
    color: green;
}
#header {
    background-color: yellow;
}

组合选择器

当需要精确选择特定上下文中的元素时,可以使用组合选择器:

类型 语法 说明
后代选择器 div p 选择div内所有p元素
子元素选择器 div > p 选择div的直接子p元素
相邻兄弟选择器 div + p 选择紧接div后的p元素
通用兄弟选择器 div ~ p 选择div后面的所有p元素
<div id="content">
    <p>第一行</p>
    <p>第二行 <span>[内嵌span]</span></p>
    <p>第三行</p>
    非段落文本
    <p>第四行</p>
    <p>第五行</p>
    <div><p>嵌套段落</p></div>
</div>
<p>外部段落1</p>
<p>外部段落2</p>
<span class="highlight extra">额外标签</span>

分组与嵌套

  • 分组:使用逗号分隔多个选择器,为它们应用相同样式
  • 嵌套:在选择器后附加类选择器进行筛选
/* 分组示例 */
h1, p, .highlight {
    font-weight: bold;
}

/* 嵌套示例 */
div.highlight {
    background-color: #f0f0f0;
}

/* 综合使用 */
#content p.special {
    color: red;
}

属性选择器

/* 匹配包含username属性的元素 */
[username] {
    border: 1px solid blue;
}

/* 匹配username属性值为admin的元素 */
[username='admin'] {
    background-color: lightblue;
}

/* 匹配拥有username属性的div元素 */
div[username] {
    padding: 10px;
}

伪类选择器

用于定义元素的特殊状态:

/* 链接状态 */
a:link { color: #FF0000; }
a:hover { color: #FF00FF; }
a:active { color: #0000FF; }
a:visited { color: #00FF00; }

/* 输入框焦点 */
input:focus {
    background-color: lightyellow;
    outline: 2px solid blue;
}

伪元素选择器

用于向元素添加特殊效果:

/* 首字母样式 */
p::first-letter {
    font-size: 48px;
    color: red;
}

/* 在内容前插入内容 */
p::before {
    content: "★ ";
    color: gold;
}

/* 在内容后插入内容 */
p::after {
    content: " [?]";
    color: blue;
}

注意:通过伪元素插入的内容不可被用户选中。

选择器优先级

  • 同级选择器:遵循就近原则,后定义的样式覆盖先定义的
  • 不同级选择器:优先级从高到低为:内联样式 > ID选择器 > 类选择器 > 标签选择器
<head>
    <style>
        #unique { color: blue; }      /* 最高优先级 */
        .group { color: red; }         /* 中等优先级 */
        div { color: yellow; }         /* 最低优先级 */
    </style>
</head>
<body>
    <div id="unique" class="group" style="color: green;">内联样式优先</div>
</body>

CSS样式属性

字体与文本样式

属性 示例值 说明
font-size 16px 字体大小
font-weight bold 字体粗细
color #333 文字颜色
text-align center 文本对齐方式
text-decoration none 文本装饰(常用于移除链接下划线)
text-indent 2em 首行缩进

颜色取值方式

  • 颜色名称redgreen
  • 十六进制#FF0000
  • RGB/RGBArgb(255, 0, 0)rgba(255, 0, 0, 0.5)

背景属性

div {
    width: 800px;
    height: 600px;
    background-color: #f0f0f0;
    background-image: url('bg.jpg');
    background-repeat: no-repeat;
    background-position: center center;
    background-size: cover;
    
    /* 简写形式 */
    background: #f0f0f0 url('bg.jpg') no-repeat center/cover;
}

隐藏元素

  • display: none:完全隐藏元素,不占据空间
  • visibility: hidden:隐藏元素,但保留占位空间

边框属性

/* 完整边框设置 */
.box {
    border-width: 2px;
    border-style: solid;
    border-color: #333;
    border-radius: 8px;
    
    /* 简写 */
    border: 2px solid #333;
    border-radius: 50%;  /* 圆形效果 */
}

/* 单边设置 */
.box-left {
    border-left: 5px solid red;
}

/* 多边统一设置 */
.box-multi {
    border-width: 5px 10px;      /* 上下 左右 */
    border-style: dashed solid;
    border-color: blue green red yellow;  /* 上 右 下 左 */
}

盒子模型

每个HTML元素都可视为一个盒子,包含:

  • content:实际内容区域
  • padding:内边距(内容与边框的距离)
  • border:边框
  • margin:外边距(元素间的距离)
/* margin和padding统一设置 */
.element {
    margin: 20px;            /* 四边相同 */
    margin: 20px 10px;       /* 上下 左右 */
    margin: 20px 10px 5px;   /* 上 左右 下 */
    margin: 20px 10px 5px 0; /* 上 右 下 左 */
    
    padding: 15px;
    
    /* 水平居中 */
    margin: 20px auto;
}

盒子模型对齐规则

  • 相邻盒子的margin不叠加,取较大值
  • 嵌套盒子的margin和padding不叠加,取较大值

浮动布局

浮动用于实现块级元素的左右排列布局。但会导致父元素塌陷。

.left {
    float: left;
    width: 50%;
}
.right {
    float: right;
    width: 50%;
}

/* 清除浮动 - 解决塌陷问题 */
.clearfix::after {
    content: '';
    display: block;
    clear: both;
}

溢出处理

.container {
    width: 200px;
    height: 200px;
    overflow: hidden;    /* 隐藏溢出内容 */
    /* overflow: scroll; */  /* 显示滚动条 */
    /* overflow: auto; */    /* 需要时显示滚动条 */
}

/* 圆形头像效果 */
.avatar {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    overflow: hidden;
}
.avatar img {
    max-width: 100%;
}

定位属性

定位类型 属性值 特点
静态定位 static 默认值,按正常文档流排列
相对定位 relative 相对于自身原位置偏移,保留原占位空间
绝对定位 absolute 相对于最近已定位父元素偏移,不占文档流
固定定位 fixed 相对于浏览器窗口固定,不占文档流
/* 相对定位 */
.relative-box {
    position: relative;
    top: 20px;
    left: 30px;
}

/* 绝对定位 */
.absolute-box {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);  /* 居中 */
}

/* 固定定位 - 回到顶部按钮 */
.back-to-top {
    position: fixed;
    bottom: 30px;
    right: 30px;
    z-index: 1000;
}

层叠顺序 (z-index)

z-index控制元素的堆叠顺序,值越大的元素越靠上显示:

.modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 999;
}

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。