CSS学习
<h1 class="md-end-block md-heading"><span class="md-plain md-expand">Web-CSS-Study</span></h1><p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<p class="md-end-block md-p"><span class="md-tag md-raw-inline"><u><span class="md-plain"> 作者:jason-wrj <span class="md-tag md-raw-inline"></u></span></span></span></p>
<p class="md-end-block md-p"><span class="md-tag md-raw-inline"><u><span class="md-plain"> 分类:服务器/网络服务器/CSS <span class="md-tag md-raw-inline"></u></span></span></span></p>
<p class="md-end-block md-p"><span class="md-tag md-raw-inline"><u><span class="md-plain"> 标签:Server, Web Server, CSS <span class="md-tag md-raw-inline"></u></span></span></span></p>
<p class="md-end-block md-p"><span class="md-tag md-raw-inline"><u><span class="md-plain"> 更多:<span class="md-meta-i-cmd-link"><span class="md-plain">www.dioit.com——迪欧IT——dio智能科技</span><span class="md-plain"> <span class="md-tag md-raw-inline"></u></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-tag md-raw-inline"><u><span class="md-plain"> 更多:<span class="md-meta-i-cmd-link"><span class="md-plain">www.dioit.com——dioIT——嵌入式电子智能技术</span><span class="md-plain"> <span class="md-tag md-raw-inline"></u></span></span></span></span></span></p>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">1 概述</span></h2>
<h3 class="md-end-block md-heading"><span class="md-plain">1.1 CSS 的基本概念</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> CSS(<span class="md-pair-s "><strong>C</strong><span class="md-plain">ascading <span class="md-pair-s "><strong>S</strong><span class="md-plain">tyle <span class="md-pair-s "><strong>S</strong><span class="md-plain">heets,层叠样式表)是一种用于描述HTML或XML(包括 SVG、XHTML 等)网页结构化文档(<span class="md-pair-s "><strong>外观和格式视觉表现</strong><span class="md-plain">)呈现方式的样式表语言,由W3C制定标准。</span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain"> CSS 通过定义网页元素的字体、间距、颜色、布局、动画等外观视觉属性,<span class="md-pair-s "><strong>控制网页内容外观和布局</strong><span class="md-plain">,实现网页美化。</span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain"> CSS 通过将样式与内容分离,使得网页设计更加灵活、高效,并支持动态变化的布局和交互效果。</span></p>
<p class="md-end-block md-p"><span class="md-plain"> CSS 是现代网页设计(<span class="md-pair-s "><strong>前端开发</strong><span class="md-plain">)的核心技能之一,通过实践和参考优秀案例可以快速掌握。</span></span></span></p>
<h3 class="md-end-block md-heading"><span class="md-plain">1.2 CSS 的发展历程</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>1994年</strong><span class="md-plain">:由哈坤·利(Håkon Wium Lie)首次提出,旨在解决HTML样式与内容混杂导致的代码臃肿问题。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>1996年</strong><span class="md-plain">:CSS1成为W3C推荐标准,支持基础样式控制。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>1998年</strong><span class="md-plain">:CSS2增加浮动、定位等复杂布局功能。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>2010年</strong><span class="md-plain">:CSS3引入圆角、阴影、动画等现代特性,与HTML5共同成为网页开发主流。</span></span></p>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">1.3 CSS 的版本演进</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>CSS3</strong><span class="md-plain">:当前主流版本,模块化引入弹性布局、动画、媒体查询等功能。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>向后兼容</strong><span class="md-plain">:新特性在不支持的老浏览器中可平稳降级。</span></span></p>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">1.4 CSS 的应用场景</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>网页设计</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">网页视觉美化(字体、颜色、背景)。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">构建响应式网站,适配不同设备(手机、平板、桌面)。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">动态交互效果(悬停、点击反馈)。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">打印样式优化(<span class="md-pair-s"><code>@media print</code><span class="md-plain">)。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">组件化开发(配合CSS-in-JS或CSS Modules)。</span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>实现复杂的 UI 组件</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">如导航栏、卡片布局、模态框。</span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>主题与样式库</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">开发可复用的 UI 框架(如 Bootstrap、Tailwind CSS)。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">动态切换主题(如暗色模式)。</span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>性能优化</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">使用 CSS 压缩工具减少文件体积。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">利用缓存策略提升加载速度。</span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>国际化与无障碍</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">通过逻辑属性支持多语言排版(如阿拉伯语的 RTL 布局)。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">确保样式兼容屏幕阅读器。</span></p>
</li>
</ul>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">1.5 CSS 的核心特点</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>分离性</strong></span></p>
<p class="md-end-block md-p"><span class="md-pair-s "><strong>内容与表现</strong><span class="md-plain">分离,HTML 专注结构,CSS 控制样式,便于维护和协作。CSS 将样式与 HTML 结构分离,提升代码可维护性。修改样式无需调整 HTML 结构,只需更新 CSS 文件。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>层叠性</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">多个样式规则可叠加作用于同一元素,按优先级(如<span class="md-pair-s"><code>!important</code><span class="md-plain">> 内联样式 > ID 选择器 > 类选择器 > 标签选择器)确定最终效果。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>继承性</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">父元素的样式(如字体、颜色)可自动传递到子元素,减少重复代码。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>响应式设计</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">通过媒体查询(Media Queries)适配不同设备屏幕(如手机、电脑),实现自适应布局。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>精准控制</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">像素级调整元素位置、大小、边框等。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>样式复用</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">一套样式可应用于多个页面,减少重复代码。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>性能优化</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">支持外部样式表缓存,减少重复代码加载。 </span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>丰富效果</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">支持渐变、圆角、阴影、动画等现代视觉特性(CSS3)。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>可扩展性</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">通过预处理器(如 Sass/Less)或后处理器(如PostCSS)增强功能。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>跨浏览器一致性</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">通过标准化属性(如 <span class="md-pair-s"><code>display: flex</code><span class="md-plain">)减少样式差异。</span></span></span></p>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">1.6 CSS 的功能作用</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>控制网页外观</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>颜色表示</strong><span class="md-plain">:支持十六进制(如 <span class="md-pair-s"><code>#FFFF00</code><span class="md-plain"> 表示黄色)、RGB 等格式。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>文本样式</strong><span class="md-plain">:字体、颜色、对齐方式。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>排版控制</strong><span class="md-plain"> :可以精确地设置字体、字号、行距、字距等排版属性,实现丰富的文本排版效果,如不同的字体样式、大小写转换、文本阴影等。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>外观美化</strong><span class="md-plain"> :可设置元素的颜色、背景图像、边框样式、圆角、阴影等外观属性,使网页更具视觉吸引力。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>实现复杂的布局</strong><span class="md-plain">((Flexbox)弹性盒子、(Grid)网格布局、响应式设计)。</span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>布局设计</strong><span class="md-plain"> :通过定位属性(如 <span class="md-pair-s"><code>position</code><span class="md-plain">)、盒模型(<span class="md-pair-s"><code>margin</code><span class="md-plain">、<span class="md-pair-s"><code>padding</code><span class="md-plain">、<span class="md-pair-s"><code>border</code><span class="md-plain">、<span class="md-pair-s"><code>width</code><span class="md-plain">、<span class="md-pair-s"><code>height</code><span class="md-plain"> 等)以及弹性布局(<span class="md-pair-s"><code>flex</code><span class="md-plain"> 布局)、网格布局(<span class="md-pair-s"><code>grid</code><span class="md-plain"> 布局)等技术,实现复杂的网页布局,如响应式布局、多列布局等。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>管理元素的动态状态</strong><span class="md-plain">(悬停效果、动画)。</span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>交互效果</strong><span class="md-plain"> :利用伪类和 CSS 动画(<span class="md-pair-s"><code>@keyframes</code><span class="md-plain">)、过渡(<span class="md-pair-s"><code>transition</code><span class="md-plain">)等特性,为网页添加交互效果,如按钮悬停效果、点击效果、元素的动画过渡、关键帧动画等。</span></span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>内容与样式的分离</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">通过 CSS 将网页的结构(HTML)与表现(CSS 样式)解耦,实现内容(HTML)与样式(CSS)分离,便于维护和更新,提升代码可维护性和复用性。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">允许通过一个样式表文件统一管理多个页面的样式。</span></p>
</li>
</ul>
</li>
</ul>
<ol class="ol-list" start="5">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>提升开发效率</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">避免重复的 HTML 标签(如 <span class="md-pair-s"><code><font></code><span class="md-plain"> 或表格布局),减少代码冗余。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">支持继承和层叠规则,简化样式覆盖逻辑。</span></p>
</li>
</ul>
</li>
</ol>
<h3 class="md-end-block md-heading"><span class="md-plain">1.7 CSS 的工作原理</span></h3>
<ol class="ol-list" start="">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>解析 HTML</strong><span class="md-plain">,生成 DOM 树。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>解析 CSS</strong><span class="md-plain"> ,生成 CSSOM 树。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>合并 DOM + CSSOM</strong><span class="md-plain">,构建渲染树。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>布局与绘制</strong><span class="md-plain">,计算元素位置并渲染页面。</span></span></p>
</li>
</ol>
<h3 class="md-end-block md-heading"><span class="md-plain">1.8 CSS 的优势与局限</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>优势</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>性能优化</strong><span class="md-plain">:外部样式表可被浏览器缓存,减少重复加载。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>SEO友好</strong><span class="md-plain">:结构清晰的HTML更易被搜索引擎抓取。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>维护便捷</strong><span class="md-plain">:全局样式可通过单一CSS文件统一调整。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>局限</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">浏览器兼容性问题(如旧版IE不支持部分CSS3属性)。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">学习曲线较陡,需掌握选择器优先级、盒模型等复杂概念。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">CSS 本身主要用于样式和布局,对于页面的结构和内容逻辑的控制能力较弱,通常需要与 HTML 和 JavaScript 配合使用来实现更复杂的网页功能。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">一些复杂的样式效果可能需要使用较多的代码和技巧来实现,并且在不同浏览器中可能存在兼容性问题,需要进行额外的测试和调整。</span></p>
</li>
</ul>
</li>
</ul>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">2 CSS 引入方式与优先级</span></h2>
<h3 class="md-end-block md-heading"><span class="md-plain">2.1 外部样式表(最常用)</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> 外部样式表(External style sheet),编写在HTML文档中的<span class="md-pair-s"><code><head> </head></code><span class="md-plain">头部元素之间,通过<span class="md-pair-s"><code><link></code><span class="md-plain">元素标签引入独立 CSS 文件,方便实现多页面复用:</span></span></span></span></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">link </span><span style="color: rgba(255, 0, 0, 1)">rel</span><span style="color: rgba(0, 0, 255, 1)">="stylesheet"</span><span style="color: rgba(255, 0, 0, 1)"> href</span><span style="color: rgba(0, 0, 255, 1)">="style.css"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p> </p>
<h3 class="md-end-block md-heading"><span class="md-plain">2.2 内部样式表</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> 内部样式表(Internal style sheet),通常编写在HTML文档中的<span class="md-pair-s"><code><head> </head></code><span class="md-plain">头部元素之间的<span class="md-pair-s"><code><style> </style></code><span class="md-plain">元素内,通过在<span class="md-pair-s"><code><style></code><span class="md-plain">元素内,(且需要写在 link 外部样式表的<span class="md-pair-s "><strong>后面</strong><span class="md-plain">,否则会被外部样式表优先覆盖内部样式表),直接定义 CSS 样式,仅当前页面有效:</span></span></span></span></span></span></span></span></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">style</span><span style="color: rgba(0, 0, 255, 1)">></span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(128, 0, 0, 1)">
body </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">{</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(255, 0, 0, 1)"> background</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">:</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 255, 1)"> #f0f0f0</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">;</span> <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">}</span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">style</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p> </p>
<h3 class="md-end-block md-heading"><span class="md-plain">2.3 内联样式表</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> 内联样式表(Inline style),直接写在 HTML 文档元素标签的<span class="md-pair-s"><code>style</code><span class="md-plain">属性中,优先级最高但不利于维护:</span></span></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">p </span><span style="color: rgba(255, 0, 0, 1)">style</span><span style="color: rgba(0, 0, 255, 1)">="color: purple;"</span><span style="color: rgba(0, 0, 255, 1)">></span>示例文本<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">p</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p> </p>
<h3 class="md-end-block md-heading"><span class="md-plain">2.4 样式表的优先级</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> 内联样式 > 内部样式 > 外部样式 > 浏览器默认样式。</span></p>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">3 CSS 的基础语法</span></h2>
<h3 class="md-end-block md-heading"><span class="md-plain">3.1 CSS 样式规则</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> 由一系列<span class="md-pair-s "><strong>规则</strong><span class="md-plain">集组成,规则集(ruleset)常简称为规则(rule)。每条规则集(ruleset)是由<span class="md-pair-s "><strong>选择器(selector)</strong><span class="md-plain">和<span class="md-pair-s "><strong>声明块</strong><span class="md-plain">构成。如下所示:</span></span></span></span></span></span></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">selector_1, </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 选择器1 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
selector_2, </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 选择器2 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
selector_n </span>{ <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 选择器n </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
property_1</span>:<span style="color: rgba(0, 0, 255, 1)"> value_1</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 声明块1 </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 属性名_1: 属性值_1 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
property_2</span>:<span style="color: rgba(0, 0, 255, 1)"> value_2</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 声明块2 </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 属性名_2: 属性值_2 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
property_n</span>:<span style="color: rgba(0, 0, 255, 1)"> value_n</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 声明块n </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 属性名_n: 属性值_n </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}</pre>
</div>
<p> </p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>选择器</strong></span></p>
<p class="md-end-block md-p"><span class="md-pair-s "><strong>选择器</strong><span class="md-plain">(Selectors)用于指定要应用样式的 HTML 或 XML 元素(如<span class="md-pair-s"><code>#id</code><span class="md-plain">、<span class="md-pair-s"><code>.class</code><span class="md-plain">、<span class="md-pair-s"><code>h1</code><span class="md-plain">),例如: <span class="md-pair-s"><code>#id</code><span class="md-plain"> 用于选择具有特定 ID 的元素,<span class="md-pair-s"><code>.class</code><span class="md-plain"> 用于选择具有特定类的元素,<span class="md-pair-s"><code>p</code><span class="md-plain"> 用于选择所有段落元素等。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>声明块</strong></span></p>
<p class="md-end-block md-p"><span class="md-pair-s "><strong>声明块</strong><span class="md-plain">(Declaration Block)由一对大括号 <span class="md-pair-s"><code>{}</code><span class="md-plain"> 包围,其中包含一条或多条(<span class="md-pair-s"><code>属性: 值;</code><span class="md-plain">)声明(Declaration) 。每条声明都是由属性和值组成,用于指定元素的样式,例如( <span class="md-pair-s"><code>color: black;</code><span class="md-plain">) 表示设置元素的文本颜色为黑色。</span></span></span></span></span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">属性(Property):是一个标识符,用可读的名称来表示其特性。如<span class="md-pair-s"><code>color</code><span class="md-plain">、<span class="md-pair-s"><code>font-size</code><span class="md-plain">、<span class="md-pair-s"><code>margin</code><span class="md-plain">等样式属性(style attribute)。</span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值(Value):属性的具体设置,每个属性都包含一个有效值的集合,它有正式的语法和语义定义。如<span class="md-pair-s"><code>red</code><span class="md-plain">、<span class="md-pair-s"><code>16px</code><span class="md-plain">、<span class="md-pair-s"><code>auto</code><span class="md-plain">等。(属性值与单位<span class="md-pair-s "><strong>不能有空格</strong><span class="md-plain">,16 px是错误的,正确的写法是16px)。</span></span></span></span></span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>注释</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">使用 <span class="md-pair-s"><code>/* 注释内容 */</code><span class="md-plain">,添加 CSS 层叠样式表中的注释内容。</span></span></span></p>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">3.2 CSS 样式选择器</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> <span class="md-pair-s "><strong>选择器</strong><span class="md-plain">(Selectors)至少要有一个,通过<span class="md-pair-s "><strong>ID</strong><span class="md-plain">、<span class="md-pair-s "><strong>类名</strong><span class="md-plain">、<span class="md-pair-s "><strong>元素标签名</strong><span class="md-plain">等精准定位HTML元素,并指定要应用的样式(如 <span class="md-pair-s"><code>#id</code><span class="md-plain">、<span class="md-pair-s"><code>.class</code><span class="md-plain">、<span class="md-pair-s"><code>p</code><span class="md-plain">),或通过<span class="md-pair-s "><strong>属性</strong><span class="md-plain">、<span class="md-pair-s "><strong>伪类</strong><span class="md-plain">等实现动态样式。如果包含多个选择器的集合分组,则用逗号<span class="md-pair-s"><code>,</code><span class="md-plain">分隔。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">#header </span>{<span style="color: rgba(255, 0, 0, 1)"> background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> gray</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> ID选择器 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
.text-red </span>{<span style="color: rgba(255, 0, 0, 1)"> color</span>:<span style="color: rgba(0, 0, 255, 1)"> red</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 类选择器 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
</span>{<span style="color: rgba(255, 0, 0, 1)"> border</span>:<span style="color: rgba(0, 0, 255, 1)"> 1px solid black</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 属性选择器 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
:hover </span>{ } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 伪类(状态) </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
::before </span>{ } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 伪元素(生成内容) </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
p </span>{<span style="color: rgba(255, 0, 0, 1)"> color</span>:<span style="color: rgba(0, 0, 255, 1)"> blue</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 元素标签选择器 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
div p </span>{<span style="color: rgba(255, 0, 0, 1)"> margin</span>:<span style="color: rgba(0, 0, 255, 1)"> 10px</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 关系组合选择器 </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 后代选择器 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
div > p </span>{<span style="color: rgba(255, 0, 0, 1)"> padding</span>:<span style="color: rgba(0, 0, 255, 1)"> 5px</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 关系组合选择器 </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 子选择器 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
h1 + p </span>{<span style="color: rgba(255, 0, 0, 1)"> font-weight</span>:<span style="color: rgba(0, 0, 255, 1)"> bold</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 关系组合选择器 </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 相邻兄弟选择器 </span><span style="color: rgba(0, 128, 0, 1)">*/</span></pre>
</div>
<p> </p>
<p class="md-end-block md-p"><span class="md-plain"> 常见的选择器类型,有以下几种:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>ID 选择器</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">使用<span class="md-pair-s "><strong>唯一</strong><span class="md-plain">的 <span class="md-pair-s "><strong>ID 标识符</strong><span class="md-plain">来选择元素,匹配具有<span class="md-pair-s "><strong>同名 ID 属性值</strong><span class="md-plain">的元素,(ID 标识符<span class="md-pair-s "><strong>不要以数字开头</strong><span class="md-plain">,个别浏览器不起作用)。ID 前需要加上(井号 <span class="md-pair-s"><code>#</code><span class="md-plain">),如 <span class="md-pair-s"><code>#myId</code><span class="md-plain"> 只会选中页面上唯一具有 <span class="md-pair-s"><code>id="myId"</code><span class="md-plain"> 属性的元素。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">例如:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>#bg1 { background: blue; }</code><span class="md-plain">,匹配具有 <span class="md-pair-s"><code>id</code><span class="md-plain"> 属性,且 <span class="md-pair-s"><code>id</code><span class="md-plain"> 属性值为 <span class="md-pair-s"><code>bg1</code><span class="md-plain"> 的所有元素 。</span></span></span></span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>类选择器</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">使用<span class="md-pair-s "><strong>类名</strong><span class="md-plain">来选择元素,匹配具有<span class="md-pair-s "><strong>同名 class 属性值</strong><span class="md-plain">的元素,(类名<span class="md-pair-s "><strong>不要以数字开头</strong><span class="md-plain">,个别浏览器不起作用)。类名前需要加上(点号 <span class="md-pair-s"><code>.</code><span class="md-plain">),如 <span class="md-pair-s"><code>.myClass</code><span class="md-plain"> 会选中所有具有 <span class="md-pair-s"><code>class="myClass"</code><span class="md-plain"> 属性的元素。</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">例如:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>.text1 { font-size: 16px; }</code><span class="md-plain">,匹配具有 <span class="md-pair-s"><code>class</code><span class="md-plain"> 属性,且 <span class="md-pair-s"><code>class</code><span class="md-plain"> 属性值为 <span class="md-pair-s"><code>text1</code><span class="md-plain"> 的所有元素。</span></span></span></span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>属性选择器</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">根据元素的<span class="md-pair-s "><strong>属性</strong><span class="md-plain">及其<span class="md-pair-s "><strong>值</strong><span class="md-plain">来选择元素,如 <span class="md-pair-s"><code></code><span class="md-plain"> 会选中所有具有 <span class="md-pair-s"><code>type="text"</code><span class="md-plain"> 属性的元素。</span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">例如:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code> { background: red; }</code><span class="md-plain"> ,匹配具有 <span class="md-pair-s"><code>attribute</code><span class="md-plain"> 属性的所有元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code> { background: red; }</code><span class="md-plain"> ,匹配具有 <span class="md-pair-s"><code>attribute1</code><span class="md-plain"> 属性,且 <span class="md-pair-s"><code>attribute1</code><span class="md-plain"> 属性值与 <span class="md-pair-s"><code>value1</code><span class="md-plain"> <span class="md-pair-s "><strong>等同</strong><span class="md-plain">的所有元素。</span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code> { background: red; }</code><span class="md-plain">,匹配具有 <span class="md-pair-s"><code>attribute2</code><span class="md-plain"> 属性,且 <span class="md-pair-s"><code>attribute2</code><span class="md-plain"> 属性值以 <span class="md-pair-s"><code>value2</code><span class="md-plain"> <span class="md-pair-s "><strong>开头</strong><span class="md-plain">的所有元素。</span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code> { background: red; }</code><span class="md-plain">,匹配具有 <span class="md-pair-s"><code>attribute3</code><span class="md-plain"> 属性,且 <span class="md-pair-s"><code>attribute3</code><span class="md-plain"> 属性值以 <span class="md-pair-s"><code>value3</code><span class="md-plain"> <span class="md-pair-s "><strong>结尾</strong><span class="md-plain">的所有元素。</span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code> { background: red; }</code><span class="md-plain">,匹配具有 <span class="md-pair-s"><code>attribute4</code><span class="md-plain"> 属性,且 <span class="md-pair-s"><code>attribute4</code><span class="md-plain"> 属性值<span class="md-pair-s "><strong>包含</strong><span class="md-plain"> <span class="md-pair-s"><code>value4</code><span class="md-plain"> 的所有元素。</span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code> { background: red; }</code><span class="md-plain">,匹配具有 <span class="md-pair-s"><code>attribute5</code><span class="md-plain"> 属性,且 <span class="md-pair-s"><code>attribute5</code><span class="md-plain"> 属性值<span class="md-pair-s "><strong>包含</strong><span class="md-plain">一个以<span class="md-pair-s "><strong>空格</strong><span class="md-plain">分隔的值与 <span class="md-pair-s"><code>value5</code><span class="md-plain"> <span class="md-pair-s "><strong>等同</strong><span class="md-plain">的所有元素。即 <span class="md-pair-s"><code>attribute5</code><span class="md-plain"> 属性的值里,必须有 <span class="md-pair-s"><code>value5</code><span class="md-plain">这个单词,并且<span class="md-pair-s"><code>value5</code><span class="md-plain">要与其它单词之间有<span class="md-pair-s "><strong>空格</strong><span class="md-plain">分隔。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code> { background: red; }</code><span class="md-plain">,匹配具有 <span class="md-pair-s"><code>attribute6</code><span class="md-plain"> 属性,且 <span class="md-pair-s"><code>attribute6</code><span class="md-plain"> 属性值与 <span class="md-pair-s"><code>value6</code><span class="md-plain"> <span class="md-pair-s "><strong>等同</strong><span class="md-plain">或以 <span class="md-pair-s"><code>value6</code><span class="md-plain"> <span class="md-pair-s "><strong>开头</strong><span class="md-plain">的所有元素。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>伪类选择器</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">用于选择处于特定状态的元素,如 <span class="md-pair-s"><code>:hover</code><span class="md-plain"> 用于选择鼠标悬停在元素上时的状态,<span class="md-pair-s"><code>:active</code><span class="md-plain"> 用于选择鼠标点击元素时的状态等。例如:<span class="md-pair-s"><code>a:hover { color: green; }</code><span class="md-plain">。</span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">例如:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:first-child</code><span class="md-plain">,结构性伪类选择器,匹配在一组兄弟元素中的<span class="md-pair-s "><strong>第一个</strong><span class="md-plain">元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:last-child</code><span class="md-plain">,结构性伪类选择器,匹配在一组兄弟元素中的<span class="md-pair-s "><strong>最后一个</strong><span class="md-plain">元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:nth-child(n)</code><span class="md-plain">,结构性伪类选择器,根据元素在父元素内的子元素列表中的<span class="md-pair-s "><strong>索引</strong><span class="md-plain">来匹配选择元素。<span class="md-pair-s"><code>n</code><span class="md-plain"> 表示元素在子元素列表中的<span class="md-pair-s "><strong>第几个</strong><span class="md-plain">。</span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:nth-last-child(n)</code><span class="md-plain">,结构性伪类选择器,匹配子元素列表中的<span class="md-pair-s "><strong>倒数第 n 个</strong><span class="md-plain">子元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:nth-child(odd)</code><span class="md-plain">,结构性伪类选择器,根据元素在父元素内的子元素列表中的<span class="md-pair-s "><strong>索引</strong><span class="md-plain">来匹配选择元素。<span class="md-pair-s"><code>odd</code><span class="md-plain"> 表示元素在兄弟元素列表中的位置是<span class="md-pair-s "><strong>奇数</strong><span class="md-plain">:1、3、5……。</span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:nth-child(even)</code><span class="md-plain">,结构性伪类选择器,根据元素在父元素内的子元素列表中的<span class="md-pair-s "><strong>索引</strong><span class="md-plain">来匹配选择元素。<span class="md-pair-s"><code>even</code><span class="md-plain"> 表示元素在兄弟元素列表中的位置是<span class="md-pair-s "><strong>偶数</strong><span class="md-plain">:2、4、6……。</span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:only-child</code><span class="md-plain">,结构性伪类选择器,匹配<span class="md-pair-s "><strong>仅有</strong><span class="md-plain">一个子元素的元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:first-of-type</code><span class="md-plain">,结构性伪类选择器,匹配在一组兄弟元素中其<span class="md-pair-s "><strong>类型</strong><span class="md-plain">的<span class="md-pair-s "><strong>第一个</strong><span class="md-plain">元素。</span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:last-of-type</code><span class="md-plain">,结构性伪类选择器,匹配在(它父元素的)子元素列表中,<span class="md-pair-s "><strong>最后一个</strong><span class="md-plain">给定<span class="md-pair-s "><strong>类型</strong><span class="md-plain">的元素。</span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:only-of-type</code><span class="md-plain">,结构性伪类选择器,匹配任意一个元素,这个元素<span class="md-pair-s "><strong>没有</strong><span class="md-plain">其他<span class="md-pair-s "><strong>相同类型</strong><span class="md-plain">的兄弟元素。</span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:nth-of-type(n)</code><span class="md-plain">,结构性伪类选择器,匹配相同类型元素的<span class="md-pair-s "><strong>第 n 个</strong><span class="md-plain">元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:nth-last-of-type(n)</code><span class="md-plain">,结构性伪类选择器,匹配相同类型元素的<span class="md-pair-s "><strong>倒数第 n 个</strong><span class="md-plain">元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:checked</code><span class="md-plain">,UI元素状态伪类选择器,匹配<span class="md-pair-s "><strong>选中</strong><span class="md-plain">状态的元素,选择任何处于选中状态的<span class="md-pair-s "><strong>radio</strong><span class="md-plain">(<span class="md-pair-s"><code><input type="radio"></code><span class="md-plain">),<span class="md-pair-s "><strong>checkbox</strong><span class="md-plain"> (<span class="md-pair-s"><code><input type="checkbox"></code><span class="md-plain">) 或 <span class="md-pair-s "><strong>select</strong><span class="md-plain"> 元素中的 (<span class="md-pair-s"><code>"option"</code><span class="md-plain">) 元素。即匹配任意被勾选/选中的 radio(单选按钮),checkbox(复选框),或者 option(select 中的一项) 。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:enabled</code><span class="md-plain">,UI元素状态伪类选择器,匹配任何<span class="md-pair-s "><strong>已启用</strong><span class="md-plain">的元素。如果元素可以<span class="md-pair-s "><strong>被激活</strong><span class="md-plain">(例如被选择、单击、输入文本等),或者能够获得<span class="md-pair-s "><strong>焦点</strong><span class="md-plain">,那么它就是启用的。</span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:disabled</code><span class="md-plain">,UI元素状态伪类选择器,匹配任何被<span class="md-pair-s "><strong>禁用</strong><span class="md-plain">的元素。如果一个元素不能被激活(如选择、点击或接受文本输入)或获取焦点,则该元素处于被禁用状态。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:in-range</code><span class="md-plain">,UI元素状态伪类选择器,匹配指定<span class="md-pair-s "><strong>范围以内</strong><span class="md-plain">值的元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:out-of-range</code><span class="md-plain">,UI元素状态伪类选择器,匹配指定<span class="md-pair-s "><strong>范围以外</strong><span class="md-plain">值的元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:optional</code><span class="md-plain">,UI元素状态伪类选择器,匹配<span class="md-pair-s "><strong>没有 "required" 属性</strong><span class="md-plain">的元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:required</code><span class="md-plain">,UI元素状态伪类选择器,匹配<span class="md-pair-s "><strong>有 "required" 属性</strong><span class="md-plain">的元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:invalid</code><span class="md-plain">,UI元素状态伪类选择器,匹配<span class="md-pair-s "><strong>无效</strong><span class="md-plain">的元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:read-only</code><span class="md-plain">,UI元素状态伪类选择器,匹配<span class="md-pair-s "><strong>只读</strong><span class="md-plain">状态的元素,表示元素不可被用户编辑的状态(如锁定的文本输入框)。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:read-write</code><span class="md-plain">,UI元素状态伪类选择器,匹配<span class="md-pair-s "><strong>可读可写</strong><span class="md-plain">状态的元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:focus</code><span class="md-plain">,UI元素状态伪类选择器,匹配获得<span class="md-pair-s "><strong>焦点</strong><span class="md-plain">的元素(如表单输入)。当用户点击或轻触一个元素或使用键盘的 <span class="md-pair-s"><code>Tab</code><span class="md-plain"> 键选择它时,它会被触发。</span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:link</code><span class="md-plain">,UI元素状态伪类选择器,所有未访问链接。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:visited</code><span class="md-plain">,UI元素状态伪类选择器,匹配在用户访问链接后生效。但由于出于隐私保护的原因,使用该选择器可以修改的样式非常有限。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:hover</code><span class="md-plain">,UI元素状态伪类选择器,匹配在用户使用指针设备与元素进行交互时匹配,但不一定激活它。通常在用户将光标(鼠标指针)悬停在元素上时触发。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:active</code><span class="md-plain">,UI元素状态伪类选择器,匹配被用户激活的元素。它让页面能在浏览器监测到激活时给出反馈。当用鼠标交互时,它代表的是用户按下按键和松开按键之间的时间。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:empty</code><span class="md-plain">,UI元素状态伪类选择器,匹配没有子元素的元素。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>否定反选伪类选择器</strong><span class="md-plain">(negation pseudo-class)</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">用来匹配不符合一组选择器的元素,它的作用是防止<span class="md-pair-s "><strong>特定</strong><span class="md-plain">的元素被选中。</span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">例如:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>:not(selectors)</code><span class="md-plain">,匹配与<span class="md-pair-s"><code>selectors</code><span class="md-plain">选择器相反的所有元素。</span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>元素选择器</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">直接使用 HTML 元素的名称作为选择器,如 <span class="md-pair-s"><code>p</code><span class="md-plain"> 会选中页面上所有的 <span class="md-pair-s"><code><p></code><span class="md-plain"> 元素。</span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">例如:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>p { color: blue; }</code><span class="md-plain">,匹配所有<span class="md-pair-s"><code>p</code><span class="md-plain">元素。</span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>伪元素选择器</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>::first-letter</code><span class="md-plain">,用于将样式应用于<span class="md-pair-s "><strong>区块容器</strong><span class="md-plain">第一行的<span class="md-pair-s "><strong>第一个字母</strong><span class="md-plain">,但仅当其前面没有其他内容(例如图像或行内表格)时才有效。</span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>::first-line</code><span class="md-plain">,只能在块容器中,匹配在<span class="md-pair-s "><strong>区块容器</strong><span class="md-plain">的<span class="md-pair-s "><strong>第一行</strong><span class="md-plain">应用样式。</span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>::before</code><span class="md-plain">,会创建一个<span class="md-pair-s "><strong>伪元素</strong><span class="md-plain">,作为所选中元素的第一个子元素。通常用于为具有 <span class="md-pair-s"><code>content</code><span class="md-plain"> 属性的元素添加修饰性的内容。此元素默认情况下是行级的。</span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>::after</code><span class="md-plain">,会创建一个<span class="md-pair-s "><strong>伪元素</strong><span class="md-plain">,作为所选中元素的最后一个子元素。通常用于为具有 <span class="md-pair-s"><code>content</code><span class="md-plain"> 属性的元素添加修饰性的内容。此元素默认情况下是行向布局的。</span></span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>关系组合选择器</strong><span class="md-plain">(combinator)</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">包含<span class="md-pair-s "><strong>祖先后代</strong><span class="md-plain">选择器(<span class="md-pair-s"><code>A B</code><span class="md-plain">)、<span class="md-pair-s "><strong>第一级父子元素</strong><span class="md-plain">选择器(<span class="md-pair-s"><code>A > B</code><span class="md-plain">)、<span class="md-pair-s "><strong>相邻兄弟</strong><span class="md-plain">选择器(<span class="md-pair-s"><code>A + B</code><span class="md-plain">)、<span class="md-pair-s "><strong>后续兄弟</strong><span class="md-plain">选择器(<span class="md-pair-s"><code>A ~ B</code><span class="md-plain">)等。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">例如:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>div p { color: blue; }</code><span class="md-plain">,<span class="md-pair-s "><strong>祖先后代</strong><span class="md-plain">选择器,匹配所有 <span class="md-pair-s"><code>div</code><span class="md-plain"> 元素内的所有 <span class="md-pair-s"><code>p</code><span class="md-plain"> 元素。</span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>.class1>p { color: blue; }</code><span class="md-plain">,<span class="md-pair-s "><strong>第一级父子元素</strong><span class="md-plain">选择器,匹配具有 <span class="md-pair-s"><code>class</code><span class="md-plain"> 类属性,且类属性的值为 <span class="md-pair-s"><code>.class1</code><span class="md-plain"> 的所有元素下的<span class="md-pair-s "><strong>第一级</strong><span class="md-plain"> <span class="md-pair-s"><code>p</code><span class="md-plain"> <span class="md-pair-s "><strong>子元素</strong><span class="md-plain">。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>h1+p { color: blue; }</code><span class="md-plain">,<span class="md-pair-s "><strong>相邻兄弟</strong><span class="md-plain">选择器,匹配所有 <span class="md-pair-s"><code>h1</code><span class="md-plain"> 元素后面紧接相邻着的第一个 <span class="md-pair-s"><code>p</code><span class="md-plain"> 元素。</span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>h2~p { color: blue; }</code><span class="md-plain">,<span class="md-pair-s "><strong>后续兄弟</strong><span class="md-plain">选择器,匹配所有 <span class="md-pair-s"><code>h2</code><span class="md-plain"> 元素后面所有的 <span class="md-pair-s"><code>p</code><span class="md-plain"> 元素。</span></span></span></span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>通配选择器</strong><span class="md-plain">(universal selector)</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">通配符选择器(<span class="md-pair-s"><code>*</code><span class="md-plain">),用于匹配当前 HTML 文档中所有的元素。</span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">例如:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>* { color: red; }</code><span class="md-plain">,匹配当前 HTML 文档中所有的元素,并设置颜色为红色。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>集合分组选择器</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">上述所有选择器均可集合成同一分组选择器,通过(逗号 <span class="md-pair-s"><code>,</code><span class="md-plain">)分隔不同的选择器。</span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">例如:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>div p, .class1>p, h1+p, h2~p { color: red; }</code><span class="md-plain">,集合匹配所有 <span class="md-pair-s"><code>div</code><span class="md-plain"> 元素内的所有 <span class="md-pair-s"><code>p</code><span class="md-plain"> 元素,集合匹配具有 <span class="md-pair-s"><code>class</code><span class="md-plain"> 类属性,且类属性的值为 <span class="md-pair-s"><code>.class1</code><span class="md-plain"> 的所有元素下的<span class="md-pair-s "><strong>第一级</strong><span class="md-plain"> <span class="md-pair-s"><code>p</code><span class="md-plain"> <span class="md-pair-s "><strong>子元素</strong><span class="md-plain">,集合匹配所有 <span class="md-pair-s"><code>h1</code><span class="md-plain"> 元素后面紧接相邻着的第一个 <span class="md-pair-s"><code>p</code><span class="md-plain"> 元素,集合匹配所有 <span class="md-pair-s"><code>h2</code><span class="md-plain"> 元素后面所有的 <span class="md-pair-s"><code>p</code><span class="md-plain"> 元素。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
</li>
</ul>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">3.3 CSS 样式声明块</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> 包含一个或多个声明,用花括号 <span class="md-pair-s"><code>{ }</code><span class="md-plain"> 包裹。每个声明由<span class="md-pair-s "><strong>属性和值</strong><span class="md-plain">组成,不同声明用分号<span class="md-pair-s"><code>;</code><span class="md-plain">分隔。</span></span></span></span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>样式属性与属性值</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>样式属性</strong><span class="md-plain">(如<span class="md-pair-s"><code>color</code><span class="md-plain">、<span class="md-pair-s"><code>margin</code><span class="md-plain">),用于定义样式特性。如 <span class="md-pair-s"><code>background-color</code><span class="md-plain"> 用于设置元素的背景颜色,<span class="md-pair-s"><code>font-size</code><span class="md-plain"> 用于设置字体大小等。</span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>属性值</strong><span class="md-plain">(如<span class="md-pair-s"><code>red</code><span class="md-plain">、<span class="md-pair-s"><code>20px</code><span class="md-plain">),为样式属性指定具体效果的值。如 <span class="md-pair-s"><code>background-color: #ff0000;</code><span class="md-plain"> 表示将背景颜色设置为红色,<span class="md-pair-s"><code>font-size: 16px;</code><span class="md-plain"> 表示将字体大小设置为 16 像素。</span></span></span></span></span></span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>声明缩写优化</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>margin: 10px 20px;</code><span class="md-plain">(上下10px,左右20px)。</span></span></p>
</li>
</ul>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">3.4 CSS 的 at 规则</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> 以 @()开始,随后是标识符,一直到以分号或右大括号结束。</span></p>
<p class="md-end-block md-p"><span class="md-plain"> 每个 at 规则由其标识符定义,可能有它自己的语法。</span></p>
<p class="md-end-block md-p"><span class="md-plain"> at 规则涵盖了 meta 信息(比如 @charset @import)、条件信息(比如 @media @document)、描述信息(比如 @font-face)。</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>@charset</code><span class="md-plain">——定义样式表使用的字符集。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>@import</code><span class="md-plain">——告诉 CSS 引擎引入一个外部样式表。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>@namespace</code><span class="md-plain">——告诉 CSS 引擎必须考虑 XML 命名空间。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>@layer</code><span class="md-plain"> ——声明了一个<span class="md-pair-s "><strong>层叠层</strong><span class="md-plain">,同一层内的规则将级联在一起,这给予了开发者对层叠机制的更多控制。</span></span></span></span></p>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">3.5 CSS 的语法示例</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">body </span>{<span style="color: rgba(255, 0, 0, 1)">
background</span>:<span style="color: rgba(0, 0, 255, 1)"> #f0f0f0</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 浅灰色背景 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
font-family</span>:<span style="color: rgba(0, 0, 255, 1)"> "Microsoft YaHei"</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 字体 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}<span style="color: rgba(128, 0, 0, 1)">
h1 </span>{<span style="color: rgba(255, 0, 0, 1)">
color</span>:<span style="color: rgba(0, 0, 255, 1)"> #0A0000</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 深红色标题(RGB 10,0,0) </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}<span style="color: rgba(128, 0, 0, 1)">
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 选择所有 <p> 标签,声明设置字体颜色和背景 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
p </span>{<span style="color: rgba(255, 0, 0, 1)">
color</span>:<span style="color: rgba(0, 0, 255, 1)"> blue</span>;<span style="color: rgba(255, 0, 0, 1)">
background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> #f0f0f0</span>;
}<span style="color: rgba(128, 0, 0, 1)">
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 选择 class 为 "highlight" 的元素,声明 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
.highlight </span>{<span style="color: rgba(255, 0, 0, 1)">
font-weight</span>:<span style="color: rgba(0, 0, 255, 1)"> bold</span>;<span style="color: rgba(255, 0, 0, 1)">
border</span>:<span style="color: rgba(0, 0, 255, 1)"> 1px solid red</span>;
}<span style="color: rgba(128, 0, 0, 1)">
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 选择 id 为 "header" 的元素 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
#header </span>{<span style="color: rgba(255, 0, 0, 1)">
text-align</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;<span style="color: rgba(255, 0, 0, 1)">
padding</span>:<span style="color: rgba(0, 0, 255, 1)"> 20px</span>;
}</pre>
</div>
<p> </p>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">4 核心组成</span></h2>
<h3 class="md-end-block md-heading"><span class="md-plain">4.1 盒模型(Box Model)</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> 定义元素的空间占用规则,每个元素在页面中都被视为一个矩形盒子,由<span class="md-pair-s "><strong>内容区</strong><span class="md-plain">(content)、<span class="md-pair-s "><strong>内边距</strong><span class="md-plain">(padding)、<span class="md-pair-s "><strong>边框</strong><span class="md-plain"> (border)和 <span class="md-pair-s "><strong>外边距</strong><span class="md-plain">(margin)组成),是布局的基础。</span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain"> 从内部到外围,分别为:</span></p>
<ol class="ol-list" start="">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>content</code><span class="md-plain">(内容):盒子的内容,显示文本和图像。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>padding</code><span class="md-plain">(内边距):清除内容周围的区域,内边距是透明的。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>border</code><span class="md-plain">(边框):围绕在内边距和内容外的边框。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>margin</code><span class="md-plain">(外边距):清除边框外的区域,外边距是透明的。</span></span></p>
</li>
</ol>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">.box </span>{<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)"> 300px</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 内容区宽度 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
padding</span>:<span style="color: rgba(0, 0, 255, 1)"> 20px</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 内边距 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
border</span>:<span style="color: rgba(0, 0, 255, 1)"> 1px solid black</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 边框 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
margin</span>:<span style="color: rgba(0, 0, 255, 1)"> 10px</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 外边距 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
box-sizing</span>:<span style="color: rgba(0, 0, 255, 1)"> border-box</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 宽度包含padding和border </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}</pre>
</div>
<p> </p>
<p class="md-end-block md-p"><span class="md-plain"> 通过设置 <span class="md-pair-s"><code>box-sizing</code><span class="md-plain"> 属性,可分为两种<span class="md-pair-s "><strong>盒模型</strong><span class="md-plain">。</span></span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>box-sizing: content-box;</code><span class="md-plain">,设置为<span class="md-pair-s "><strong>标准模式</strong><span class="md-plain">的盒模型,此种模式下,矩形盒子的总宽度和总高度,仅指<span class="md-pair-s "><strong>内容区</strong><span class="md-plain">的宽度和高度。</span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>box-sizing: border-box;</code><span class="md-plain">,设置为<span class="md-pair-s "><strong>怪异模式</strong><span class="md-plain">的盒模型,此种模式下,矩形盒子的总宽度和总高度,包含了(<span class="md-pair-s "><strong>内容区</strong><span class="md-plain">+<span class="md-pair-s "><strong>内边距</strong><span class="md-plain">+<span class="md-pair-s "><strong>边框</strong><span class="md-plain">)的宽度和高度。</span></span></span></span></span></span></span></span></span></span></p>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 默认:width/height 仅指内容区域 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
box-sizing: content-box;
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> width/height 包含内容、内边距和边框 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
box-sizing: border-box;</span></pre>
</div>
<p> </p>
<h3 class="md-end-block md-heading"><span class="md-plain">4.2 布局系统</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>浮动</strong><span class="md-plain">(Float)</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">传统布局,通过 <span class="md-pair-s"><code>float</code><span class="md-plain"> 实现元素左右对齐,实现文字环绕效果,常用于早期的多列布局。可分为<span class="md-pair-s "><strong>设置浮动</strong><span class="md-plain">(float)、<span class="md-pair-s "><strong>清除浮动</strong><span class="md-plain">(clear)。</span></span></span></span></span></span></span></p>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">.float-left </span>{<span style="color: rgba(255, 0, 0, 1)">
float</span>:<span style="color: rgba(0, 0, 255, 1)"> left</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 浮动(Float) </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}<span style="color: rgba(128, 0, 0, 1)">
.clearfix::after </span>{<span style="color: rgba(255, 0, 0, 1)">
content</span>:<span style="color: rgba(0, 0, 255, 1)"> " "</span>;<span style="color: rgba(255, 0, 0, 1)">
display</span>:<span style="color: rgba(0, 0, 255, 1)"> table</span>;<span style="color: rgba(255, 0, 0, 1)">
clear</span>:<span style="color: rgba(0, 0, 255, 1)"> both</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 清除浮动 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}</pre>
</div>
<p> </p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>定位</strong><span class="md-plain">(Positioning)</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">传统布局,通过 <span class="md-pair-s"><code>position: static/relative/absolute/fixed/sticky;</code><span class="md-plain"> 控制元素的绝对或相对位置。可分为<span class="md-pair-s "><strong>默认状态</strong><span class="md-plain">(static)、<span class="md-pair-s "><strong>相对定位</strong><span class="md-plain">(relative)、<span class="md-pair-s "><strong>绝对定位</strong><span class="md-plain">(absolute)、<span class="md-pair-s "><strong>固定定位</strong><span class="md-plain">(fixed)、<span class="md-pair-s "><strong>粘性定位</strong><span class="md-plain">(sticky)。</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>默认状态</strong><span class="md-plain">(static):HTML 元素的默认值,即没有定位。</span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s "><strong>static</strong><span class="md-plain"> 定位的元素不会受到 <span class="md-pair-s"><code>top、bottom、left、right</code><span class="md-plain"> 这4个属性影响。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>相对定位</strong><span class="md-plain">(relative):<span class="md-pair-s "><strong><span class="md-pair-s"><code>relative</code></span></strong><span class="md-plain"> 定位的元素位置,是相对其正常位置。</span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">移动 <span class="md-pair-s "><strong>relative</strong><span class="md-plain"> 定位的元素,元素原本所占的空间(会保留)不会发生改变。</span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s "><strong>relative</strong><span class="md-plain"> 定位元素经常被用来作为绝对定位元素的容器块。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>绝对定位</strong><span class="md-plain">(absolute):<span class="md-pair-s "><strong><span class="md-pair-s"><code>absolute</code></span></strong><span class="md-plain"> 定位的元素位置,是相对于已定位的父元素,如果没有已定位的父元素。那么<span class="md-pair-s "><strong>absolute</strong><span class="md-plain"> 定位的元素的位置,则是相对于 <span class="md-pair-s"><code><html></code><span class="md-plain">。</span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s "><strong>absolute</strong><span class="md-plain"> 定位的元素和其他元素重叠,与文档流无关,不占据空间。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>固定定位</strong><span class="md-plain">(fixed):<span class="md-pair-s "><strong><span class="md-pair-s"><code>fixed</code></span></strong><span class="md-plain"> 定位的元素位置相对于浏览器窗口是固定位置。</span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">即使窗口是滚动的,<span class="md-pair-s "><strong>fixed</strong><span class="md-plain"> 定位的元素也不会移动。</span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s "><strong>fixed</strong><span class="md-plain"> 定位的元素和其他元素重叠,与文档流无关,不占据空间。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>粘性定位</strong><span class="md-plain">(sticky):<span class="md-pair-s "><strong><span class="md-pair-s"><code>sticky</code></span></strong><span class="md-plain"> 定位的元素位置,是是依赖于用户的滚动位置来定位,且是在 <span class="md-pair-s "><strong>relative</strong><span class="md-plain"> 与 <span class="md-pair-s "><strong>fixed</strong><span class="md-plain"> 定位之间切换。</span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">当页面滚动没有超出目标区域时(跨越<span class="md-pair-s "><strong>特定阈值</strong><span class="md-plain">前),<span class="md-pair-s "><strong>sticky</strong><span class="md-plain"> 定位的行为,像 <span class="md-pair-s "><strong>relative</strong><span class="md-plain"> 。当页面滚动超出目标区域时(跨越<span class="md-pair-s "><strong>特定阈值</strong><span class="md-plain">后),<span class="md-pair-s "><strong>sticky</strong><span class="md-plain"> 定位的表现,像 <span class="md-pair-s "><strong>fixed</strong><span class="md-plain">,会固定在目标位置。</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">这个<span class="md-pair-s "><strong>特定阈值</strong><span class="md-plain">指的是 <span class="md-pair-s"><code>top、bottom、left、right</code><span class="md-plain"> 这4个属性之一,指定这4个属性阈值的其中任何1个,才会使粘性定位生效。否则其行为与相对定位相同。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>定位的重叠属性</strong><span class="md-plain">:</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">定位后的元素与文档流无关,定位元素可以覆盖页面上的其它元素。通过 <span class="md-pair-s"><code>z-index</code><span class="md-plain"> 属性,可以指定元素的堆叠顺序(即指定哪个元素在前面,哪个在后面)。</span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">一个元素可以有正数或负数的 <span class="md-pair-s"><code>z-index</code><span class="md-plain"> 堆叠顺序,具有更高堆叠顺序的元素总是在较低的堆叠顺序元素的前面。而如果两个定位元素重叠,没有指定 <span class="md-pair-s"><code>z - index</code><span class="md-plain"> 属性值,那么最后定位在 HTML 代码中的元素将被显示在最前面。</span></span></span></span></span></p>
</li>
</ul>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">.static </span>{<span style="color: rgba(255, 0, 0, 1)">
position</span>:<span style="color: rgba(0, 0, 255, 1)"> static</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 默认状态 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}<span style="color: rgba(128, 0, 0, 1)">
.relative </span>{<span style="color: rgba(255, 0, 0, 1)">
position</span>:<span style="color: rgba(0, 0, 255, 1)"> relative</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 相对定位 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}<span style="color: rgba(128, 0, 0, 1)">
.absolute </span>{<span style="color: rgba(255, 0, 0, 1)">
position</span>:<span style="color: rgba(0, 0, 255, 1)"> absolute</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 绝对定位 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
top</span>:<span style="color: rgba(0, 0, 255, 1)"> 10px</span>;<span style="color: rgba(255, 0, 0, 1)">
left</span>:<span style="color: rgba(0, 0, 255, 1)"> 20px</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.fixed </span>{<span style="color: rgba(255, 0, 0, 1)">
position</span>:<span style="color: rgba(0, 0, 255, 1)"> fixed</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 固定定位 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
bottom</span>:<span style="color: rgba(0, 0, 255, 1)"> 0</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.sticky </span>{<span style="color: rgba(255, 0, 0, 1)">
position</span>:<span style="color: rgba(0, 0, 255, 1)"> sticky</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 粘性定位 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
top</span>:<span style="color: rgba(0, 0, 255, 1)"> 0</span>;
}</pre>
</div>
<p> </p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>定位</strong><span class="md-plain">相关属性</span></span></p>
<table class="md-table">
<thead>
<tr class="md-end-block"><th><span class="td-span"><span class="md-plain">属性</span></span></th><th><span class="td-span"><span class="md-plain">说明</span></span></th><th><span class="td-span"><span class="md-plain">值</span></span></th></tr>
</thead>
<tbody>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-pair-s"><code>position</code></span></span></td>
<td><span class="td-span"><span class="md-plain">指定元素的定位类型。</span></span></td>
<td><span class="td-span"><span class="md-pair-s"><code>static</code><span class="md-plain">、<span class="md-pair-s"><code>relative</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>absolute</code><span class="md-plain">、<span class="md-pair-s"><code>fixed</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>sticky</code><span class="md-plain">、<span class="md-pair-s"><code>inherit</code></span></span></span></span></span></span></span></span></span></span></span></span></span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-pair-s"><code>top</code></span></span></td>
<td><span class="td-span"><span class="md-plain">定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。</span></span></td>
<td><span class="td-span"><span class="md-pair-s"><code>auto</code><span class="md-plain">、<span class="md-pair-s"><code>length</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>%</code><span class="md-plain">、<span class="md-pair-s"><code>inherit</code></span></span></span></span></span></span></span></span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-pair-s"><code>right</code></span></span></td>
<td><span class="td-span"><span class="md-plain">定义了定位元素右外边距边界与其包含块右边界之间的偏移。</span></span></td>
<td><span class="td-span"><span class="md-pair-s"><code>auto</code><span class="md-plain">、<span class="md-pair-s"><code>length</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>%</code><span class="md-plain">、<span class="md-pair-s"><code>inherit</code></span></span></span></span></span></span></span></span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-pair-s"><code>bottom</code></span></span></td>
<td><span class="td-span"><span class="md-plain">定义了定位元素下外边距边界与其包含块下边界之间的偏移。</span></span></td>
<td><span class="td-span"><span class="md-pair-s"><code>auto</code><span class="md-plain">、<span class="md-pair-s"><code>length</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>%</code><span class="md-plain">、<span class="md-pair-s"><code>inherit</code></span></span></span></span></span></span></span></span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-pair-s"><code>left</code></span></span></td>
<td><span class="td-span"><span class="md-plain">定义了定位元素左外边距边界与其包含块左边界之间的偏移。</span></span></td>
<td><span class="td-span"><span class="md-pair-s"><code>auto</code><span class="md-plain">、<span class="md-pair-s"><code>length</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>%</code><span class="md-plain">、<span class="md-pair-s"><code>inherit</code></span></span></span></span></span></span></span></span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-pair-s"><code>z-index</code></span></span></td>
<td><span class="td-span"><span class="md-plain">设置元素的堆叠顺序。</span></span></td>
<td><span class="td-span"><span class="md-pair-s"><code>number</code><span class="md-plain">、<span class="md-pair-s"><code>auto</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>inherit</code></span></span></span></span></span></span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-pair-s"><code>overflow</code></span></span></td>
<td><span class="td-span"><span class="md-plain">只工作于指定高度的块元素上,用于控制内容溢出元素框时显示的方式。</span></span></td>
<td><span class="td-span"><span class="md-pair-s"><code>auto</code><span class="md-plain">、<span class="md-pair-s"><code>hidden</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>scroll</code><span class="md-plain">、<span class="md-pair-s"><code>visible</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>inherit</code></span></span></span></span></span></span></span></span></span></span></span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-pair-s"><code>overflow-x</code></span></span></td>
<td><span class="td-span"><span class="md-plain">指定如何处理右边/左边边缘的内容溢出元素的内容区域。</span></span></td>
<td><span class="td-span"><span class="md-pair-s"><code>auto</code><span class="md-plain">、<span class="md-pair-s"><code>hidden</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>scroll</code><span class="md-plain">、<span class="md-pair-s"><code>visible</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>no-display</code><span class="md-plain">、<span class="md-pair-s"><code>no-content</code></span></span></span></span></span></span></span></span></span></span></span></span></span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-pair-s"><code>overflow-y</code></span></span></td>
<td><span class="td-span"><span class="md-plain">指定如何处理顶部/底部边缘的内容溢出元素的内容区域。</span></span></td>
<td><span class="td-span"><span class="md-pair-s"><code>auto</code><span class="md-plain">、<span class="md-pair-s"><code>hidden</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>scroll</code><span class="md-plain">、<span class="md-pair-s"><code>visible</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>no-display</code><span class="md-plain">、<span class="md-pair-s"><code>no-content</code></span></span></span></span></span></span></span></span></span></span></span></span></span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-pair-s"><code>clip</code></span></span></td>
<td><span class="td-span"><span class="md-plain">剪辑一个绝对定位的元素。</span></span></td>
<td><span class="td-span"><span class="md-pair-s"><code>shape</code><span class="md-plain">、<span class="md-pair-s"><code>auto</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>inherit</code></span></span></span></span></span></span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-pair-s"><code>cursor</code></span></span></td>
<td><span class="td-span"><span class="md-plain">显示光标移动到指定的类型。</span></span></td>
<td><span class="td-span"><span class="md-pair-s"><code>auto</code><span class="md-plain">、<span class="md-pair-s"><code>default</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>pointer</code><span class="md-plain">、<span class="md-pair-s"><code>crosshair</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>move</code><span class="md-plain">、<span class="md-pair-s"><code>wait</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>text</code><span class="md-plain">、<span class="md-pair-s"><code>help</code><span class="md-plain">、<span class="md-pair-s"><code>url</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>e-resize</code><span class="md-plain">、<span class="md-pair-s"><code>ne-resize</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>nw-resize</code><span class="md-plain">、<span class="md-pair-s"><code>n-resize</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>se-resize</code><span class="md-plain">、<span class="md-pair-s"><code>sw-resize</code><span class="md-plain">、<span class="md-br md-tag"> <span class="md-pair-s"><code>s-resize</code><span class="md-plain">、<span class="md-pair-s"><code>w-resize</code><span class="md-plain">、</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></td>
</tr>
</tbody>
</table>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>弹性盒子</strong><span class="md-plain">(Flexbox)</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">现代新式布局,设置一维弹性布局,用于简化响应式布局。适合简单对齐和空间分配。</span></p>
<p class="md-end-block md-p"><span class="md-plain">弹性盒子由<span class="md-pair-s "><strong>弹性容器</strong><span class="md-plain">(Flex container)和<span class="md-pair-s "><strong>弹性子元素</strong><span class="md-plain">(Flex item)组成。</span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">通过设置 <span class="md-pair-s"><code>display</code><span class="md-plain">属性的值为 <span class="md-pair-s"><code>flex</code><span class="md-plain"> 或 <span class="md-pair-s"><code>inline-flex</code><span class="md-plain"> ,将显示布局定义为<span class="md-pair-s "><strong>弹性容器</strong><span class="md-plain">。弹性容器内包含了一个或多个<span class="md-pair-s "><strong>弹性子元素</strong><span class="md-plain">。</span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s "><strong>相关属性</strong><span class="md-plain">:<span class="md-pair-s"><code>flex</code><span class="md-plain">,<span class="md-pair-s"><code>flex-basis</code><span class="md-plain">,<span class="md-pair-s"><code>flex-direction</code><span class="md-plain">,<span class="md-pair-s"><code>flex-flow</code><span class="md-plain">,<span class="md-pair-s"><code>flex-grow</code><span class="md-plain">,<span class="md-pair-s"><code>flex-shrink</code><span class="md-plain">,<span class="md-pair-s"><code>flex-wrap</code><span class="md-plain">,<span class="md-pair-s"><code>order</code><span class="md-plain">,<span class="md-pair-s"><code>align-content</code><span class="md-plain">,<span class="md-pair-s"><code>align-items</code><span class="md-plain">,<span class="md-pair-s"><code>align-self</code><span class="md-plain">,<span class="md-pair-s"><code>justify-content</code><span class="md-plain">,<span class="md-pair-s"><code>place-content</code><span class="md-plain">,<span class="md-pair-s"><code>row-gap</code><span class="md-plain">,<span class="md-pair-s"><code>column-gap</code><span class="md-plain">,<span class="md-pair-s"><code>gap</code><span class="md-plain">。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-direction</code><span class="md-plain">(指定弹性子元素在父容器中的位置):<span class="md-pair-s"><code>row | row-reverse | column | column-reverse;</code><span class="md-plain">。</span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>row</code><span class="md-plain">:横向从左到右排列(左对齐),默认的排列方式。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>row-reverse</code><span class="md-plain">:反转横向排列(右对齐,从后往前排,最后一项排在最前面。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>column</code><span class="md-plain">:纵向排列。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>column-reverse</code><span class="md-plain">:反转纵向排列,从后往前排,最后一项排在最上面。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-wrap</code><span class="md-plain">(用于指定弹性盒子的子元素换行方式):<span class="md-pair-s"><code>nowrap | wrap | wrap-reverse | initial | inherit;</code><span class="md-plain">。</span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>nowrap</code><span class="md-plain">: 默认, 弹性容器为单行。该情况下弹性子项可能会溢出容器。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>wrap</code><span class="md-plain">:弹性容器为多行。该情况下弹性子项溢出的部分会被放置到新行,子项内部会发生断行。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>wrap-reverse</code><span class="md-plain">:反转 wrap 排列。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-flow</code><span class="md-plain">(设置或检索弹性盒模型对象的子元素排列方式):<span class="md-pair-s"><code>flex-direction flex-wrap|initial|inherit;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex</code><span class="md-plain">(设置弹性盒子的子元素如何分配空间):<span class="md-pair-s"><code>flex-grow flex-shrink flex-basis|auto|initial|inherit;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-grow</code><span class="md-plain">(设置或检索弹性盒子的扩展比率):<span class="md-pair-s"><code>number | initial | inherit;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-shrink</code><span class="md-plain">(flex 元素的收缩大小):<span class="md-pair-s"><code>number | initial | inherit;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-basis</code><span class="md-plain">(设置或检索弹性盒伸缩基准值):<span class="md-pair-s"><code>number | auto | initial | inherit;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>justify-content</code><span class="md-plain">(沿着弹性容器的主轴线(横轴),进行内容对齐):<span class="md-pair-s"><code>flex-start | flex-end | center | space-between | space-around;</code><span class="md-plain">。</span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-start</code><span class="md-plain">:弹性项目向行头紧挨着填充。这个是默认值。第一个弹性项的main-start外边距边线被放置在该行的main-start边线,而后续弹性项依次平齐摆放。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-end</code><span class="md-plain">:弹性项目向行尾紧挨着填充。第一个弹性项的main-end外边距边线被放置在该行的main-end边线,而后续弹性项依次平齐摆放。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>center</code><span class="md-plain">:弹性项目居中紧挨着填充。(如果剩余的自由空间是负的,则弹性项目将在两个方向上同时溢出)。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>space-between</code><span class="md-plain">:弹性项目平均分布在该行上。如果剩余空间为负或者只有一个弹性项,则该值等同于flex-start。否则,第1个弹性项的外边距和行的main-start边线对齐,而最后1个弹性项的外边距和行的main-end边线对齐,然后剩余的弹性项分布在该行上,相邻项目的间隔相等。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>space-around</code><span class="md-plain">:弹性项目平均分布在该行上,两边留有一半的间隔空间。如果剩余空间为负或者只有一个弹性项,则该值等同于center。否则,弹性项目沿该行分布,且彼此间隔相等(比如是20px),同时首尾两边和弹性容器之间留有一半的间隔(1/2*20px=10px)。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>align-items</code><span class="md-plain">(设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式):<span class="md-pair-s"><code>flex-start | flex-end | center | baseline | stretch;</code><span class="md-plain">。</span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-start</code><span class="md-plain">:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-end</code><span class="md-plain">:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>center</code><span class="md-plain">:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>baseline</code><span class="md-plain">:如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>stretch</code><span class="md-plain">:如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>align-content</code><span class="md-plain">(用于修改 <span class="md-pair-s"><code>flex-wrap</code><span class="md-plain"> 属性的行为):<span class="md-pair-s"><code>flex-start | flex-end | center | space-between | space-around | stretch;</code><span class="md-plain">。</span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>align-content</code><span class="md-plain"> 类似于 <span class="md-pair-s"><code>align-items</code><span class="md-plain">, 但 <span class="md-pair-s"><code>align-content</code><span class="md-plain"> 不是设置弹性子元素的对齐,而是设置各个行的对齐。</span></span></span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>stretch</code><span class="md-plain">:默认。各行将会伸展以占用剩余的空间。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-start</code><span class="md-plain">:各行向弹性盒容器的起始位置堆叠。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-end</code><span class="md-plain">:各行向弹性盒容器的结束位置堆叠。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>center</code><span class="md-plain">:各行向弹性盒容器的中间位置堆叠。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>space-between</code><span class="md-plain">:各行在弹性盒容器中平均分布。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>space-around</code><span class="md-plain">:各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>align-self</code><span class="md-plain">(在弹性子元素上使用,覆盖容器的 align-items 属性):<span class="md-pair-s"><code>auto | stretch | center | flex-start | flex-end | baseline | initial | inherit;</code><span class="md-plain">。</span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>auto</code><span class="md-plain">:默认值。元素继承了它的父容器的 align-items 属性。如果没有父容器则为 "stretch"。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>stretch</code><span class="md-plain">:元素被拉伸以适应容器。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>center</code><span class="md-plain">:元素位于容器的中心。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-start</code><span class="md-plain">:元素位于容器的开头。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>flex-end</code><span class="md-plain">:元素位于容器的结尾。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>baseline</code><span class="md-plain">:元素位于容器的基线上。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>initial</code><span class="md-plain">:设置该属性为它的默认值。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>inherit</code><span class="md-plain">:从父元素继承该属性。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>order</code><span class="md-plain">(设置弹性盒子的子元素排列顺序):<span class="md-pair-s"><code>number | initial | inherit;</code><span class="md-plain">。</span></span></span></span></p>
</li>
</ul>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">.flexbox-container </span>{<span style="color: rgba(255, 0, 0, 1)">
display</span>:<span style="color: rgba(0, 0, 255, 1)"> flex</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 创建弹性容器 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
justify-content</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 水平居中对齐 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> justify-content: space-between; </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 主轴对齐方式 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
align-items</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 垂直居中对齐 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> align-items: center; </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 交叉轴对齐方式 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}</pre>
</div>
<p> </p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>网格布局</strong><span class="md-plain">(Grid)</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">现代新式布局,设置二维网格布局,用于实现复杂页面结构。网格是一组相交的水平线和垂直线,分别定义网格的列和行。</span></p>
<p class="md-end-block md-p"><span class="md-plain">通过设置 <span class="md-pair-s"><code>display</code><span class="md-plain">属性的值为 <span class="md-pair-s"><code>grid</code><span class="md-plain"> 或 <span class="md-pair-s"><code>inline-grid</code><span class="md-plain"> ,将显示布局定义为<span class="md-pair-s "><strong>网格容器</strong><span class="md-plain">。网格容器带有<span class="md-pair-s "><strong>行</strong><span class="md-plain">和<span class="md-pair-s "><strong>列</strong><span class="md-plain">,可以更轻松地设计网页,而无需使用浮动和定位。</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">网格引入了(<span class="md-pair-s "><strong>fr</strong><span class="md-plain"> 单位),可以创建灵活的网格轨道。一个(<span class="md-pair-s "><strong>fr</strong><span class="md-plain"> 单位)代表网格容器中可用空间的一等份。</span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s "><strong>相关属性</strong><span class="md-plain">:<span class="md-pair-s"><code>grid-template-columns</code><span class="md-plain">,<span class="md-pair-s"><code>grid-template-rows</code><span class="md-plain">,<span class="md-pair-s"><code>grid-template-areas</code><span class="md-plain">,<span class="md-pair-s"><code>grid-template</code><span class="md-plain">,<span class="md-pair-s"><code>grid-auto-columns</code><span class="md-plain">,<span class="md-pair-s"><code>grid-auto-rows</code><span class="md-plain">,<span class="md-pair-s"><code>grid-auto-flow</code><span class="md-plain">,<span class="md-pair-s"><code>grid</code><span class="md-plain">,<span class="md-pair-s"><code>grid-row-start</code><span class="md-plain">,<span class="md-pair-s"><code>grid-column-start</code><span class="md-plain">,<span class="md-pair-s"><code>grid-row-end</code><span class="md-plain">,<span class="md-pair-s"><code>grid-column-end</code><span class="md-plain">,<span class="md-pair-s"><code>grid-row</code><span class="md-plain">,<span class="md-pair-s"><code>grid-column</code><span class="md-plain">,<span class="md-pair-s"><code>grid-area</code><span class="md-plain">,<span class="md-pair-s"><code>grid-row-gap</code><span class="md-plain">,<span class="md-pair-s"><code>grid-column-gap</code><span class="md-plain">,<span class="md-pair-s"><code>grid-gap</code><span class="md-plain">。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid</code><span class="md-plain">( CSS 所有网格容器的简写属性),可以用来设置以下属性:</span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">显式网格属性: <span class="md-pair-s"><code>grid-template-rows</code><span class="md-plain">、<span class="md-pair-s"><code>grid-template-columns</code><span class="md-plain"> 和 <span class="md-pair-s"><code>grid-template-areas</code><span class="md-plain">。</span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">隐式网格属性: <span class="md-pair-s"><code>grid-auto-rows</code><span class="md-plain">、<span class="md-pair-s"><code>grid-auto-columns</code><span class="md-plain"> 和 <span class="md-pair-s"><code>grid-auto-flow</code><span class="md-plain">。</span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">间距属性: <span class="md-pair-s"><code>grid-row-gap</code><span class="md-plain"> 和 <span class="md-pair-s"><code>grid-column-gap</code><span class="md-plain">。</span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-template</code><span class="md-plain">(设置网格中行、列与分区):<span class="md-pair-s"><code>none | grid-template-rows/grid-template-columns | grid-template-areas | initial | inherit;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-template-rows</code><span class="md-plain">(定义网格中的行):<span class="md-pair-s"><code>none | auto | max-content | min-content | length | initial | inherit;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-template-columns</code><span class="md-plain">(定义网格中的列):<span class="md-pair-s"><code>none | auto | max-content | min-content | length | initial | inherit;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-template-areas</code><span class="md-plain">(指定如何显示行和列,使用网格元素的名称来布局网格):<span class="md-pair-s"><code>none | itemnames;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-auto-rows</code><span class="md-plain">(设置网格容器中行的默认大小):<span class="md-pair-s"><code>auto | max-content | min-content | length;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-auto-columns</code><span class="md-plain">(设置网格容器中列的默认大小):<span class="md-pair-s"><code>auto | max-content | min-content | length;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-auto-flow</code><span class="md-plain">(指定自动布局算法,精确指定自动布局的元素排列):<span class="md-pair-s"><code>row | column | dense | row dense | column dense;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-gap</code><span class="md-plain">(同时设置行间距和列间距):<span class="md-pair-s"><code>grid-row-gap grid-column-gap</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-row-gap</code><span class="md-plain">(定义网格行间距):<span class="md-pair-s"><code>length | %</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-column-gap</code><span class="md-plain">(定义网格列间距):<span class="md-pair-s"><code>length | %</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-row</code><span class="md-plain">(同时指定网格元素行线的开始位置和结束位置):<span class="md-pair-s"><code>grid-row-start / grid-row-end;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-area</code><span class="md-plain">(指定网格元素在网格布局中的大小和位置):<span class="md-pair-s"><code>grid-row-start / grid-column-start / grid-row-end / grid-column-end | itemname;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-row-start</code><span class="md-plain">(指定网格元素行线的开始位置):<span class="md-pair-s"><code>auto | row-line;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-row-end</code><span class="md-plain">(指定网格元素行线的结束位置):<span class="md-pair-s"><code>auto | row-line | span n;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-column</code><span class="md-plain">(同时指定网格元素列线的开始位置和结束位置):<span class="md-pair-s"><code>grid-column-start / grid-column-end;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-column-start</code><span class="md-plain">(指定网格元素列线的开始位置):<span class="md-pair-s"><code>auto | span n | column-line;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>grid-column-end</code><span class="md-plain">(指定网格元素列线的结束位置):<span class="md-pair-s"><code>auto | span n | column-line;</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>justify-content</code><span class="md-plain"> (用于对齐容器内的网格,设置如何分配顺着弹性容器主轴(或者网格行轴) 的元素之间及其周围的空间),网格的总宽度必须小于容器的宽度才能使 <span class="md-pair-s"><code>justify-content</code><span class="md-plain"> 属性生效。。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>align-content</code><span class="md-plain">(用于设置垂直方向上的网格元素在容器中的对齐方式),网格元素的总高度必须小于容器的高度才能使 <span class="md-pair-s"><code>align-content</code><span class="md-plain"> 属性生效。</span></span></span></span></p>
</li>
</ul>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">.grid-container </span>{<span style="color: rgba(255, 0, 0, 1)">
display</span>:<span style="color: rgba(0, 0, 255, 1)"> grid</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 创建网格容器 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
grid-template-columns</span>:<span style="color: rgba(0, 0, 255, 1)"> 1fr 2fr</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 列宽比例 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> grid-template-columns: repeat(3, 1fr);</span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 3 列等宽 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
gap</span>:<span style="color: rgba(0, 0, 255, 1)"> 10px</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 网格间隔 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}</pre>
</div>
<p> </p>
<p class="md-end-block md-p"><span class="md-plain"> <span class="md-pair-s "><strong>参考函数</strong><span class="md-plain">:<span class="md-pair-s"><code>repeat()</code><span class="md-plain">,<span class="md-pair-s"><code>minmax()</code><span class="md-plain">,<span class="md-pair-s"><code>fit-content()</code><span class="md-plain">。</span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain"> <span class="md-pair-s "><strong>相关术语</strong><span class="md-plain">:网格(Grid),网格线(Grid lines),网格轨道(Grid tracks),网格单元格(Grid cell),网格区域(Grid areas),网格间隙(Gutters),网格轴(Grid Axis),网格行(Grid row),网格列(Grid column)。</span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>弹性盒子</strong><span class="md-plain">和<span class="md-pair-s "><strong>网格布局</strong><span class="md-plain">的示例</span></span></span></span></p>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 示例:居中元素 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
.container </span>{<span style="color: rgba(255, 0, 0, 1)">
display</span>:<span style="color: rgba(0, 0, 255, 1)"> flex</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 传统flex方案 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
justify-content</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;<span style="color: rgba(255, 0, 0, 1)">
align-items</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.container </span>{<span style="color: rgba(255, 0, 0, 1)">
display</span>:<span style="color: rgba(0, 0, 255, 1)"> grid</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 现代grid方案 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
place-items</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 一行代码实现居中 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}</pre>
</div>
<p> </p>
<h3 class="md-end-block md-heading"><span class="md-plain">4.3 响应式设计</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>媒体查询</strong><span class="md-plain">(Media Queries)</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">使用<span class="md-pair-s"><code>@media</code><span class="md-plain">媒体查询,适配不同设备尺寸,根据设备特性(如屏幕宽度)应用不同的样式,适配不同终端(PC/平板/手机)。</span></span></span></p>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">@media screen and (max-width: 768px) </span>{ <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 屏幕宽度小于768px时应用 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
body {
font-size</span>:<span style="color: rgba(0, 0, 255, 1)"> 14px</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.container </span>{<span style="color: rgba(255, 0, 0, 1)">
flex-direction</span>:<span style="color: rgba(0, 0, 255, 1)"> column</span>;
}<span style="color: rgba(128, 0, 0, 1)">
}</span></pre>
</div>
<p> </p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">多媒体类型</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">all:用于所有多媒体类型设备。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">print:用于打印机。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">screen:用于电脑屏幕,平板,智能手机等。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">speech:用于屏幕阅读器。</span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">多媒体查询语法</span></p>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">@media not|only mediatype and (expressions) </span>{<span style="color: rgba(255, 0, 0, 1)">
CSS 代码...;
</span>}
<span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> not: not是用来排除掉某些特定的设备的。 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> only: 用来定某种特别的媒体类型。 </span><span style="color: rgba(0, 128, 0, 1)">*/</span></pre>
</div>
<p> </p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">在不同的媒体上使用不同的样式文件</span></p>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">link </span><span style="color: rgba(255, 0, 0, 1)">rel</span><span style="color: rgba(0, 0, 255, 1)">="stylesheet"</span><span style="color: rgba(255, 0, 0, 1)"> media</span><span style="color: rgba(0, 0, 255, 1)">="mediatype and|not|only (expressions)"</span><span style="color: rgba(255, 0, 0, 1)"> href</span><span style="color: rgba(0, 0, 255, 1)">="select.css"</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p> </p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>视口单位</strong><span class="md-plain">(Viewport Units)</span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>vw</code><span class="md-plain">(视口宽度)(视口宽度的百分比)。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>vh</code><span class="md-plain">(视口高度)(视口高度的百分比)。</span></span></p>
</li>
</ul>
</li>
</ul>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">5 常用 CSS 样式</span></h2>
<h3 class="md-end-block md-heading"><span class="md-plain">5.1 文本相关样式</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>color</code><span class="md-plain">(颜色):<span class="md-pair-s"><code>red | #ff0000 | rgb(255,0,0) | rgba(255,0,0,0.5)</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>font-size</code><span class="md-plain">(字号):<span class="md-pair-s"><code>14px | 1em | 2rem | 100%</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>font-weight</code><span class="md-plain">(字重):<span class="md-pair-s"><code>normal | light | bold | 500</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>font-style</code><span class="md-plain">(字体样式):<span class="md-pair-s"><code>normal | italic | oblique</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>font-family</code><span class="md-plain">(字体类型):<span class="md-pair-s"><code>"黑体", "宋体", "Microsoft Yahei", "Times New Roman"</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>direction</code><span class="md-plain">(文本方向):<span class="md-pair-s"><code>ltr | rtl | inherit</code></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>unicode-bidi</code><span class="md-plain">(文本是否被重写):<span class="md-pair-s"><code>normal | embed | bidi-override | initial | inherit</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>text-transform</code><span class="md-plain">(文本转换):<span class="md-pair-s"><code>uppercase | lowercase | capitalize</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>text-decoration</code><span class="md-plain">(文本装饰线):<span class="md-pair-s"><code>none | underline | overline | line-through</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>text-indent</code><span class="md-plain">(文本缩进):<span class="md-pair-s"><code>16px | 2em | 1rem</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>text-shadow</code><span class="md-plain">(文本阴影):<span class="md-pair-s"><code>h-shadow v-shadow blur color</code><span class="md-plain">;</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>text-align</code><span class="md-plain">(文本水平对齐):<span class="md-pair-s"><code>left | center | right | justify</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>vertical-align</code><span class="md-plain">(非块级元素垂直对齐):<span class="md-pair-s"><code>top | middle | bottom</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>line-height</code><span class="md-plain">(文本行高):<span class="md-pair-s"><code>16px | 32px</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>letter-spacing</code><span class="md-plain">(字符间距):<span class="md-pair-s"><code>2px | -2px</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>word-spacing</code><span class="md-plain">(字间距):<span class="md-pair-s"><code>12px | 22px</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>white-space</code><span class="md-plain">(元素内空白):<span class="md-pair-s"><code>pre | pre-line | pre-wrap | nowrap</code><span class="md-plain">。</span></span></span></span></p>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">5.2 盒模型相关样式</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>content</code><span class="md-plain">(内容),用于在元素的 <span class="md-pair-s"><code>::before</code><span class="md-plain">和 <span class="md-pair-s"><code>::after</code><span class="md-plain">伪元素中插入内容。使用 <span class="md-pair-s"><code>content</code><span class="md-plain"> 属性插入的内容都是匿名的<span class="md-pair-s "><strong>可替换元素</strong><span class="md-plain">。</span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>padding</code><span class="md-plain">(内边距),该属性为给定元素设置所有四个(上右下左)方向的内边距属性。</span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s "><strong>单个</strong><span class="md-plain">设置值会统一应用于(<span class="md-pair-s "><strong>所有边</strong><span class="md-plain">),<span class="md-pair-s "><strong>两个</strong><span class="md-plain">设置值则应用于(<span class="md-pair-s "><strong>上边下边</strong><span class="md-plain">,<span class="md-pair-s "><strong>左边右边</strong><span class="md-plain">),<span class="md-pair-s "><strong>三个</strong><span class="md-plain">设置值则应用于(<span class="md-pair-s "><strong>上边</strong><span class="md-plain">,<span class="md-pair-s "><strong>左边右边</strong><span class="md-plain">,<span class="md-pair-s "><strong>下边</strong><span class="md-plain">),<span class="md-pair-s "><strong>四个</strong><span class="md-plain">设置值则分别按(顺时针方向)应用于(<span class="md-pair-s "><strong>上边</strong><span class="md-plain">,<span class="md-pair-s "><strong>右边</strong><span class="md-plain">,<span class="md-pair-s "><strong>下边</strong><span class="md-plain">,<span class="md-pair-s "><strong>左边</strong><span class="md-plain">)。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>padding</code><span class="md-plain">(内边距):<span class="md-pair-s"><code>length | %</code><span class="md-plain">。</span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>padding</code><span class="md-plain">(内边距)可细分为:</span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>padding-top</code><span class="md-plain">(上方内边距):<span class="md-pair-s"><code>length | %</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>padding-right</code><span class="md-plain">(右方内边距):<span class="md-pair-s"><code>length | %</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>padding-bottom</code><span class="md-plain">(下方内边距):<span class="md-pair-s"><code>length | %</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>padding-left</code><span class="md-plain">(左方内边距):<span class="md-pair-s"><code>length | %</code><span class="md-plain">。</span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>border</code><span class="md-plain">(边框),该属性最多只接受三个参数,分别是<span class="md-pair-s "><strong>宽度</strong><span class="md-plain">、<span class="md-pair-s "><strong>风格</strong><span class="md-plain">和<span class="md-pair-s "><strong>颜色</strong><span class="md-plain">,这样会使得四条边的边框相同。也可以使用一个,两个或三个值来指定 <span class="md-pair-s"><code>border</code><span class="md-plain"> 属性,值的顺序无关紧要。(可按四边分为 <span class="md-pair-s"><code>border-top</code><span class="md-plain">、<span class="md-pair-s"><code>border-right</code><span class="md-plain">、<span class="md-pair-s"><code>border-bottom</code><span class="md-plain">、<span class="md-pair-s"><code>border-left</code><span class="md-plain">)。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>border</code><span class="md-plain">(边框):<span class="md-pair-s"><code>border-width border-style border-color</code><span class="md-plain">。</span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">可细分为:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>border-width</code><span class="md-plain">:边框<span class="md-pair-s "><strong>宽度</strong><span class="md-plain">。(支持单值、双值、三值、四值分别设置四个边,也可按四边分为 <span class="md-pair-s"><code>border-top-width</code><span class="md-plain">、<span class="md-pair-s"><code>border-right-width</code><span class="md-plain">、<span class="md-pair-s"><code>border-bottom-width</code><span class="md-plain">、<span class="md-pair-s"><code>border-left-width</code><span class="md-plain">)。</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>border-width</code><span class="md-plain">(边框<span class="md-pair-s "><strong>宽度</strong><span class="md-plain">):<span class="md-pair-s"><code>thin | medium | thick | length</code><span class="md-plain">。</span></span></span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>thin</code><span class="md-plain">:定义细的边框。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>medium</code><span class="md-plain">:定义中等粗细的边框。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>thick</code><span class="md-plain">:定义粗的边框。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>length</code><span class="md-plain">:自定义边框的粗细宽度。</span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>border-style</code><span class="md-plain">:边框<span class="md-pair-s "><strong>风格</strong><span class="md-plain">。(支持单值、双值、三值、四值分别设置四个边,也可按四边分为 <span class="md-pair-s"><code>border-top-style</code><span class="md-plain">、<span class="md-pair-s"><code>border-right-style</code><span class="md-plain">、<span class="md-pair-s"><code>border-bottom-style</code><span class="md-plain">、<span class="md-pair-s"><code>border-left-style</code><span class="md-plain">)。</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>outline-style</code><span class="md-plain">(边框<span class="md-pair-s "><strong>风格</strong><span class="md-plain">):<span class="md-pair-s"><code>none | dotted | dashed | solid | double | groove | ridge | inset | outset</code><span class="md-plain">。</span></span></span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>none</code><span class="md-plain">:和关键字 <span class="md-pair-s"><code>hidden</code><span class="md-plain"> 类似,不显示边框。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>hidden</code><span class="md-plain">:和关键字 <span class="md-pair-s"><code>none</code><span class="md-plain"> 类似,不显示边框。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>dotted</code><span class="md-plain">:显示为一系列圆点,圆点半径是 <span class="md-pair-s"><code>border-width</code><span class="md-plain">计算值的一半。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>dashed</code><span class="md-plain">:显示为一系列短的方形虚线。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>solid</code><span class="md-plain">:显示为一条实线。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>double</code><span class="md-plain">:显示为一条双实线,宽度是 <span class="md-pair-s"><code>border-width</code><span class="md-plain"> 。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>groove</code><span class="md-plain">:显示为三维沟槽雕刻效果的边框,样式与 <span class="md-pair-s"><code>ridge</code><span class="md-plain"> 相反。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>ridge</code><span class="md-plain">:显示为三维脊状浮雕效果的边框,样式与 <span class="md-pair-s"><code>groove</code><span class="md-plain"> 相反。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>inset</code><span class="md-plain">:显示为三维嵌入效果的边框,样式与 <span class="md-pair-s"><code>outset</code><span class="md-plain"> 相反。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>outset</code><span class="md-plain">:显示为三维突出效果的边框,样式与 <span class="md-pair-s"><code>inset</code><span class="md-plain"> 相反。</span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>border-color</code><span class="md-plain">:边框<span class="md-pair-s "><strong>颜色</strong><span class="md-plain">。(支持单值、双值、三值、四值分别设置四个边,也可按四边分为 <span class="md-pair-s"><code>border-top-color</code><span class="md-plain">、<span class="md-pair-s"><code>border-right-color</code><span class="md-plain">、<span class="md-pair-s"><code>border-bottom-color</code><span class="md-plain">、<span class="md-pair-s"><code>border-left-color</code><span class="md-plain">)。</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>border-color</code><span class="md-plain">(边框<span class="md-pair-s "><strong>颜色</strong><span class="md-plain">):<span class="md-pair-s"><code>color-name | hex-number | rgb-number | transparent</code><span class="md-plain">。</span></span></span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>color</code><span class="md-plain">:指定背景颜色。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">值为<span class="md-pair-s"><code>transparent</code><span class="md-plain">:指定边框的颜色是透明的。</span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>border-radius</code><span class="md-plain">:边框<span class="md-pair-s "><strong>圆角</strong><span class="md-plain">。(支持单值、双值、三值、四值分别设置四个角,也可按四角分为 <span class="md-pair-s"><code>border-top-left-radius</code><span class="md-plain">、<span class="md-pair-s"><code>border-top-right-radius</code><span class="md-plain">、<span class="md-pair-s"><code>border-bottom-right-radius</code><span class="md-plain">、<span class="md-pair-s"><code>border-bottom-left-radius</code><span class="md-plain">)。</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>border-radius</code><span class="md-plain">(边框圆角):<span class="md-pair-s"><code>(1-4个 length | %) / (1-4个 length | %)</code><span class="md-plain">。</span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>单值语法</strong><span class="md-plain">:<span class="md-pair-s"><code>border-radius: length|%</code><span class="md-plain">,这一个值表示所有的边框宽度。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>双值语法:</strong><span class="md-plain"> <span class="md-pair-s"><code>border-radius: length|% length|%</code><span class="md-plain">,第一个值表示 top-left 和 bottom-right 方向的角;第二个值表示 top-right 和 bottom-left 方向的角。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>三值语法</strong><span class="md-plain">:<span class="md-pair-s"><code>border-radius: length|% length|% length|%</code><span class="md-plain">,第一个值表示 top-left 方向的角,第二个值表示 top-right 和 bottom-left 方向的角,第三个值表示 bottom-right 方向的角。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>四值语法</strong><span class="md-plain">:<span class="md-pair-s"><code>border-radius: length|% length|% length|% length|%</code><span class="md-plain">,这四个值分别表示 top-left、top-right、bottom-right、bottom-left,即从 top-left 开始的顺时针顺序。</span></span></span></span></p>
</li>
</ul>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>margin</code><span class="md-plain">(外边距),该属性为给定元素设置所有四个(上右下左)方向的外边距属性。</span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s "><strong>单个</strong><span class="md-plain">设置值会统一应用于(<span class="md-pair-s "><strong>所有边</strong><span class="md-plain">),<span class="md-pair-s "><strong>两个</strong><span class="md-plain">设置值则应用于(<span class="md-pair-s "><strong>上边下边</strong><span class="md-plain">,<span class="md-pair-s "><strong>左边右边</strong><span class="md-plain">),<span class="md-pair-s "><strong>三个</strong><span class="md-plain">设置值则应用于(<span class="md-pair-s "><strong>上边</strong><span class="md-plain">,<span class="md-pair-s "><strong>左边右边</strong><span class="md-plain">,<span class="md-pair-s "><strong>下边</strong><span class="md-plain">),<span class="md-pair-s "><strong>四个</strong><span class="md-plain">设置值则分别按(顺时针方向)应用于(<span class="md-pair-s "><strong>上边</strong><span class="md-plain">,<span class="md-pair-s "><strong>右边</strong><span class="md-plain">,<span class="md-pair-s "><strong>下边</strong><span class="md-plain">,<span class="md-pair-s "><strong>左边</strong><span class="md-plain">)。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>margin</code><span class="md-plain">(外边距):<span class="md-pair-s"><code>auto | length | %</code><span class="md-plain">。</span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>margin</code><span class="md-plain">(外边距)可细分为:</span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>margin-top</code><span class="md-plain">(上方外边距):<span class="md-pair-s"><code>auto | length | %</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>margin-right</code><span class="md-plain">(右方外边距):<span class="md-pair-s"><code>auto | length | %</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>margin-bottom</code><span class="md-plain">(下方外边距):<span class="md-pair-s"><code>auto | length | %</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>margin-left</code><span class="md-plain">(左方外边距):<span class="md-pair-s"><code>auto | length | %</code><span class="md-plain">。</span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>outline</code><span class="md-plain">(轮廓),绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。可按顺序设置(<span class="md-pair-s"><code>outline-color outline-style outline-width</code><span class="md-plain">)</span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">可细分为:</span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>outline-color</code><span class="md-plain">(轮廓的颜色):<span class="md-pair-s"><code>color-name | hex-number | rgb-number | invert</code><span class="md-plain">。</span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>outline-style</code><span class="md-plain">(轮廓的样式):<span class="md-pair-s"><code>none | dotted | dashed | solid | double | groove | ridge | inset | outset</code><span class="md-plain">。</span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>outline-width</code><span class="md-plain">(轮廓的宽度):<span class="md-pair-s"><code>thin | medium | thick | length</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>box-shadow</code><span class="md-plain">(阴影)。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>width</code><span class="md-plain">(宽度):<span class="md-pair-s"><code>100px | 1em | 2rem</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>height</code><span class="md-plain">(高度):<span class="md-pair-s"><code>100px | 1em | 2rem</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">5.3 显示相关样式</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>display</code><span class="md-plain">(显示)用于设置元素是<span class="md-pair-s "><strong>块级</strong><span class="md-plain">盒子(占用整行)或是<span class="md-pair-s "><strong>行级</strong><span class="md-plain">盒子(仅需必要宽度,不强制换行)。<span class="md-pair-s"><code>display</code><span class="md-plain"> 也可用于设置子元素的布局,例如:<span class="md-pair-s "><strong>文档流式布局</strong><span class="md-plain">、<span class="md-pair-s "><strong>弹性盒子布局</strong><span class="md-plain">、<span class="md-pair-s "><strong>网格布局</strong><span class="md-plain">。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>display</code><span class="md-plain">(显示)用于设置一个元素应如何显示,<span class="md-pair-s"><code>display:none;</code><span class="md-plain">可以隐藏某个元素,且隐藏的元素不会占用任何空间。</span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>visibility</code><span class="md-plain">(可见性)用于指定一个元素可见或隐藏。<span class="md-pair-s"><code>visibility:hidden;</code><span class="md-plain">可以隐藏元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。</span></span></span></span></p>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 预组合值 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
display: block; </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 块级 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
display: inline; </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 行内 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
display: inline-block; </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 行内块 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
display: flex; </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 弹性盒子 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
display: inline-flex;
display: grid; </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 网格布局 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
display: inline-grid;
display: flow-root;
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 生成盒子 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
display: none;
display: contents;
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 多关键字语法 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
display: block flex;
display: block flow;
display: block flow-root;
display: block grid;
display: inline flex;
display: inline flow;
display: inline flow-root;
display: inline grid;
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 其他值 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
display: table;
display: table-row; </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 所有的 table 元素 都有等效的 CSS display 值 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
display: list-item;
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 全局值 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
display: inherit;
display: initial;
display: revert;
display: revert-layer;
display: unset;</span></pre>
</div>
<p> </p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">关键值可以被分组为六个种类:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>display-outside</code><span class="md-plain">,<span class="md-pair-s "><strong>外部表现</strong><span class="md-plain">,规定元素的外部显示类型。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>display-inside</code><span class="md-plain">,<span class="md-pair-s "><strong>内部表现</strong><span class="md-plain">,元素的内部显示类型,其定义了该内容布局时的格式上下文的类型。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>display-listitem</code><span class="md-plain">,<span class="md-pair-s "><strong>列表元素</strong><span class="md-plain">,为内容生成一个块级盒子和一个单独的列表元素行级盒子。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>display-internal</code><span class="md-plain">,<span class="md-pair-s "><strong>内部</strong><span class="md-plain">,一些布局模型,例如 <span class="md-pair-s"><code>table</code><span class="md-plain"> 和 <span class="md-pair-s"><code>ruby</code><span class="md-plain"> 有一个复杂的内置结构,它们的子孙后代可以扮演几个不同的角色。</span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>display-box</code><span class="md-plain">,<span class="md-pair-s "><strong>盒</strong><span class="md-plain">,定义一个元素到底是否产生 display 盒。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>display-legacy</code><span class="md-plain">,<span class="md-pair-s "><strong>预组合</strong><span class="md-plain">,对相同布局模式的块级和行级变体需要单独的关键字。</span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>position</code><span class="md-plain">(定位):<span class="md-pair-s"><code>static | relative | absolute | fixed</code><span class="md-plain"> 。</span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>static</code><span class="md-plain">(静态定位),<span class="md-pair-s"><code>relative</code><span class="md-plain">(相对定位)。<span class="md-pair-s"><code>absolute</code><span class="md-plain">(绝对定位),<span class="md-pair-s"><code>fixed(</code><span class="md-plain">固定定位)。</span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>top</code><span class="md-plain">(上坐标),<span class="md-pair-s"><code>right</code><span class="md-plain">(右坐标),<span class="md-pair-s"><code>bottom</code><span class="md-plain">(下坐标),<span class="md-pair-s"><code>left</code><span class="md-plain">(左坐标)。</span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>z-index</code><span class="md-plain">(层叠)。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>float</code><span class="md-plain">(浮动):<span class="md-pair-s"><code>left | right</code><span class="md-plain"> 。</span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">清除浮动:<span class="md-pair-s"><code>overflow</code><span class="md-plain">:<span class="md-pair-s"><code>hidden</code><span class="md-plain"> 。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">清除浮动:<span class="md-pair-s"><code>clear</code><span class="md-plain">:<span class="md-pair-s"><code>left | right | both</code><span class="md-plain"> 。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">设置父级盒子的固定高度:<span class="md-pair-s"><code>height</code><span class="md-plain"> 。</span></span></span></p>
</li>
</ul>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">5.4 背景相关样式</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>background</code><span class="md-plain">:背景。</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">样式设置语法:<span class="md-pair-s"><code>background:#颜色值 url("图像") 是否重复 固定或滚动 图像起始位置;</code><span class="md-plain">。</span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">可细分为如下5种样式。</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>background-color</code><span class="md-plain">:背景颜色。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>background-image</code><span class="md-plain">:背景图像。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>background-repeat</code><span class="md-plain">:背景图像重复。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>background-attachment</code><span class="md-plain">:背景图像是否固定或者随着页面的其余部分滚动。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>background-position</code><span class="md-plain">:背景图像的起始位置。</span></span></p>
</li>
</ul>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">5.5 链接列表表格样式</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">链接相关样式:</span></p>
<ol class="ol-list" start="">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>a:link</code><span class="md-plain">(未访问过的链接):可以用颜色、字体、背景等样式属性。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>a:visited</code><span class="md-plain">(用户已访问过的链接):可以用颜色、字体、背景等样式属性。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>a:hover</code><span class="md-plain">(当用户鼠标放在链接上时):可以用颜色、字体、背景等样式属性。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>a:active</code><span class="md-plain">(链接被点击的那一刻):可以用颜色、字体、背景等样式属性。</span></span></p>
</li>
</ol></li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">列表相关样式:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>list-style</code><span class="md-plain">(ul/ol列表样式):<span class="md-pair-s"><code>none | circle | disc | decimal</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>list-style-type</code><span class="md-plain">(ul 列表项标记):<span class="md-pair-s"><code>circle、square</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>list-style-type</code><span class="md-plain">(ol 列表项标记):<span class="md-pair-s"><code>lower-alpha、upper-roman</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>list-style-position</code><span class="md-plain">(列表项标志的位置):<span class="md-pair-s"><code>inside | outside</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>list-style-image</code><span class="md-plain">(作为列表项标记的图像):<span class="md-pair-s"><code>url('xxx.gif')</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">表格相关样式:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>border</code><span class="md-plain">(边框)。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>border-collapse</code><span class="md-plain">(折叠边框):<span class="md-pair-s"><code>collapse</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>width</code><span class="md-plain">(宽)。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>height</code><span class="md-plain">(高)。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>text-align</code><span class="md-plain">(水平对齐)。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>vertical-align</code><span class="md-plain">(垂直对齐)。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>padding</code><span class="md-plain">(内边距填充):<span class="md-pair-s"><code>10px</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>color</code><span class="md-plain">(颜色)。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>background-color</code><span class="md-plain">(背景颜色)。</span></span></p>
</li>
</ul>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">5.6 元素尺寸样式</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>width</code><span class="md-plain">(元素的宽度):<span class="md-pair-s"><code>auto | length | %</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>height</code><span class="md-plain">(元素的高度):<span class="md-pair-s"><code>auto | length | %</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>max-width</code><span class="md-plain">(元素的最大宽度):<span class="md-pair-s"><code>none | length | %</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>max-height</code><span class="md-plain">(元素的最大高度):<span class="md-pair-s"><code>none | length | %</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>min-width</code><span class="md-plain">(元素的最小宽度):<span class="md-pair-s"><code>length | %</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>min-height</code><span class="md-plain">(元素的最小高度):<span class="md-pair-s"><code>length | %</code><span class="md-plain"> 。</span></span></span></span></p>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">5.7 溢出和浮动样式</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>overflow</code><span class="md-plain">(溢出)只工作于指定高度的块元素上,用于控制内容溢出元素框时显示的方式。</span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>overflow:visible;</code><span class="md-plain">:内容不会被修剪,会呈现在元素框之外。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>overflow:hidden;</code><span class="md-plain">:内容会被修剪,并且其余内容是不可见的。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>overflow:scroll;</code><span class="md-plain">:内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>overflow:auto;</code><span class="md-plain">:如果内容出现被修剪,则浏览器会显示滚动条以便查看其余的内容。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>overflow:inherit;</code><span class="md-plain">:从父元素继承 overflow 属性的值。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>float</code><span class="md-plain">(浮动)会使元素向左或向右移动,其周围的元素也会重新排列,通常是用于图像。</span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>float</code><span class="md-plain">(浮动):<span class="md-pair-s"><code>none | left | right | inherit;</code><span class="md-plain">。</span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">在布局时,是水平方向浮动,元素只能左右移动而不能上下移动。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">浮动元素之后的元素将围绕它(例如图像是左浮动,文本流将环绕在它右边)。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">如果把几个浮动的元素放到一起,且有空间的话,这几个浮动元素会彼此相邻。</span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">clear(清除):不允许元素周围有浮动元素,即指定元素两侧不能出现浮动元素。</span></p>
<p class="md-end-block md-p"><span class="md-plain">clear(清除):<span class="md-pair-s"><code>none | left | right | both | inherit;</code><span class="md-plain">。</span></span></span></p>
</li>
</ul>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">6 颜色与单位</span></h2>
<h3 class="md-end-block md-heading"><span class="md-plain">6.1 颜色值</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">.color-name </span>{<span style="color: rgba(255, 0, 0, 1)"> color</span>:<span style="color: rgba(0, 0, 255, 1)"> red</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 颜色名称 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
.hex-code </span>{<span style="color: rgba(255, 0, 0, 1)"> color</span>:<span style="color: rgba(0, 0, 255, 1)"> #FF0000</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 十六进制 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
.rgb-value </span>{<span style="color: rgba(255, 0, 0, 1)"> color</span>:<span style="color: rgba(0, 0, 255, 1)"> rgb(255, 0, 0)</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> RGB值 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
.rgba-value </span>{<span style="color: rgba(255, 0, 0, 1)"> color</span>:<span style="color: rgba(0, 0, 255, 1)"> rgba(255, 0, 0, 0.5)</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 带透明度 </span><span style="color: rgba(0, 128, 0, 1)">*/</span></pre>
</div>
<p> </p>
<h3 class="md-end-block md-heading"><span class="md-plain">6.2 单位</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">.px-unit </span>{<span style="color: rgba(255, 0, 0, 1)"> font-size</span>:<span style="color: rgba(0, 0, 255, 1)"> 16px</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 固定像素 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
.em-unit </span>{<span style="color: rgba(255, 0, 0, 1)"> font-size</span>:<span style="color: rgba(0, 0, 255, 1)"> 1.5em</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 相对于父元素 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
.rem-unit </span>{<span style="color: rgba(255, 0, 0, 1)"> font-size</span>:<span style="color: rgba(0, 0, 255, 1)"> 1.2rem</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 相对于根元素 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
.percentage </span>{<span style="color: rgba(255, 0, 0, 1)"> width</span>:<span style="color: rgba(0, 0, 255, 1)"> 50%</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 百分比 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
.vw-vh </span>{<span style="color: rgba(255, 0, 0, 1)"> width</span>:<span style="color: rgba(0, 0, 255, 1)"> 50vw</span>; } <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 视口宽度的50% </span><span style="color: rgba(0, 128, 0, 1)">*/</span></pre>
</div>
<p> </p>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">7 关键特性</span></h2>
<h3 class="md-end-block md-heading"><span class="md-plain">7.1 优先级(Specificity)</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">多个样式规则可叠加作用于同一元素,当多个样式规则冲突时,通过<span class="md-pair-s "><strong>优先级</strong><span class="md-plain">规则(如特异性、来源顺序)确定最终应用的样式。CSS 样式有不同的优先级,优先级高的样式规则会覆盖优先级低的。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">优先级规则(<span class="md-pair-s "><strong>从高到低</strong><span class="md-plain">):</span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>!important</code><span class="md-plain">(例外规则,强制覆盖)。应该尽量避免,因为这会破坏了样式表中的固有的级联规则 使得调试找 bug 变得更加困难了。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">行内样式(inline),在 HTML 元素的 <span class="md-pair-s"><code>style</code><span class="md-plain"> 属性中定义的样式。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">ID 选择器(例如<span class="md-pair-s"><code>#example</code><span class="md-plain">)。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">类选择器(例如<span class="md-pair-s"><code>.example</code><span class="md-plain">),属性选择器(例如<span class="md-pair-s"><code></code><span class="md-plain">),伪类(例如<span class="md-pair-s"><code>:hover</code><span class="md-plain">)。</span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">元素标签选择器(例如<span class="md-pair-s"><code>h1</code><span class="md-plain">),伪元素(例如<span class="md-pair-s"><code>::before</code><span class="md-plain">)。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">继承样式(inheritance)。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">通配符选择器(<span class="md-pair-s"><code>*</code><span class="md-plain">)。</span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>通配选择器</strong><span class="md-plain">(universal selector)(<span class="md-pair-s"><code>*</code><span class="md-plain">)、<span class="md-pair-s "><strong>关系选择器</strong><span class="md-plain">(combinator)(<span class="md-pair-s"><code>+</code><span class="md-plain">、<span class="md-pair-s"><code>></code><span class="md-plain">、<span class="md-pair-s"><code>~</code><span class="md-plain">、<span class="md-pair-s"><code>" "</code><span class="md-plain">、<span class="md-pair-s"><code>||</code><span class="md-plain">)和 <span class="md-pair-s "><strong>否定伪类</strong><span class="md-plain">(negation pseudo-class)(<span class="md-pair-s"><code>:not()</code><span class="md-plain">)对优先级没有影响。但是,在 <span class="md-pair-s"><code>:not()</code><span class="md-plain"> 内部声明的选择器会影响优先级。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>优先级建议</strong></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">更好地利用 CSS 级联属性。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">使用更具体的规则。在你选择的元素之前,增加一个或多个其他元素,使选择器变得更加具体,并获得更高的优先级。</span></p>
</li>
</ul>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">7.2 继承(Inheritance)</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> 子元素自动继承父元素样式(如<span class="md-pair-s"><code>font-family</code><span class="md-plain">),部分属性(如<span class="md-pair-s"><code>margin</code><span class="md-plain">)不继承。</span></span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">当元素的一个<span class="md-pair-s "><strong>继承属性</strong><span class="md-plain">(inherited property)没有指定值时,则取父元素的同属性的计算值。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">某些属性(如 <span class="md-pair-s"><code>color</code><span class="md-plain">、<span class="md-pair-s"><code>font-family</code><span class="md-plain">)会从父元素自动继承到子元素。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">不可继承的属性(如 <span class="md-pair-s"><code>border</code><span class="md-plain">、<span class="md-pair-s"><code>margin</code><span class="md-plain">)需要显式设置。</span></span></span></span></span></p>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">7.3 层叠(Cascading)</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> 层叠是 CSS 的一个基本特征,它是一个定义了如何合并来自多个源的属性值的算法。它在 CSS 处于核心地位,CSS 的全称层叠样式表正是强调了这一点。</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">CSS 声明的来源</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>用户代理样式</strong><span class="md-plain">:浏览器会有一个基本的样式表来给任何网页设置默认样式。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>页面作者样式</strong><span class="md-plain">:网页的作者可以定义文档的样式,这是最常见的样式表。大多数情况下此类型样式表会定义多个,它们构成网站的视觉和体验,即主题。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>读者用户样式</strong><span class="md-plain">:读者,作为浏览器的用户,可以使用自定义样式表定制使用体验。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">层叠顺序(<span class="md-pair-s "><strong>从高到低</strong><span class="md-plain">)</span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">假如层叠顺序相等,则使用哪个值取决于<span class="md-pair-s "><strong>优先级</strong><span class="md-plain">(Specificity)。</span></span></span></p>
<ol class="ol-list" start="">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">CSS 过渡 (CSS Transition)</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">用户代理样式的<span class="md-pair-s"><code>!important</code></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">读者用户样式的<span class="md-pair-s"><code>!important</code></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">页面作者样式的<span class="md-pair-s"><code>!important</code></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">CSS 动画(CSS Animation)</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">页面作者样式</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">读者用户样式</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">用户代理样式</span></p>
</li>
</ol></li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">重置样式</span></p>
<p class="md-end-block md-p"><span class="md-plain">当 CSS 对样式完成更改之后,也许会在某种情况下希望还原到一个已知样式上,这可能发生在动画、主题修改之类的情形中。CSS 属性 <span class="md-pair-s"><code>all</code><span class="md-plain">能够快速地把(几乎)所有 CSS 属性设置到一个已知样式上。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">层叠层/级联层</span></p>
<p class="md-end-block md-p"><span class="md-plain">使用 <span class="md-pair-s"><code>@layer</code><span class="md-plain"> 声明了一个<span class="md-pair-s "><strong>层叠层/级联层</strong><span class="md-plain">,同一层内的规则将级联在一起,这给予了开发者对层叠机制的更多控制。</span></span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">一个层叠层同样可以通过 <span class="md-pair-s"><code>@import</code><span class="md-plain">来创建,规则存在于被引入的样式表内:<span class="md-pair-s"><code>@import (utilities.css) layer(utilities);</code><span class="md-plain">。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">可以创建带命名的层叠层,但不指定任何样式。例如,单一的命名层:<span class="md-pair-s"><code>@layer utilities;</code><span class="md-plain">。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">多个命名层也可以被同时定义。例如:<span class="md-pair-s"><code>@layer theme, layout, utilities;</code><span class="md-plain">。</span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">对于多个命名层的声明而言,如果同一声明在多个层叠层中被指定,<span class="md-pair-s "><strong>最后一层</strong><span class="md-plain">中的将优先于其他层。因此,在上面的例子中,如果 <span class="md-pair-s"><code>theme</code><span class="md-plain"> 层和 <span class="md-pair-s"><code>utilities</code><span class="md-plain"> 层中存在冲突的规则,那么 <span class="md-pair-s"><code>utilities</code><span class="md-plain"> 层中的将优先被应用。</span></span></span></span></span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">层叠层的嵌套</span></p>
<p class="md-end-block md-p"><span class="md-plain">层叠层允许嵌套,例如: </span></p>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">@layer framework </span>{<span style="color: rgba(255, 0, 0, 1)">
@layer layout {
</span>}<span style="color: rgba(128, 0, 0, 1)">
}</span></pre>
</div>
<p> </p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">嵌套层的附加规则</span></p>
<p class="md-end-block md-p"><span class="md-plain">向 <span class="md-pair-s"><code>framework</code><span class="md-plain"> 层内部的 <span class="md-pair-s"><code>layout</code><span class="md-plain"> 层附加规则,只需用 <span class="md-pair-s"><code>.</code><span class="md-plain"> 连接这两层。</span></span></span></span></span></span></span></p>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">@layer framework.layout </span>{<span style="color: rgba(255, 0, 0, 1)">
p {
margin-block</span>:<span style="color: rgba(0, 0, 255, 1)"> 1rem</span>;
}<span style="color: rgba(128, 0, 0, 1)">
}</span></pre>
</div>
<p> </p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">匿名层</span></p>
<p class="md-end-block md-p"><span class="md-plain">如果创建了一个层叠层但并未指定名字,则称为一个匿名层。除创建后无法向其添加规则外,该层和其他命名层功能一致。例如:</span></p>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">@layer </span>{<span style="color: rgba(255, 0, 0, 1)">
p {
margin-block</span>:<span style="color: rgba(0, 0, 255, 1)"> 1rem</span>;
}<span style="color: rgba(128, 0, 0, 1)">
}</span></pre>
</div>
<p> </p>
<h3 class="md-end-block md-heading"><span class="md-plain">7.4 格式化上下文(Formatting Context)</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>行内格式化上下文</strong><span class="md-plain">(Inline Formatting Context),是一个网页的渲染结果的一部分。 </span></span></p>
<p class="md-end-block md-p"><span class="md-plain">其中,各行内框(inline box)一个接一个地排列,其排列顺序根据书写模式(writing-mode)的设置来决定:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">对于水平书写模式,各个框从左边开始水平地排列。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">对于垂直书写模式,各个框从顶部开始水平地排列。</span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>区块格式化上下文</strong><span class="md-plain">(Block Formatting Context,BFC),是 Web 页面的可视 CSS 渲染的一部分,是块级盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">区块格式化上下文(BFC)是一个<span class="md-pair-s "><strong>独立的布局</strong><span class="md-plain">环境,BFC 内部的元素布局与外部互相<span class="md-pair-s "><strong>不影响</strong><span class="md-plain">。BFC 有一套属于<span class="md-pair-s "><strong>自己的规则</strong><span class="md-plain">:</span></span></span></span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">BFC 的区域不会与浮动 Box 重叠。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">BFC 是一个<span class="md-pair-s "><strong>独立容器</strong><span class="md-plain">,BFC 内部的元素布局与外部互相<span class="md-pair-s "><strong>不影响</strong><span class="md-plain">。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">计算 BFC 的高度时,浮动子元素也要参与计算。</span></p>
</li>
</ul>
<p class="md-end-block md-p"><span class="md-plain">下列方式会<span class="md-pair-s "><strong>创建</strong><span class="md-plain">区块格式化上下文:</span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">文档的根元素(<span class="md-pair-s"><code><html></code><span class="md-plain">)。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">浮动元素(即 <span class="md-pair-s"><code>float</code><span class="md-plain">值不为 <span class="md-pair-s"><code>none</code><span class="md-plain"> 的元素)。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">绝对定位元素(<span class="md-pair-s"><code>position</code><span class="md-plain">值为 <span class="md-pair-s"><code>absolute</code><span class="md-plain"> 或 <span class="md-pair-s"><code>fixed</code><span class="md-plain"> 的元素)。</span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">行内块元素(<span class="md-pair-s"><code>display</code><span class="md-plain">值为 <span class="md-pair-s"><code>inline-block</code><span class="md-plain"> 的元素)。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">表格单元格(<span class="md-pair-s"><code>display</code><span class="md-plain">值为 <span class="md-pair-s"><code>table-cell</code><span class="md-plain">,HTML 表格单元格默认值)。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">表格标题(<span class="md-pair-s"><code>display</code><span class="md-plain"> 值为 <span class="md-pair-s"><code>table-caption</code><span class="md-plain">,HTML 表格标题默认值)。</span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">匿名表格单元格元素(<span class="md-pair-s"><code>display</code><span class="md-plain">值为 <span class="md-pair-s"><code>table</code><span class="md-plain">(HTML 表格默认值)、<span class="md-pair-s"><code>table-row</code><span class="md-plain">(表格行默认值)、<span class="md-pair-s"><code>table-row-group</code><span class="md-plain">(表格体默认值)、<span class="md-pair-s"><code>table-header-group</code><span class="md-plain">(表格头部默认值)、<span class="md-pair-s"><code>table-footer-group</code><span class="md-plain">(表格尾部默认值)或 <span class="md-pair-s"><code>inline-table</code><span class="md-plain">)。</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>overflow</code><span class="md-plain">值不为 <span class="md-pair-s"><code>visible</code><span class="md-plain"> 或 <span class="md-pair-s"><code>clip</code><span class="md-plain"> 的块级元素。</span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>display</code><span class="md-plain"> 值为 <span class="md-pair-s"><code>flow-root</code><span class="md-plain"> 的元素。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>contain</code><span class="md-plain">值为 <span class="md-pair-s"><code>layout</code><span class="md-plain">、<span class="md-pair-s"><code>content</code><span class="md-plain"> 或 <span class="md-pair-s"><code>paint</code><span class="md-plain"> 的元素。</span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">弹性元素(<span class="md-pair-s"><code>display</code><span class="md-plain"> 值为 <span class="md-pair-s"><code>flex</code><span class="md-plain"> 或 <span class="md-pair-s"><code>inline-flex</code><span class="md-plain"> 元素的直接子元素),如果它们本身既不是<span class="md-pair-s "><strong>弹性</strong><span class="md-plain">、<span class="md-pair-s "><strong>网格</strong><span class="md-plain">,也不是<span class="md-pair-s "><strong>表格</strong><span class="md-plain">容器。</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">网格元素(<span class="md-pair-s"><code>display</code><span class="md-plain"> 值为 <span class="md-pair-s"><code>grid</code><span class="md-plain"> 或 <span class="md-pair-s"><code>inline-grid</code><span class="md-plain"> 元素的直接子元素),如果它们本身既不是<span class="md-pair-s "><strong>弹性</strong><span class="md-plain">、<span class="md-pair-s "><strong>网格</strong><span class="md-plain">,也不是<span class="md-pair-s "><strong>表格</strong><span class="md-plain">容器。</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">多列容器(<span class="md-pair-s"><code>column-count</code><span class="md-plain">或 <span class="md-pair-s"><code>column-width</code><span class="md-plain">值不为 <span class="md-pair-s"><code>auto</code><span class="md-plain">,且含有 <span class="md-pair-s"><code>column-count: 1</code><span class="md-plain"> 的元素)。</span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>column-span</code><span class="md-plain"> 值为 <span class="md-pair-s"><code>all</code><span class="md-plain"> 的元素始终会创建一个新的格式化上下文,即使该元素没有包裹在一个多列容器中)</span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">格式化上下文影响布局,通常,我们会为定位和清除浮动创建新的 BFC,而不是更改布局,因为它将:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">包含内部浮动。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">排除外部浮动。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">阻止<span class="md-pair-s "><strong>外边距重叠</strong><span class="md-plain">。</span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">块级格式化上下文(BFC )的常用场景</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">解决浮动元素使父级元素的高度坍塌问题。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">解决非浮动元素被浮动元素覆盖问题。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">解决盒子顶底外边距重合问题。</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">两栏自适应布局,一侧是有固定宽度和浮动的固定栏,另一侧为开启 BFC 的不固定栏。</span></p>
</li>
</ul>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">7.5 变量(Custom Properties)</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> 定义和复用样式值(可复用的值):</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">:root </span>{<span style="color: rgba(255, 0, 0, 1)">
--primary-color</span>:<span style="color: rgba(0, 0, 255, 1)"> #3498db</span>;
}<span style="color: rgba(128, 0, 0, 1)">
button </span>{<span style="color: rgba(255, 0, 0, 1)">
background</span>:<span style="color: rgba(0, 0, 255, 1)"> var(--primary-color)</span>;
}</pre>
</div>
<p> </p>
<h3 class="md-end-block md-heading"><span class="md-plain">7.6 函数与运算</span></h3>
<ol class="ol-list" start="">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">使用<span class="md-pair-s"><code>calc()</code><span class="md-plain">。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">进行动态计算:</span></p>
</li>
</ol>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">width: calc(100% - 20px);</span></pre>
</div>
<p> </p>
<h3 class="md-end-block md-heading"><span class="md-plain">7.7 逻辑属性(Logical Properties)</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> 基于书写模式(如左到右或右到左)自动适配布局:</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">.text </span>{<span style="color: rgba(255, 0, 0, 1)">
margin-inline-start</span>:<span style="color: rgba(0, 0, 255, 1)"> 20px</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 自动适配 LTR/RTL </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}</pre>
</div>
<p> </p>
<h3 class="md-end-block md-heading"><span class="md-plain">7.8 动画与过渡</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>过渡</strong><span class="md-plain">(Transition)</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">通过 <span class="md-pair-s"><code>transition</code><span class="md-plain"> ,平滑改变属性值,实现平滑动画效果,提升用户体验。使页面元素显示从一种样式转变到另一个的时候,无需使用 Flash 动画或 JavaScript 脚本。</span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>transition</code><span class="md-plain">(过渡):<span class="md-pair-s"><code>property duration timing-function delay;</code></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">可细分为:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>transition-property</code><span class="md-plain">(需要应用过渡的 CSS 属性名):<span class="md-pair-s"><code>`none | all | property</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>transition-duration</code><span class="md-plain">(定义过渡效果需要花费的时间):<span class="md-pair-s"><code>time</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>transition-timing-function</code><span class="md-plain">(规定过渡效果的时间曲线):<span class="md-pair-s"><code>linear | ease | ease-in | ease-out | ease-in-out | cubic-bezier(n,n,n,n)</code><span class="md-plain">。</span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>linear</code><span class="md-plain">:匀速过渡效果。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>ease</code><span class="md-plain">:默认值,缓慢加速,然后缓慢减速的过渡效果。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>ease-in</code><span class="md-plain">:缓慢加速的过渡效果。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>ease-out</code><span class="md-plain">:缓慢减速的过渡效果。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>ease-in-out</code><span class="md-plain">:先缓慢加速,再缓慢减速的过渡效果。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>cubic-bezier(n,n,n,n)</code><span class="md-plain">:自定义的贝塞尔曲线函数,通过四个值来定义曲线的控制点,分别对应 <span class="md-pair-s"><code>x1</code><span class="md-plain">、<span class="md-pair-s"><code>y1</code><span class="md-plain">、<span class="md-pair-s"><code>x2</code><span class="md-plain">、<span class="md-pair-s"><code>y2</code><span class="md-plain">。</span></span></span></span></span></span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>transition-delay</code><span class="md-plain">(过渡效果延迟开始的时间,默认是0):<span class="md-pair-s"><code>time</code><span class="md-plain">。</span></span></span></span></p>
</li>
</ul>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">.button </span>{<span style="color: rgba(255, 0, 0, 1)">
background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> blue</span>;<span style="color: rgba(255, 0, 0, 1)">
transition</span>:<span style="color: rgba(0, 0, 255, 1)"> background-color 0.3s ease</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 过渡 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}<span style="color: rgba(128, 0, 0, 1)">
.button:hover </span>{ <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 悬停时颜色渐变 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> red</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.box </span>{<span style="color: rgba(255, 0, 0, 1)">
transition</span>:<span style="color: rgba(0, 0, 255, 1)"> transform 0.3s ease</span>; <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 过渡 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
}<span style="color: rgba(128, 0, 0, 1)">
.box:hover </span>{ <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 悬停时颜色渐变 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(255, 0, 0, 1)">
transform</span>:<span style="color: rgba(0, 0, 255, 1)"> scale(1.1)</span>;
}</pre>
</div>
<p> </p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>动画</strong><span class="md-plain">(Animation)</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">通过 <span class="md-pair-s"><code>@keyframes</code><span class="md-plain"> 定义复杂动画,提升用户体验。CSS 动画可以取代许多网页动画图像、Flash 动画和 JavaScript 实现的效果。</span></span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>animation</code><span class="md-plain">(动画):<span class="md-pair-s"><code>name duration timing-function delay iteration-count direction fill-mode play-state;</code></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>animation-name</code><span class="md-plain">(指定要绑定到选择器的关键帧的名称):<span class="md-pair-s"><code>keyframename | none</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>animation-duration</code><span class="md-plain">(指定动画需要多少秒或毫秒完成):<span class="md-pair-s"><code>time</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>animation-timing-function</code><span class="md-plain">(设置动画将如何完成一个周期):<span class="md-pair-s"><code>linear | ease | ease-in | ease-out | ease-in-out | steps(int,start|end) | cubic-bezier(n,n,n,n)</code><span class="md-plain">。</span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>linear</code><span class="md-plain">:动画从头到尾的速度是相同的。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>ease</code><span class="md-plain">:默认。动画以低速开始,然后加快,在结束前变慢。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>ease-in</code><span class="md-plain">:动画以低速开始。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>ease-out</code><span class="md-plain">:动画以低速结束。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>ease-in-out</code><span class="md-plain">:动画以低速开始和结束。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>steps(int,start|end)</code><span class="md-plain">:指定了时间函数中的间隔数量(步长)。</span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>int</code><span class="md-plain"> 指定函数的间隔数,该参数是一个正整数(大于 0)。 </span></span></p>
<p class="md-end-block md-p"><span class="md-pair-s"><code>start|end</code><span class="md-plain"> 表示动画是从时间段的开头连续(start 直接开始)还是末尾连续(end 戛然而止)。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>cubic-bezier(n,n,n,n)</code><span class="md-plain">:在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>animation-delay</code><span class="md-plain">(设置动画在启动前的延迟时间):<span class="md-pair-s"><code>time</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>animation-iteration-count</code><span class="md-plain">(定义动画的播放次数或无限次):<span class="md-pair-s"><code>n | infinite</code><span class="md-plain">。</span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>animation-direction</code><span class="md-plain">(指定是否应该轮流反向播放动画。):<span class="md-pair-s"><code>normal | reverse | alternate | alternate-reverse | initial | inherit</code><span class="md-plain">。</span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>normal</code><span class="md-plain">:默认值。动画按正常播放。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>reverse</code><span class="md-plain">:动画反向播放。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>alternate</code><span class="md-plain">:动画在奇数次(1、3、5...)正向播放,在偶数次(2、4、6...)反向播放。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>alternate-reverse</code><span class="md-plain">:动画在奇数次(1、3、5...)反向播放,在偶数次(2、4、6...)正向播放。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>initial</code><span class="md-plain">:设置该属性为它的默认值。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>inherit</code><span class="md-plain">:从父元素继承该属性。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>animation-fill-mode</code><span class="md-plain">(当动画不播放时、完成时,或有延迟未开始播放时,要应用到元素的样式):<span class="md-pair-s"><code>none | forwards | backwards | both | initial | inherit</code><span class="md-plain">。</span></span></span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>none</code><span class="md-plain">:默认值。动画在动画执行之前和之后不会应用任何样式到目标元素。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>forwards</code><span class="md-plain">:在动画结束后(由 animation-iteration-count 决定),动画将应用该属性值。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>backwards</code><span class="md-plain">:动画将应用在 animation-delay 定义期间启动动画的第一次迭代的关键帧中定义的属性值。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>both</code><span class="md-plain">:动画遵循 forwards 和 backwards 的规则。也就是说,动画会在两个方向上扩展动画属性。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>initial</code><span class="md-plain">:设置该属性为它的默认值。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>inherit</code><span class="md-plain">:从父元素继承该属性。</span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s"><code>animation-play-state</code><span class="md-plain">(指定动画是否正在运行或已暂停):<span class="md-pair-s"><code>paused | running</code><span class="md-plain">。</span></span></span></span></p>
</li>
</ul>
</li>
</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 关键帧动画 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
@keyframes fadeIn </span>{<span style="color: rgba(255, 0, 0, 1)">
from { opacity</span>:<span style="color: rgba(0, 0, 255, 1)"> 0</span>; }<span style="color: rgba(128, 0, 0, 1)">
to </span>{<span style="color: rgba(255, 0, 0, 1)"> opacity</span>:<span style="color: rgba(0, 0, 255, 1)"> 1</span>; }<span style="color: rgba(128, 0, 0, 1)">
}
.element </span>{<span style="color: rgba(255, 0, 0, 1)">
animation</span>:<span style="color: rgba(0, 0, 255, 1)"> fadeIn 2s forwards</span>;
}<span style="color: rgba(128, 0, 0, 1)">
@keyframes slide </span>{<span style="color: rgba(255, 0, 0, 1)">
0% {
transform</span>:<span style="color: rgba(0, 0, 255, 1)"> translateX(0)</span>;
}<span style="color: rgba(128, 0, 0, 1)">
100% </span>{<span style="color: rgba(255, 0, 0, 1)">
transform</span>:<span style="color: rgba(0, 0, 255, 1)"> translateX(100px)</span>;
}<span style="color: rgba(128, 0, 0, 1)">
}
.animate </span>{<span style="color: rgba(255, 0, 0, 1)">
animation</span>:<span style="color: rgba(0, 0, 255, 1)"> slide 2s infinite</span>;
}</pre>
</div>
<p> </p>
<h3 class="md-end-block md-heading"><span class="md-plain">7.9 CSS 的外边距折叠</span></h3>
<p class="md-end-block md-p"><span class="md-plain"> 区块的上下<span class="md-pair-s "><strong>外边距</strong><span class="md-plain">有时会合并(折叠)为单个边距,其大小为两个边距中的最大值(或如果它们相等,则仅为其中一个),这种行为称为<span class="md-pair-s "><strong>外边距折叠</strong><span class="md-plain">。</span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain"> 注意:有设定<span class="md-pair-s "><strong>浮动</strong><span class="md-plain">和<span class="md-pair-s "><strong>绝对定位</strong><span class="md-plain">的元素不会发生外边距折叠。</span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain"> 有三种情况会形成外边距折叠:</span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>相邻的兄弟元素</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">相邻的同级元素之间的外边距会被折叠(除非后面的元素需要<span class="md-meta-i-cmd-link"><span class="md-plain">清除</span><span class="md-plain">之前的浮动)。</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>没有内容将父元素和后代元素分开</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">如果没有设定边框(border)、内边距(padding)、行级(inline)内容,也没有创建<span class="md-pair-s "><strong>区块格式化上下文</strong><span class="md-plain">或<span class="md-pair-s "><strong>间隙</strong><span class="md-plain">来分隔块级元素的上边距 <span class="md-pair-s"><code>margin-top</code><span class="md-plain"> 与其内一个或多个子代块级元素的上边距 <span class="md-pair-s"><code>margin-top</code><span class="md-plain">;</span></span></span></span></span></span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">或者没有设定边框、内边距、行级内容、高度 <span class="md-pair-s"><code>height</code><span class="md-plain"> 或最小高度 <span class="md-pair-s"><code>min-height</code><span class="md-plain"> 来分隔块级元素的下边距 <span class="md-pair-s"><code>margin-bottom</code><span class="md-plain"> 与其内部的一个或多个后代后代块元素的下边距 <span class="md-pair-s"><code>margin-bottom</code><span class="md-plain">,则会出现这些外边距的折叠,重叠部分最终会溢出到父代元素的外面。</span></span></span></span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>空的区块</strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">如果块级元素没有设定边框、内边距、行级内容、高度<span class="md-pair-s"><code>height</code><span class="md-plain">、最小高度<span class="md-pair-s"><code>min-height</code><span class="md-plain">来分隔块级元素的上边距 <span class="md-pair-s"><code>margin-top</code><span class="md-plain"> 及其下边距 <span class="md-pair-s"><code>margin-bottom</code><span class="md-plain">,则会出现其上下外边距的折叠。</span></span></span></span></span></span></span></span></span></p>
</li>
</ul>
<h3 class="md-end-block md-heading"><span class="md-plain">7.10 现代 CSS 新特性</span></h3>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>滚动条样式</strong><span class="md-plain">:<span class="md-pair-s"><code>scrollbar-gutter</code><span class="md-plain"> 和 <span class="md-pair-s"><code>scrollbar-color</code><span class="md-plain">。</span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>Ruby 排版</strong><span class="md-plain">:<span class="md-pair-s"><code>ruby-align</code><span class="md-plain"> 和 <span class="md-pair-s"><code>ruby-position</code><span class="md-plain">(用于注音文本)。</span></span></span></span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>锚点定位(Anchor Positioning)</strong><span class="md-plain">:简化动态定位(如弹出框)。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>嵌套(Nesting)</strong><span class="md-plain">:支持类似 Sass 的嵌套语法(需浏览器支持)。</span></span></p>
</li>
</ul>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">8 现代 CSS 技术</span></h2>
<h3 class="md-end-block md-heading"><span class="md-plain">8.1 CSS 预处理器</span></h3>
<p class="md-end-block md-p"><span class="md-plain">如 Sass/Less,支持嵌套、变量、混合宏:</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">$primary: #3498db;
.button </span>{<span style="color: rgba(255, 0, 0, 1)">
background</span>:<span style="color: rgba(0, 0, 255, 1)"> $primary</span>;<span style="color: rgba(255, 0, 0, 1)">
&</span>:<span style="color: rgba(0, 0, 255, 1)">hover { background: darken($primary, 10%)</span>; }<span style="color: rgba(128, 0, 0, 1)">
}</span></pre>
</div>
<p> </p>
<h3 class="md-end-block md-heading"><span class="md-plain">8.2 CSS 框架</span></h3>
<p class="md-end-block md-p"><span class="md-plain">Bootstrap、Tailwind CSS 等提供预设组件与工具类。</span></p>
<h3 class="md-end-block md-heading"><span class="md-plain">8.3 CSS-in-JS</span></h3>
<p class="md-end-block md-p"><span class="md-plain">在 JavaScript 中编写 CSS(如Styled Components)。</span></p>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">9 学习实践建议</span></h2>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>使用外部样式表</strong><span class="md-plain">:提升代码复用率与可维护性。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong><span class="md-plain">避免滥用<span class="md-pair-s"><code>!important</code></span></span></strong><span class="md-plain">:防止优先级混乱。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>采用CSS预处理器</strong><span class="md-plain">:如 Sass/Less,支持变量、嵌套等高级功能。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>命名规范</strong><span class="md-plain">:使用BEM(Block__Element--Modifier)提高可维护性。</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>性能优化</strong><span class="md-plain">:</span></span></p>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">减少选择器复杂度(避免<span class="md-pair-s"><code>div > ul > li</code><span class="md-plain">)</span></span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">使用 <span class="md-pair-s"><code>transform</code><span class="md-plain">/<span class="md-pair-s"><code>opacity</code><span class="md-plain"> 触发GPU加速动画</span></span></span></span></span></p>
</li>
</ul>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-pair-s "><strong>浏览器兼容性</strong><span class="md-plain">:通过 Autoprefixer 等工具自动添加厂商前缀(如<span class="md-pair-s"><code>-webkit-</code><span class="md-plain">)。</span></span></span></span></p>
</li>
</ul>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">10 学习资源</span></h2>
<ul class="ul-list" data-mark="-">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">文档教程</span></p>
<p class="md-end-block md-p"><span class="md-meta-i-cmd-link"><span class="md-plain">MDN CSS教程</span><span class="md-plain">(官方文档)(developer.mozilla.org)</span></span></p>
<p class="md-end-block md-p"><span class="md-meta-i-cmd-link"><span class="md-plain">CSS 教程 | 菜鸟教程</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">在线工具</span></p>
<p class="md-end-block md-p"><span class="md-meta-i-cmd-link"><span class="md-plain">CSS Tricks指南</span><span class="md-plain">(实战技巧和布局示例)(css-tricks.com)</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">进阶技巧与案例</span></p>
<p class="md-end-block md-p"><span class="md-meta-i-cmd-link"><span class="md-plain">Flexbox小游戏</span><span class="md-plain">(交互式Flexbox练习游戏)(flexboxfroggy.com)</span></span></p>
<p class="md-end-block md-p"><span class="md-meta-i-cmd-link"><span class="md-plain">Grid小游戏</span><span class="md-plain">(Grid布局学习工具)(cssgridgarden.com)</span></span></p>
<p class="md-end-block md-p"><span class="md-meta-i-cmd-link"><span class="md-plain">anchoreum</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">网格布局工具</span></p>
<p class="md-end-block md-p"><span class="md-meta-i-cmd-link"><span class="md-plain">CSS Grid Generator (Drag & Drop)</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">框架</span></p>
<p class="md-end-block md-p"><span class="md-meta-i-cmd-link"><span class="md-plain">Tailwind CSS</span><span class="md-plain">(实用优先的 CSS 框架)</span></span></p>
<p class="md-end-block md-p"><span class="md-meta-i-cmd-link"><span class="md-plain">Bootstrap</span><span class="md-plain">(响应式 UI 组件库)</span></span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">书籍</span></p>
<p class="md-end-block md-p"><span class="md-plain">《CSS 基础教程》(Simon Collison)</span></p>
<p class="md-end-block md-p"><span class="md-plain">《CSS 权威指南》(Eric A. Meyer)</span></p>
</li>
</ul>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">11 总结</span></h2>
<p class="md-end-block md-p"><span class="md-plain"> CSS 是前端开发的基石之一,与 HTML(结构)、JavaScript(行为)并称网页三剑客。</span></p>
<p class="md-end-block md-p"><span class="md-plain"> CSS 作为网页设计的核心语言,通过简洁的语法实现对网页样式的精细控制。CSS 通过层叠、继承等机制实现样式与结构的分离,显著提升开发效率与用户体验。从基础的文本美化到复杂的响应式布局,其功能覆盖现代网页开发的全场景。掌握选择器、盒模型、布局技术等要点,是构建高性能、可维护网站的关键。</span></p>
<p class="md-end-block md-p"><span class="md-plain"> CSS 通过推动响应式设计与动态效果的普及,不断演进(如 CSS3 模块化、变量 <span class="md-pair-s"><code>--var()</code><span class="md-plain">、容器查询 <span class="md-pair-s"><code>@container</code><span class="md-plain">),持续提升开发者对样式的底层控制能力,是构建现代 Web 界面的基石,是构建现代 Web 界面不可或缺的工具。</span></span></span></span></span></p>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<h2 class="md-end-block md-heading"><span class="md-plain">内容目录</span></h2>
<div class="md-toc md-end-block md-focus">
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998">Web-CSS-Study</span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011">1 概述</span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012">1.1 CSS 的基本概念<span class="md-toc-item md-toc-h3" data-ref="n3017">1.2 CSS 的发展历程<span class="md-toc-item md-toc-h3" data-ref="n3027">1.3 CSS 的版本演进<span class="md-toc-item md-toc-h3" data-ref="n3033">1.4 CSS 的应用场景<span class="md-toc-item md-toc-h3" data-ref="n3074">1.5 CSS 的核心特点<span class="md-toc-item md-toc-h3" data-ref="n3106">1.6 CSS 的功能作用<span class="md-toc-item md-toc-h3" data-ref="n3144">1.7 CSS 的工作原理<span class="md-toc-item md-toc-h3" data-ref="n3154">1.8 CSS 的优势与局限</span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179">2 CSS 引入方式与优先级</span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180">2.1 外部样式表(最常用)<span class="md-toc-item md-toc-h3" data-ref="n3183">2.2 内部样式表<span class="md-toc-item md-toc-h3" data-ref="n3186">2.3 内联样式表<span class="md-toc-item md-toc-h3" data-ref="n3189">2.4 样式表的优先级</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194">3 CSS 的基础语法</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195">3.1 CSS 样式规则<span class="md-toc-item md-toc-h3" data-ref="n3213">3.2 CSS 样式选择器<span class="md-toc-item md-toc-h3" data-ref="n3364">3.3 CSS 样式声明块<span class="md-toc-item md-toc-h3" data-ref="n3379">3.4 CSS 的 at 规则<span class="md-toc-item md-toc-h3" data-ref="n3392">3.5 CSS 的语法示例</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397">4 核心组成</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398">4.1 盒模型(Box Model)<span class="md-toc-item md-toc-h3" data-ref="n3418">4.2 布局系统<span class="md-toc-item md-toc-h3" data-ref="n3667">4.3 响应式设计</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703">5 常用 CSS 样式</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703"><span class="md-toc-item md-toc-h3" data-ref="n3704">5.1 文本相关样式<span class="md-toc-item md-toc-h3" data-ref="n3740">5.2 盒模型相关样式<span class="md-toc-item md-toc-h3" data-ref="n3845">5.3 显示相关样式<span class="md-toc-item md-toc-h3" data-ref="n3886">5.4 背景相关样式<span class="md-toc-item md-toc-h3" data-ref="n3903">5.5 链接列表表格样式<span class="md-toc-item md-toc-h3" data-ref="n3950">5.6 元素尺寸样式<span class="md-toc-item md-toc-h3" data-ref="n3964">5.7 溢出和浮动样式</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703"><span class="md-toc-item md-toc-h3" data-ref="n3704"><span class="md-toc-item md-toc-h3" data-ref="n3740"><span class="md-toc-item md-toc-h3" data-ref="n3845"><span class="md-toc-item md-toc-h3" data-ref="n3886"><span class="md-toc-item md-toc-h3" data-ref="n3903"><span class="md-toc-item md-toc-h3" data-ref="n3950"><span class="md-toc-item md-toc-h3" data-ref="n3964"><span class="md-toc-item md-toc-h2" data-ref="n3997">6 颜色与单位</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703"><span class="md-toc-item md-toc-h3" data-ref="n3704"><span class="md-toc-item md-toc-h3" data-ref="n3740"><span class="md-toc-item md-toc-h3" data-ref="n3845"><span class="md-toc-item md-toc-h3" data-ref="n3886"><span class="md-toc-item md-toc-h3" data-ref="n3903"><span class="md-toc-item md-toc-h3" data-ref="n3950"><span class="md-toc-item md-toc-h3" data-ref="n3964"><span class="md-toc-item md-toc-h2" data-ref="n3997"><span class="md-toc-item md-toc-h3" data-ref="n3998">6.1 颜色值<span class="md-toc-item md-toc-h3" data-ref="n4000">6.2 单位</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703"><span class="md-toc-item md-toc-h3" data-ref="n3704"><span class="md-toc-item md-toc-h3" data-ref="n3740"><span class="md-toc-item md-toc-h3" data-ref="n3845"><span class="md-toc-item md-toc-h3" data-ref="n3886"><span class="md-toc-item md-toc-h3" data-ref="n3903"><span class="md-toc-item md-toc-h3" data-ref="n3950"><span class="md-toc-item md-toc-h3" data-ref="n3964"><span class="md-toc-item md-toc-h2" data-ref="n3997"><span class="md-toc-item md-toc-h3" data-ref="n3998"><span class="md-toc-item md-toc-h3" data-ref="n4000"><span class="md-toc-item md-toc-h2" data-ref="n4005">7 关键特性</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703"><span class="md-toc-item md-toc-h3" data-ref="n3704"><span class="md-toc-item md-toc-h3" data-ref="n3740"><span class="md-toc-item md-toc-h3" data-ref="n3845"><span class="md-toc-item md-toc-h3" data-ref="n3886"><span class="md-toc-item md-toc-h3" data-ref="n3903"><span class="md-toc-item md-toc-h3" data-ref="n3950"><span class="md-toc-item md-toc-h3" data-ref="n3964"><span class="md-toc-item md-toc-h2" data-ref="n3997"><span class="md-toc-item md-toc-h3" data-ref="n3998"><span class="md-toc-item md-toc-h3" data-ref="n4000"><span class="md-toc-item md-toc-h2" data-ref="n4005"><span class="md-toc-item md-toc-h3" data-ref="n4006">7.1 优先级(Specificity)<span class="md-toc-item md-toc-h3" data-ref="n4036">7.2 继承(Inheritance)<span class="md-toc-item md-toc-h3" data-ref="n4045">7.3 层叠(Cascading)<span class="md-toc-item md-toc-h3" data-ref="n4105">7.4 格式化上下文(Formatting Context)<span class="md-toc-item md-toc-h3" data-ref="n4175">7.5 变量(Custom Properties)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703"><span class="md-toc-item md-toc-h3" data-ref="n3704"><span class="md-toc-item md-toc-h3" data-ref="n3740"><span class="md-toc-item md-toc-h3" data-ref="n3845"><span class="md-toc-item md-toc-h3" data-ref="n3886"><span class="md-toc-item md-toc-h3" data-ref="n3903"><span class="md-toc-item md-toc-h3" data-ref="n3950"><span class="md-toc-item md-toc-h3" data-ref="n3964"><span class="md-toc-item md-toc-h2" data-ref="n3997"><span class="md-toc-item md-toc-h3" data-ref="n3998"><span class="md-toc-item md-toc-h3" data-ref="n4000"><span class="md-toc-item md-toc-h2" data-ref="n4005"><span class="md-toc-item md-toc-h3" data-ref="n4006"><span class="md-toc-item md-toc-h3" data-ref="n4036"><span class="md-toc-item md-toc-h3" data-ref="n4045"><span class="md-toc-item md-toc-h3" data-ref="n4105"><span class="md-toc-item md-toc-h3" data-ref="n4175"><span class="md-toc-item md-toc-h3" data-ref="n4178">7.6 函数与运算<span class="md-toc-item md-toc-h3" data-ref="n4185">7.7 逻辑属性(Logical Properties)<span class="md-toc-item md-toc-h3" data-ref="n4188">7.8 动画与过渡<span class="md-toc-item md-toc-h3" data-ref="n4284">7.9 CSS 的外边距折叠<span class="md-toc-item md-toc-h3" data-ref="n4299">7.10 现代 CSS 新特性</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703"><span class="md-toc-item md-toc-h3" data-ref="n3704"><span class="md-toc-item md-toc-h3" data-ref="n3740"><span class="md-toc-item md-toc-h3" data-ref="n3845"><span class="md-toc-item md-toc-h3" data-ref="n3886"><span class="md-toc-item md-toc-h3" data-ref="n3903"><span class="md-toc-item md-toc-h3" data-ref="n3950"><span class="md-toc-item md-toc-h3" data-ref="n3964"><span class="md-toc-item md-toc-h2" data-ref="n3997"><span class="md-toc-item md-toc-h3" data-ref="n3998"><span class="md-toc-item md-toc-h3" data-ref="n4000"><span class="md-toc-item md-toc-h2" data-ref="n4005"><span class="md-toc-item md-toc-h3" data-ref="n4006"><span class="md-toc-item md-toc-h3" data-ref="n4036"><span class="md-toc-item md-toc-h3" data-ref="n4045"><span class="md-toc-item md-toc-h3" data-ref="n4105"><span class="md-toc-item md-toc-h3" data-ref="n4175"><span class="md-toc-item md-toc-h3" data-ref="n4178"><span class="md-toc-item md-toc-h3" data-ref="n4185"><span class="md-toc-item md-toc-h3" data-ref="n4188"><span class="md-toc-item md-toc-h3" data-ref="n4284"><span class="md-toc-item md-toc-h3" data-ref="n4299"><span class="md-toc-item md-toc-h2" data-ref="n4312">8 现代 CSS 技术</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703"><span class="md-toc-item md-toc-h3" data-ref="n3704"><span class="md-toc-item md-toc-h3" data-ref="n3740"><span class="md-toc-item md-toc-h3" data-ref="n3845"><span class="md-toc-item md-toc-h3" data-ref="n3886"><span class="md-toc-item md-toc-h3" data-ref="n3903"><span class="md-toc-item md-toc-h3" data-ref="n3950"><span class="md-toc-item md-toc-h3" data-ref="n3964"><span class="md-toc-item md-toc-h2" data-ref="n3997"><span class="md-toc-item md-toc-h3" data-ref="n3998"><span class="md-toc-item md-toc-h3" data-ref="n4000"><span class="md-toc-item md-toc-h2" data-ref="n4005"><span class="md-toc-item md-toc-h3" data-ref="n4006"><span class="md-toc-item md-toc-h3" data-ref="n4036"><span class="md-toc-item md-toc-h3" data-ref="n4045"><span class="md-toc-item md-toc-h3" data-ref="n4105"><span class="md-toc-item md-toc-h3" data-ref="n4175"><span class="md-toc-item md-toc-h3" data-ref="n4178"><span class="md-toc-item md-toc-h3" data-ref="n4185"><span class="md-toc-item md-toc-h3" data-ref="n4188"><span class="md-toc-item md-toc-h3" data-ref="n4284"><span class="md-toc-item md-toc-h3" data-ref="n4299"><span class="md-toc-item md-toc-h2" data-ref="n4312"><span class="md-toc-item md-toc-h3" data-ref="n4313">8.1 CSS 预处理器<span class="md-toc-item md-toc-h3" data-ref="n4316">8.2 CSS 框架<span class="md-toc-item md-toc-h3" data-ref="n4318">8.3 CSS-in-JS</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703"><span class="md-toc-item md-toc-h3" data-ref="n3704"><span class="md-toc-item md-toc-h3" data-ref="n3740"><span class="md-toc-item md-toc-h3" data-ref="n3845"><span class="md-toc-item md-toc-h3" data-ref="n3886"><span class="md-toc-item md-toc-h3" data-ref="n3903"><span class="md-toc-item md-toc-h3" data-ref="n3950"><span class="md-toc-item md-toc-h3" data-ref="n3964"><span class="md-toc-item md-toc-h2" data-ref="n3997"><span class="md-toc-item md-toc-h3" data-ref="n3998"><span class="md-toc-item md-toc-h3" data-ref="n4000"><span class="md-toc-item md-toc-h2" data-ref="n4005"><span class="md-toc-item md-toc-h3" data-ref="n4006"><span class="md-toc-item md-toc-h3" data-ref="n4036"><span class="md-toc-item md-toc-h3" data-ref="n4045"><span class="md-toc-item md-toc-h3" data-ref="n4105"><span class="md-toc-item md-toc-h3" data-ref="n4175"><span class="md-toc-item md-toc-h3" data-ref="n4178"><span class="md-toc-item md-toc-h3" data-ref="n4185"><span class="md-toc-item md-toc-h3" data-ref="n4188"><span class="md-toc-item md-toc-h3" data-ref="n4284"><span class="md-toc-item md-toc-h3" data-ref="n4299"><span class="md-toc-item md-toc-h2" data-ref="n4312"><span class="md-toc-item md-toc-h3" data-ref="n4313"><span class="md-toc-item md-toc-h3" data-ref="n4316"><span class="md-toc-item md-toc-h3" data-ref="n4318"><span class="md-toc-item md-toc-h2" data-ref="n4323">9 学习实践建议</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703"><span class="md-toc-item md-toc-h3" data-ref="n3704"><span class="md-toc-item md-toc-h3" data-ref="n3740"><span class="md-toc-item md-toc-h3" data-ref="n3845"><span class="md-toc-item md-toc-h3" data-ref="n3886"><span class="md-toc-item md-toc-h3" data-ref="n3903"><span class="md-toc-item md-toc-h3" data-ref="n3950"><span class="md-toc-item md-toc-h3" data-ref="n3964"><span class="md-toc-item md-toc-h2" data-ref="n3997"><span class="md-toc-item md-toc-h3" data-ref="n3998"><span class="md-toc-item md-toc-h3" data-ref="n4000"><span class="md-toc-item md-toc-h2" data-ref="n4005"><span class="md-toc-item md-toc-h3" data-ref="n4006"><span class="md-toc-item md-toc-h3" data-ref="n4036"><span class="md-toc-item md-toc-h3" data-ref="n4045"><span class="md-toc-item md-toc-h3" data-ref="n4105"><span class="md-toc-item md-toc-h3" data-ref="n4175"><span class="md-toc-item md-toc-h3" data-ref="n4178"><span class="md-toc-item md-toc-h3" data-ref="n4185"><span class="md-toc-item md-toc-h3" data-ref="n4188"><span class="md-toc-item md-toc-h3" data-ref="n4284"><span class="md-toc-item md-toc-h3" data-ref="n4299"><span class="md-toc-item md-toc-h2" data-ref="n4312"><span class="md-toc-item md-toc-h3" data-ref="n4313"><span class="md-toc-item md-toc-h3" data-ref="n4316"><span class="md-toc-item md-toc-h3" data-ref="n4318"><span class="md-toc-item md-toc-h2" data-ref="n4323"><span class="md-toc-item md-toc-h2" data-ref="n4345">10 学习资源</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703"><span class="md-toc-item md-toc-h3" data-ref="n3704"><span class="md-toc-item md-toc-h3" data-ref="n3740"><span class="md-toc-item md-toc-h3" data-ref="n3845"><span class="md-toc-item md-toc-h3" data-ref="n3886"><span class="md-toc-item md-toc-h3" data-ref="n3903"><span class="md-toc-item md-toc-h3" data-ref="n3950"><span class="md-toc-item md-toc-h3" data-ref="n3964"><span class="md-toc-item md-toc-h2" data-ref="n3997"><span class="md-toc-item md-toc-h3" data-ref="n3998"><span class="md-toc-item md-toc-h3" data-ref="n4000"><span class="md-toc-item md-toc-h2" data-ref="n4005"><span class="md-toc-item md-toc-h3" data-ref="n4006"><span class="md-toc-item md-toc-h3" data-ref="n4036"><span class="md-toc-item md-toc-h3" data-ref="n4045"><span class="md-toc-item md-toc-h3" data-ref="n4105"><span class="md-toc-item md-toc-h3" data-ref="n4175"><span class="md-toc-item md-toc-h3" data-ref="n4178"><span class="md-toc-item md-toc-h3" data-ref="n4185"><span class="md-toc-item md-toc-h3" data-ref="n4188"><span class="md-toc-item md-toc-h3" data-ref="n4284"><span class="md-toc-item md-toc-h3" data-ref="n4299"><span class="md-toc-item md-toc-h2" data-ref="n4312"><span class="md-toc-item md-toc-h3" data-ref="n4313"><span class="md-toc-item md-toc-h3" data-ref="n4316"><span class="md-toc-item md-toc-h3" data-ref="n4318"><span class="md-toc-item md-toc-h2" data-ref="n4323"><span class="md-toc-item md-toc-h2" data-ref="n4345"><span class="md-toc-item md-toc-h2" data-ref="n4374">11 总结</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="md-toc-content"><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703"><span class="md-toc-item md-toc-h3" data-ref="n3704"><span class="md-toc-item md-toc-h3" data-ref="n3740"><span class="md-toc-item md-toc-h3" data-ref="n3845"><span class="md-toc-item md-toc-h3" data-ref="n3886"><span class="md-toc-item md-toc-h3" data-ref="n3903"><span class="md-toc-item md-toc-h3" data-ref="n3950"><span class="md-toc-item md-toc-h3" data-ref="n3964"><span class="md-toc-item md-toc-h2" data-ref="n3997"><span class="md-toc-item md-toc-h3" data-ref="n3998"><span class="md-toc-item md-toc-h3" data-ref="n4000"><span class="md-toc-item md-toc-h2" data-ref="n4005"><span class="md-toc-item md-toc-h3" data-ref="n4006"><span class="md-toc-item md-toc-h3" data-ref="n4036"><span class="md-toc-item md-toc-h3" data-ref="n4045"><span class="md-toc-item md-toc-h3" data-ref="n4105"><span class="md-toc-item md-toc-h3" data-ref="n4175"><span class="md-toc-item md-toc-h3" data-ref="n4178"><span class="md-toc-item md-toc-h3" data-ref="n4185"><span class="md-toc-item md-toc-h3" data-ref="n4188"><span class="md-toc-item md-toc-h3" data-ref="n4284"><span class="md-toc-item md-toc-h3" data-ref="n4299"><span class="md-toc-item md-toc-h2" data-ref="n4312"><span class="md-toc-item md-toc-h3" data-ref="n4313"><span class="md-toc-item md-toc-h3" data-ref="n4316"><span class="md-toc-item md-toc-h3" data-ref="n4318"><span class="md-toc-item md-toc-h2" data-ref="n4323"><span class="md-toc-item md-toc-h2" data-ref="n4345"><span class="md-toc-item md-toc-h2" data-ref="n4374"><span class="md-toc-item md-toc-h2" data-ref="n4381">内容</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span class="md-toc-item md-toc-h1" data-ref="n2998"><span class="md-toc-item md-toc-h2" data-ref="n3011"><span class="md-toc-item md-toc-h3" data-ref="n3012"><span class="md-toc-item md-toc-h3" data-ref="n3017"><span class="md-toc-item md-toc-h3" data-ref="n3027"><span class="md-toc-item md-toc-h3" data-ref="n3033"><span class="md-toc-item md-toc-h3" data-ref="n3074"><span class="md-toc-item md-toc-h3" data-ref="n3106"><span class="md-toc-item md-toc-h3" data-ref="n3144"><span class="md-toc-item md-toc-h3" data-ref="n3154"><span class="md-toc-item md-toc-h2" data-ref="n3179"><span class="md-toc-item md-toc-h3" data-ref="n3180"><span class="md-toc-item md-toc-h3" data-ref="n3183"><span class="md-toc-item md-toc-h3" data-ref="n3186"><span class="md-toc-item md-toc-h3" data-ref="n3189"><span class="md-toc-item md-toc-h2" data-ref="n3194"><span class="md-toc-item md-toc-h3" data-ref="n3195"><span class="md-toc-item md-toc-h3" data-ref="n3213"><span class="md-toc-item md-toc-h3" data-ref="n3364"><span class="md-toc-item md-toc-h3" data-ref="n3379"><span class="md-toc-item md-toc-h3" data-ref="n3392"><span class="md-toc-item md-toc-h2" data-ref="n3397"><span class="md-toc-item md-toc-h3" data-ref="n3398"><span class="md-toc-item md-toc-h3" data-ref="n3418"><span class="md-toc-item md-toc-h3" data-ref="n3667"><span class="md-toc-item md-toc-h2" data-ref="n3703"><span class="md-toc-item md-toc-h3" data-ref="n3704"><span class="md-toc-item md-toc-h3" data-ref="n3740"><span class="md-toc-item md-toc-h3" data-ref="n3845"><span class="md-toc-item md-toc-h3" data-ref="n3886"><span class="md-toc-item md-toc-h3" data-ref="n3903"><span class="md-toc-item md-toc-h3" data-ref="n3950"><span class="md-toc-item md-toc-h3" data-ref="n3964"><span class="md-toc-item md-toc-h2" data-ref="n3997"><span class="md-toc-item md-toc-h3" data-ref="n3998"><span class="md-toc-item md-toc-h3" data-ref="n4000"><span class="md-toc-item md-toc-h2" data-ref="n4005"><span class="md-toc-item md-toc-h3" data-ref="n4006"><span class="md-toc-item md-toc-h3" data-ref="n4036"><span class="md-toc-item md-toc-h3" data-ref="n4045"><span class="md-toc-item md-toc-h3" data-ref="n4105"><span class="md-toc-item md-toc-h3" data-ref="n4175"><span class="md-toc-item md-toc-h3" data-ref="n4178"><span class="md-toc-item md-toc-h3" data-ref="n4185"><span class="md-toc-item md-toc-h3" data-ref="n4188"><span class="md-toc-item md-toc-h3" data-ref="n4284"><span class="md-toc-item md-toc-h3" data-ref="n4299"><span class="md-toc-item md-toc-h2" data-ref="n4312"><span class="md-toc-item md-toc-h3" data-ref="n4313"><span class="md-toc-item md-toc-h3" data-ref="n4316"><span class="md-toc-item md-toc-h3" data-ref="n4318"><span class="md-toc-item md-toc-h2" data-ref="n4323"><span class="md-toc-item md-toc-h2" data-ref="n4345"><span class="md-toc-item md-toc-h2" data-ref="n4374"><span class="md-toc-item md-toc-h2" data-ref="n4381">目录</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
</div>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"><hr></div>
<p class="md-end-block md-p"> </p>
<p class="md-end-block md-p"><span class="md-meta-i-c md-link"><span class="md-plain">迪欧IT——dio智能科技</span></span></p>
<p><img src="https://img2024.cnblogs.com/blog/1585225/202508/1585225-20250824155620035-901004387.png"></p>
<p> </p>
<p><img src="https://img2024.cnblogs.com/blog/1585225/202508/1585225-20250824155626060-2130787216.png"></p>
<p> </p>
<p class="md-end-block md-p"> </p>
<div><span class="md-image md-img-loaded" data-src="../../../../Media/Picture/001_WebServer/公众号_二维码_迪欧智慧_128x128.png"> </span></div>
<p class="md-end-block md-p"> </p>
<div class="md-hr md-end-block"> </div>
</div>
<div id="MySignature" role="contentinfo">
<p>本文来自博客园,作者:jason-wrj,更多请查看:www.dioit.com,转载请注明原文链接:https://www.cnblogs.com/jason-wrj/p/19055519</p><br><br>
来源:https://www.cnblogs.com/jason-wrj/p/19055519
頁:
[1]