<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>高级技巧 on ZiYang FrontEnd Interview</title><link>https://fe-interview.pangcy.cn/tags/%E9%AB%98%E7%BA%A7%E6%8A%80%E5%B7%A7/</link><description>Recent content in 高级技巧 on ZiYang FrontEnd Interview</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 06 Mar 2025 13:07:39 +0800</lastBuildDate><atom:link href="https://fe-interview.pangcy.cn/tags/%E9%AB%98%E7%BA%A7%E6%8A%80%E5%B7%A7/index.xml" rel="self" type="application/rss+xml"/><item><title>图形绘制高级技巧</title><link>https://fe-interview.pangcy.cn/docs/css/css-13/</link><pubDate>Tue, 04 Mar 2025 06:58:34 +0000</pubDate><guid>https://fe-interview.pangcy.cn/docs/css/css-13/</guid><description>&lt;h2 id="考察点分析">考察点分析 &lt;a href="#%e8%80%83%e5%af%9f%e7%82%b9%e5%88%86%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;p>此题主要考察以下核心能力维度：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>CSS图形绘制能力&lt;/strong>：通过基础属性实现复杂图形，体现对CSS视觉呈现原理的理解&lt;/li>
&lt;li>&lt;strong>现代CSS特性应用&lt;/strong>：对clip-path、渐变等新特性的掌握程度&lt;/li>
&lt;li>&lt;strong>浏览器兼容处理意识&lt;/strong>：对不同浏览器的特性支持差异及降级方案的理解&lt;/li>
&lt;/ol>
&lt;p>具体评估点：&lt;/p>
&lt;ul>
&lt;li>border属性绘制三角形的实现原理&lt;/li>
&lt;li>clip-path创建不规则形状的路径计算&lt;/li>
&lt;li>线性渐变色标控制与重复模式的应用&lt;/li>
&lt;li>伪元素层叠上下文管理与动画过渡实现&lt;/li>
&lt;li>特性检测与渐进增强的兼容方案设计&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="技术解析">技术解析 &lt;a href="#%e6%8a%80%e6%9c%af%e8%a7%a3%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;h3 id="关键知识点">关键知识点 &lt;a href="#%e5%85%b3%e9%94%ae%e7%9f%a5%e8%af%86%e7%82%b9" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;ol>
&lt;li>Border三角形成型原理&lt;/li>
&lt;li>Clip-path坐标系统&lt;/li>
&lt;li>渐变色标计算与背景平铺&lt;/li>
&lt;li>伪元素动画与层叠上下文&lt;/li>
&lt;/ol>
&lt;h3 id="原理剖析">原理剖析 &lt;a href="#%e5%8e%9f%e7%90%86%e5%89%96%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;p>&lt;strong>三角形&lt;/strong>：当元素尺寸为0时，边框交汇处呈现斜切面。设置三边透明即可获得三角形。例如，&lt;code>border: 50px solid transparent; border-top-color: red&lt;/code>创建向下箭头。&lt;/p>
&lt;p>&lt;strong>clip-path扇形&lt;/strong>：通过圆形裁剪路径偏移实现。&lt;code>clip-path: circle(100% at 0 0)&lt;/code>将剪切圆心定位于左上角，半径充满容器，形成90度扇形。&lt;/p>
&lt;p>&lt;strong>条纹背景&lt;/strong>：利用渐变色标严格对齐实现无缝拼接。&lt;code>background: repeating-linear-gradient(45deg, #fff 0 10px, #000 10px 20px)&lt;/code>创建45度斜条纹。&lt;/p>
&lt;p>&lt;strong>悬浮阴影&lt;/strong>：通过伪元素实现独立渲染层。使用&lt;code>::after&lt;/code>创建扩展阴影层，通过&lt;code>transition&lt;/code>实现平滑动画，&lt;code>z-index&lt;/code>控制层叠关系避免内容遮挡。&lt;/p>
&lt;h3 id="常见误区">常见误区 &lt;a href="#%e5%b8%b8%e8%a7%81%e8%af%af%e5%8c%ba" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;ul>
&lt;li>误用border拼接实现复杂形状&lt;/li>
&lt;li>混淆clip-path的circle与ellipse参数&lt;/li>
&lt;li>渐变色标百分比计算错误导致条纹错位&lt;/li>
&lt;li>伪元素未设置position导致定位失效&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="问题解答">问题解答 &lt;a href="#%e9%97%ae%e9%a2%98%e8%a7%a3%e7%ad%94" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;h3 id="1-三角形实现">1. 三角形实现 &lt;a href="#1-%e4%b8%89%e8%a7%92%e5%bd%a2%e5%ae%9e%e7%8e%b0" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="8e6c305" class="language-css ">
 &lt;code>.triangle {
 width: 0;
 height: 0;
 border: 50px solid transparent;
 border-top-color: red;
 /* 下方箭头改为：border-bottom-color */
}&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;h3 id="2-扇形实现">2. 扇形实现 &lt;a href="#2-%e6%89%87%e5%bd%a2%e5%ae%9e%e7%8e%b0" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="d83f305" class="language-css ">
 &lt;code>.sector {
 width: 100px;
 height: 100px;
 clip-path: circle(100% at 0 0);
 /* 修改at坐标可改变扇形方向 */
 background: coral;
}&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;h3 id="3-条纹背景">3. 条纹背景 &lt;a href="#3-%e6%9d%a1%e7%ba%b9%e8%83%8c%e6%99%af" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="63d2963" class="language-css ">
 &lt;code>.stripes {
 background: repeating-linear-gradient(
 45deg,
 #ff6b6b 0 0 10px,
 #4ecdc4 10px 20px
 );
 /* 调整角度值改变条纹方向 */
}&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;h3 id="4-悬浮阴影">4. 悬浮阴影 &lt;a href="#4-%e6%82%ac%e6%b5%ae%e9%98%b4%e5%bd%b1" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="40cb7ae" class="language-css ">
 &lt;code>.card {
 position: relative;
 transition: transform 0.3s;
}

.card::after {
 content: &amp;#39;&amp;#39;;
 position: absolute;
 top: 0;
 left: 0;
 width: 100%;
 height: 100%;
 box-shadow: 0 10px 20px rgba(0,0,0,0.2);
 transition: all 0.3s;
 z-index: -1;
}

.card:hover {
 transform: translateY(-5px);
}

.card:hover::after {
 box-shadow: 0 15px 30px rgba(0,0,0,0.3);
}&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;h3 id="兼容性处理">兼容性处理 &lt;a href="#%e5%85%bc%e5%ae%b9%e6%80%a7%e5%a4%84%e7%90%86" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;ol>
&lt;li>&lt;strong>clip-path&lt;/strong>：Safari需&lt;code>-webkit-clip-path&lt;/code>&lt;/li>
&lt;li>&lt;strong>渐变背景&lt;/strong>：IE10以下使用&lt;code>-ms-linear-gradient&lt;/code>&lt;/li>
&lt;li>&lt;strong>伪元素动画&lt;/strong>：IE9以下降级为静态阴影&lt;/li>
&lt;li>通用方案：使用PostCSS Autoprefixer自动添加前缀&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="深度追问">深度追问 &lt;a href="#%e6%b7%b1%e5%ba%a6%e8%bf%bd%e9%97%ae" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;ol>
&lt;li>
&lt;p>&lt;strong>如何实现自适应宽高的等边三角形？&lt;/strong>
提示：使用百分比border-width与calc计算&lt;/p></description></item><item><title>CSS计数器高级应用</title><link>https://fe-interview.pangcy.cn/docs/css/css-32/</link><pubDate>Tue, 04 Mar 2025 06:58:34 +0000</pubDate><guid>https://fe-interview.pangcy.cn/docs/css/css-32/</guid><description>&lt;h2 id="考察点分析">考察点分析 &lt;a href="#%e8%80%83%e5%af%9f%e7%82%b9%e5%88%86%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;p>本题主要考察以下核心能力维度：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>CSS高级特性应用能力&lt;/strong>：通过counter系统实现复杂文档结构自动化编号，检验对CSS计数器的深度理解&lt;/li>
&lt;li>&lt;strong>样式定制化能力&lt;/strong>：通过@counter-style规则突破预定义列表样式限制，考察CSS标准扩展机制掌握程度&lt;/li>
&lt;li>&lt;strong>CSS替代JS的思维&lt;/strong>：验证候选人是否具备用CSS原生方案替代JS实现的思维，评估浏览器特性运用能力&lt;/li>
&lt;/ol>
&lt;p>具体技术评估点：&lt;/p>
&lt;ul>
&lt;li>多级嵌套计数器的初始化与递增策略&lt;/li>
&lt;li>&lt;code>counters()&lt;/code>函数处理嵌套层级编号的能力&lt;/li>
&lt;li>自定义计数器符号系统的构建方法&lt;/li>
&lt;li>全局计数器实现跨元素统计的技术方案&lt;/li>
&lt;/ul>
&lt;h2 id="技术解析">技术解析 &lt;a href="#%e6%8a%80%e6%9c%af%e8%a7%a3%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;h3 id="关键知识点">关键知识点 &lt;a href="#%e5%85%b3%e9%94%ae%e7%9f%a5%e8%af%86%e7%82%b9" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;ol>
&lt;li>计数器作用域（Counter Scope）&lt;/li>
&lt;li>计数函数（counter()/counters()）&lt;/li>
&lt;li>自定义计数器风格（@counter-style）&lt;/li>
&lt;li>伪元素内容生成（::before/::after）&lt;/li>
&lt;/ol>
&lt;h3 id="原理剖析">原理剖析 &lt;a href="#%e5%8e%9f%e7%90%86%e5%89%96%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;p>CSS计数器系统本质是通过&lt;code>counter-reset&lt;/code>初始化计数容器，&lt;code>counter-increment&lt;/code>修改计数值，配合&lt;code>content: counter()&lt;/code>进行数值展示的三段式操作。&lt;code>counters(name, string)&lt;/code>函数通过字符串参数处理嵌套层级分隔，类似文件路径的递归组装。&lt;/p>
&lt;p>@counter-style规则通过描述符定义符号系统，其中：&lt;/p>
&lt;ul>
&lt;li>&lt;code>system&lt;/code>指定算法（循环、数值等）&lt;/li>
&lt;li>&lt;code>symbols&lt;/code>定义实际展示符号&lt;/li>
&lt;li>&lt;code>suffix&lt;/code>控制编号后缀&lt;/li>
&lt;/ul>
&lt;h3 id="常见误区">常见误区 &lt;a href="#%e5%b8%b8%e8%a7%81%e8%af%af%e5%8c%ba" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;ol>
&lt;li>混淆counter-reset与counter-increment的作用顺序&lt;/li>
&lt;li>多层嵌套时未正确使用counters()导致层级丢失&lt;/li>
&lt;li>忽略自定义计数器风格的浏览器兼容性（需&amp;gt;=Chrome91）&lt;/li>
&lt;li>统计场景中未考虑跨元素作用域问题&lt;/li>
&lt;/ol>
&lt;h2 id="问题解答">问题解答 &lt;a href="#%e9%97%ae%e9%a2%98%e8%a7%a3%e7%ad%94" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;h3 id="复杂目录编号实现">复杂目录编号实现 &lt;a href="#%e5%a4%8d%e6%9d%82%e7%9b%ae%e5%bd%95%e7%bc%96%e5%8f%b7%e5%ae%9e%e7%8e%b0" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="c2aea0f" class="language-html ">
 &lt;code>&amp;lt;!-- 章节结构 --&amp;gt;
&amp;lt;article&amp;gt;
 &amp;lt;h2&amp;gt;Web Development&amp;lt;/h2&amp;gt;
 &amp;lt;section&amp;gt;
 &amp;lt;h3&amp;gt;Frontend&amp;lt;/h3&amp;gt;
 &amp;lt;section&amp;gt;
 &amp;lt;h4&amp;gt;Framework&amp;lt;/h4&amp;gt;
 &amp;lt;/section&amp;gt;
 &amp;lt;/section&amp;gt;
&amp;lt;/article&amp;gt;&lt;/code>
 &lt;/pre>
 &lt;/div>



 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="43a6725" class="language-css ">
 &lt;code>article { counter-reset: section; }
h2::before {
 counter-increment: section;
 content: &amp;#34;Section &amp;#34; counter(section) &amp;#34;: &amp;#34;;
}
section h3::before {
 counter-increment: subsection;
 content: counter(section) &amp;#34;.&amp;#34; counter(subsection) &amp;#34; &amp;#34;;
}
section section h4::before {
 counter-increment: subsubsection;
 content: counters(subsection, &amp;#34;.&amp;#34;) &amp;#34;.&amp;#34; counter(subsubsection) &amp;#34; &amp;#34;;
}&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;h3 id="自定义列表符号">自定义列表符号 &lt;a href="#%e8%87%aa%e5%ae%9a%e4%b9%89%e5%88%97%e8%a1%a8%e7%ac%a6%e5%8f%b7" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="65df70d" class="language-css ">
 &lt;code>@counter-style bracket-num {
 system: fixed;
 symbols: ① ② ③ ④ ⑤;
 suffix: &amp;#34; &amp;#34;; 
}

ul {
 list-style: bracket-num;
 counter-reset: list-item;
}&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;h3 id="统计功能实现">统计功能实现 &lt;a href="#%e7%bb%9f%e8%ae%a1%e5%8a%9f%e8%83%bd%e5%ae%9e%e7%8e%b0" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="1204d76" class="language-css ">
 &lt;code>body {
 counter-reset: total-items;
}

.item {
 counter-increment: total-items;
}

.total::after {
 content: &amp;#34;Total: &amp;#34; counter(total-items);
}&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;h2 id="解决方案">解决方案 &lt;a href="#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;h3 id="编码示例多维目录">编码示例（多维目录） &lt;a href="#%e7%bc%96%e7%a0%81%e7%a4%ba%e4%be%8b%e5%a4%9a%e7%bb%b4%e7%9b%ae%e5%bd%95" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="eccc29a" class="language-html ">
 &lt;code>&amp;lt;nav class=&amp;#34;toc&amp;#34;&amp;gt;
 &amp;lt;div&amp;gt;Frontend
 &amp;lt;div&amp;gt;JavaScript
 &amp;lt;div&amp;gt;ES6&amp;#43;&amp;lt;/div&amp;gt;
 &amp;lt;div&amp;gt;TypeScript&amp;lt;/div&amp;gt;
 &amp;lt;/div&amp;gt;
 &amp;lt;div&amp;gt;CSS&amp;lt;/div&amp;gt;
 &amp;lt;/div&amp;gt;
&amp;lt;/nav&amp;gt;&lt;/code>
 &lt;/pre>
 &lt;/div>



 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="731a7b6" class="language-css ">
 &lt;code>.toc {
 counter-reset: part;
}

.toc &amp;gt; div::before {
 counter-increment: part;
 content: &amp;#34;Part &amp;#34; counter(part) &amp;#34;: &amp;#34;;
 font-weight: bold;
}

.toc div &amp;gt; div::before {
 counter-increment: chapter 2; /* 步长2 */
 content: counters(part, &amp;#34;-&amp;#34;, upper-roman) &amp;#34; Ch.&amp;#34; counter(chapter);
}&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;p>&lt;strong>复杂度优化&lt;/strong>：CSS计数器时间复杂度O(n)，远优于JS操作DOM的O(n²)复杂度，且避免布局抖动&lt;/p></description></item><item><title>CSS计数器实现步骤编号</title><link>https://fe-interview.pangcy.cn/docs/css/css-40/</link><pubDate>Tue, 04 Mar 2025 06:58:34 +0000</pubDate><guid>https://fe-interview.pangcy.cn/docs/css/css-40/</guid><description>&lt;h2 id="考察点分析">考察点分析 &lt;a href="#%e8%80%83%e5%af%9f%e7%82%b9%e5%88%86%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;p>该题主要考察以下核心能力：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>CSS计数器机制&lt;/strong>：理解&lt;code>counter-reset&lt;/code>、&lt;code>counter-increment&lt;/code>和&lt;code>counter()&lt;/code>的配合使用&lt;/li>
&lt;li>&lt;strong>嵌套作用域控制&lt;/strong>：处理多级编号时的计数器作用域隔离与继承&lt;/li>
&lt;li>&lt;strong>自定义样式扩展&lt;/strong>：通过&lt;code>@counter-style&lt;/code>实现非标准编号符号体系&lt;/li>
&lt;li>&lt;strong>伪元素应用&lt;/strong>：熟练使用&lt;code>::before&lt;/code>伪元素插入生成内容&lt;/li>
&lt;/ol>
&lt;p>技术评估点：&lt;/p>
&lt;ul>
&lt;li>计数器初始化与递增的书写顺序&lt;/li>
&lt;li>多层级计数器命名与作用域管理&lt;/li>
&lt;li>自定义符号系统的参数配置（system/symbols/suffix）&lt;/li>
&lt;li>内容生成与样式分离的实现方式&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="技术解析">技术解析 &lt;a href="#%e6%8a%80%e6%9c%af%e8%a7%a3%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;h3 id="关键知识点">关键知识点 &lt;a href="#%e5%85%b3%e9%94%ae%e7%9f%a5%e8%af%86%e7%82%b9" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;ol>
&lt;li>计数器三剑客：&lt;code>counter-reset&lt;/code> &amp;gt; &lt;code>counter-increment&lt;/code> &amp;gt; &lt;code>counter()&lt;/code>&lt;/li>
&lt;li>作用域链：嵌套计数器形成独立作用域&lt;/li>
&lt;li>&lt;code>@counter-style&lt;/code>配置项：system / symbols / suffix&lt;/li>
&lt;/ol>
&lt;h3 id="原理剖析">原理剖析 &lt;a href="#%e5%8e%9f%e7%90%86%e5%89%96%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;p>CSS计数器通过维护隐式的计数变量工作。&lt;code>counter-reset&lt;/code>初始化计数器（可指定初始值），&lt;code>counter-increment&lt;/code>触发计数器递增。当元素同时设置reset和increment时，&lt;strong>先重置后递增&lt;/strong>。&lt;/p>
&lt;p>嵌套场景中，每层容器创建新的计数器作用域。例如二级列表中的子计数器不会影响父级计数。通过&lt;code>counters()&lt;/code>函数可拼接多级编号（如&amp;quot;1.3.2&amp;quot;）。&lt;/p>
&lt;p>&lt;code>@counter-style&lt;/code>通过定义符号系统扩展表现层，支持cyclic（循环）、numeric（数字）等6种计数系统。当预定义样式不满足时，可用其实现罗马数字、图标编号等特殊需求。&lt;/p>
&lt;h3 id="常见误区">常见误区 &lt;a href="#%e5%b8%b8%e8%a7%81%e8%af%af%e5%8c%ba" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;ol>
&lt;li>错误地在伪元素选择器上直接写counter-increment&lt;/li>
&lt;li>嵌套层级间计数器命名冲突&lt;/li>
&lt;li>自定义样式未处理超过symbols长度的回退情况&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="问题解答">问题解答 &lt;a href="#%e9%97%ae%e9%a2%98%e8%a7%a3%e7%ad%94" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;p>通过CSS计数器实现三级嵌套编号：&lt;/p>



 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="fb314b0" class="language-html ">
 &lt;code>&amp;lt;ol class=&amp;#34;steps&amp;#34;&amp;gt;
 &amp;lt;li&amp;gt;开发
 &amp;lt;ol&amp;gt;
 &amp;lt;li&amp;gt;环境搭建&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;编码
 &amp;lt;ol&amp;gt;
 &amp;lt;li&amp;gt;模块A&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;模块B&amp;lt;/li&amp;gt;
 &amp;lt;/ol&amp;gt;
 &amp;lt;/li&amp;gt;
 &amp;lt;/ol&amp;gt;
 &amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;/code>
 &lt;/pre>
 &lt;/div>



 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="c4df95f" class="language-css ">
 &lt;code>.steps {
 counter-reset: level1; /* 初始化一级计数器 */
 list-style: none;
}

.steps &amp;gt; li::before {
 counter-increment: level1; /* 递增一级计数器 */
 content: counter(level1) &amp;#34;. &amp;#34;;
}

.steps &amp;gt; li &amp;gt; ol {
 counter-reset: level2; /* 初始化二级计数器 */
}

.steps &amp;gt; li &amp;gt; ol &amp;gt; li::before {
 counter-increment: level2;
 content: counter(level1) &amp;#34;.&amp;#34; counter(level2) &amp;#34; &amp;#34;;
}

.steps &amp;gt; li &amp;gt; ol &amp;gt; li &amp;gt; ol {
 counter-reset: level3; /* 初始化三级计数器 */
}

.steps &amp;gt; li &amp;gt; ol &amp;gt; li &amp;gt; ol &amp;gt; li::before {
 counter-increment: level3;
 content: counter(level1) &amp;#34;.&amp;#34; counter(level2) &amp;#34;.&amp;#34; counter(level3) &amp;#34; &amp;#34;;
}&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;p>自定义符号样式：&lt;/p></description></item></channel></rss>