核心内容摘要
最新秒收蜘蛛池出租市场动态及选择建议
百度的网站排名算法
CSS(Cascading Style Sheets,层叠样式表)是用于描述网页元素呈现样式的语言。它控制着网页的布局、颜色、字体、动画等视觉效果,与HTML(结构)和JavaScript(行为)共同构成现代网页开发的三大核心技术。下面我将从基础到进阶,系统地讲解CSS的各个方面。 定义:CSS是一种样式表语言,告诉浏览器应该如何显示HTML元素。 作用:将网页的内容(HTML)与表现(样式)分离,使维护更便捷、代码更清晰。 核心理念:选择某个或某些元素,然后为它们设置样式规则。 一个CSS规则由选择器和声明块组成: css 选择器 { 属性1: 值1; 属性2: 值2; } 选择器:指定要应用样式的HTML元素(如 、、)。 声明块:用花括号 包裹,包含一条或多条声明。 声明:每条声明由属性和值组成,用冒号 分隔,以分号 结尾。 示例: css p { color: red; font-size: 16px; } 此规则会将所有 元素的文字颜色设为红色,字号设为16像素。 有三种方式将CSS应用到HTML: 内联样式:直接写在HTML元素的 属性中。 html
蓝色文字
缺点:样式与内容耦合,难以复用,不推荐大量使用。 内部样式表:在HTML文档的 中使用 标签定义。 html 外部样式表:将CSS代码保存在独立的 文件中,然后在HTML中用 引入。 html 这是最推荐的方式,利于维护、缓存和复用。 选择器是CSS的核心,用来精准定位元素。 1. 基础选择器 元素选择器:、、 等。 类选择器:,可重复使用。 ID选择器:,每个ID在页面中应唯一。 通配选择器:,匹配所有元素。 2. 属性选择器 :含有指定属性的元素。 :属性等于特定值。 :属性值以指定字符串开头。 :属性值以指定字符串结尾。 :属性值包含指定字符串。 示例: css input[type="text"] { border: 1px solid gray; } a[href^="https"] { color: green; } 3. 组合器 后代选择器(空格): 选择 内部所有 。 子选择器(): 选择 的直接子元素 。 相邻兄弟选择器(): 选择紧接在 后的第一个 。 通用兄弟选择器(): 选择 后面所有兄弟 。 4. 伪类 用于定义元素的特殊状态,以冒号 开头。 动态伪类:(鼠标悬停)、(激活)、(获得焦点)。 结构伪类:、、、。 表单伪类:、、。 否定伪类:。 示例: css a:hover { text-decoration: underline; } li:first-child { font-weight: bold; } 5. 伪元素 用于创建并样式化元素的特定部分,以双冒号 开头(CSS3规范,但单冒号也兼容)。 :在元素内容前插入生成的内容。 :在元素内容后插入生成的内容。 :选择块级元素的第一行。 :选择块级元素的首字母。 :选择用户选中的部分。 示例: css p::first-line { text-transform: uppercase; } .quote::before { content: "“"; } 1. 层叠 CSS的“C”代表层叠,意思是当多条规则应用于同一元素时,按照一定规则决定最终样式。规则来源包括: 用户代理样式(浏览器默认样式) 用户样式(用户自定义) 作者样式(开发者写的CSS) 2. 优先级(特异性) 选择器的优先级决定了哪条规则胜出。优先级权重计算(粗略): 内联样式:1000 ID选择器:100 类、伪类、属性选择器:10 元素、伪元素选择器:1 通配符 和组合器(+ > ~ 空格)不增加权重。 权重相加比较,数值大的胜出。如果权重相同,后定义的规则覆盖前面的。 示例: css #nav .list li a {} /* 100 + 10 + 1 + 1 = 112 */ .menu a:hover {} /* 10 + 1 + 10 = 21 */ !important:写在属性值后,可以覆盖所有优先级,应谨慎使用。 css p { color: red !important; } 3. 继承 某些CSS属性可以被子元素继承,如 、,而像 、 等则不会。可以使用 关键字强制继承, 重置为初始值, 根据属性是否可继承分别处理。 每个HTML元素都可以看作一个矩形盒子,包含四个部分: 内容(content):显示文本或图像的区域。 内边距(padding):内容与边框之间的透明区域。 边框(border):围绕内边距的线。 外边距(margin):盒子与其他元素之间的空白区域。 https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Building_blocks/The_box_model/box-model.png box-sizing 属性影响盒子的宽高计算: (默认):width/height 只包含内容区域。 :width/height 包含内容、内边距和边框(不包含外边距),更符合直觉,常被全局设置。 css * { box-sizing: border-box; } 1. display 属性 :块级元素,独占一行,可设置宽高(如div、p)。 :内联元素,不换行,宽高由内容决定(如span、a)。 :内联块,不换行但可设宽高。 :隐藏元素,不占位(与 不同,后者隐藏但占位)。 :弹性盒布局(下文详述)。 :网格布局。 2. 定位(position) :默认,元素按正常文档流排列。 :相对定位,相对于其正常位置偏移,原占位保留。 :绝对定位,相对于最近的非 祖先元素定位,脱离文档流。 :固定定位,相对于视口,滚动时不变。 :粘性定位,在特定阈值前为相对定位,之后为固定定位。 配合 、、、 使用。 3. 浮动(float) :使元素向左或向右浮动,后续内容环绕。 浮动元素脱离文档流,可能导致父容器高度塌陷,需清除浮动: 使用 。 父容器触发 BFC(如 )。 使用伪元素 。 1. Flexbox(弹性盒) 一维布局模型,适合处理行或列方向的排列。 容器属性: 。 :主轴方向(row | column)。 :主轴对齐(flex-start | flex-end | center | space-between | space-around)。 :交叉轴对齐(stretch | flex-start | flex-end | center | baseline)。 :是否换行。 :多行内容在交叉轴上的对齐方式。 项目属性: :放大比例,默认0。 :缩小比例,默认1。 :项目在主轴上占据的空间。 :是 grow、shrink、basis 的简写。 :覆盖容器的 。 示例:经典居中 css .container 2. Grid(网格) 二维布局模型,将容器划分为行和列。 容器属性: 。 / :定义列宽和行高(可使用 px、%、fr 单位)。 :行列间距。 / :控制单元格内内容的对齐。 :通过命名区域布局。 项目属性: / :指定项目占据的列/行范围(如 或 )。 :指定项目所在的区域名。 示例:三列等宽布局 css .container { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 20px; } 让网页在不同设备(手机、平板、桌面)上都能良好显示。 1. 视口(viewport) 在HTML中设置: html 2. 媒体查询(media queries) 根据设备特性(如宽度、分辨率)应用不同样式。 css @media (max-width: 768px) { body { background-color: lightblue; } } 常用断点: 等。 3. 相对单位 :相对于当前元素的字号。 :相对于根元素(html)的字号,便于全局控制。 / :视口宽度的1% / 视口高度的1%。 :百分比,通常相对于父元素。 使用 让图片自适应容器。 4. 弹性布局 结合 Flexbox/Grid 和媒体查询,实现自适应。 1. 文本样式 :文字颜色。 :字体。 :字号。 :粗细。 :行高。 :水平对齐。 :下划线等。 :大小写转换。 2. 背景 。 。 。 。 : 或 。 简写 。 3. 边框与圆角 :宽度、样式、颜色。 :圆角。 :盒子阴影(水平偏移、垂直偏移、模糊半径、颜色)。 4. 列表 :标记类型。 :标记位置。 5. 表格 :合并边框。 :标题位置。 1. 过渡(transition) 平滑改变CSS属性值。 css .box { width: 100px; transition: width 0.5s ease; } .box:hover { width: 200px; } 属性:、、、。 2. 变换(transform) 旋转、缩放、移动、倾斜元素。 。 。 。 可组合使用。 3. 动画(animation) 通过关键帧(keyframes)定义复杂动画。 css @keyframes slidein { from { transform: translateX(0%); } to { transform: translateX(100%); } } .box { animation: slidein 3s ease infinite; } 动画属性:、、、、、、。 预处理器扩展了CSS,提供变量、嵌套、混合、函数等,提高开发效率。 Sass/SCSS:最流行, 文件。 scss $primary-color: #333; body { color: $primary-color; nav { background: lighten($primary-color, 20%); } } Less:类似Sass,使用 定义变量。 Stylus:更简洁灵活。 使用预处理器需要编译为普通CSS才能在浏览器运行。 命名规范:采用 BEM(Block__Element--Modifier)等,避免冲突,提高可维护性。 css .card {} .card__title {} .card__button--primary {} 避免过度使用 !important,合理利用优先级。 减少重绘和重排:使用 和 做动画,避免频繁操作布局属性。 精简CSS:使用工具(如PurgeCSS)移除未使用的样式。 考虑移动优先:先写移动端样式,再用媒体查询增强桌面端。 使用CSS变量(自定义属性):便于主题切换和动态更新。 css :root { --main-color: #06c; } .button { background-color: var(--main-color); } CSS是一门既简单又深奥的语言。基础部分易于上手,但要精通布局、响应式、动画以及工程化实践,需要持续学习与练习。随着Web技术的发展,CSS新特性(如子网格、容器查询、层叠层等)不断涌现,让前端样式控制更加强大和灵活。掌握CSS是成为合格前端开发者的必经之路,也是构建优雅用户体验的基石。