<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>情报交换局</title>
  
  
  <link href="https://www.777nx.cn/atom.xml" rel="self"/>
  
  <link href="https://www.777nx.cn/"/>
  <updated>2026-10-02T02:00:00.000Z</updated>
  <id>https://www.777nx.cn/</id>
  
  <author>
    <name>Fantasy</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>外挂标签速查</title>
    <link href="https://www.777nx.cn/posts/56032921.html"/>
    <id>https://www.777nx.cn/posts/56032921.html</id>
    <published>2026-10-02T02:00:00.000Z</published>
    <updated>2026-10-02T02:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>这一页把主题自带的外挂标签集中演示一遍，写文章时直接抄。</p><h2 id="1-提示块-note">1. 提示块 note</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note info flat %&#125;说明文字&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note info flat"><p>info：普通提示</p></div><div class="note primary modern"><p>primary：主要提示</p></div><div class="note warning flat"><p>warning：警告提示</p></div><h2 id="2-标签页-tabs">2. 标签页 tabs</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">&#123;% tabs 分组名 %&#125;</span><br><span class="line">&lt;!-- tab 第一个标签 --&gt;</span><br><span class="line">内容一</span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line">&lt;!-- tab 第二个标签 --&gt;</span><br><span class="line">内容二</span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line">&#123;% endtabs %&#125;</span><br></pre></td></tr></table></figure><div class="tabs" id="演示"><ul class="nav-tabs"><li class="tab active"><button type="button" data-href="#演示-1">用 YAML 写</button></li><li class="tab"><button type="button" data-href="#演示-2">用 JSON 写</button></li></ul><div class="tab-contents"><div class="tab-item-content active" id="演示-1"><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">title:</span> <span class="string">示例</span></span><br><span class="line"><span class="attr">tags:</span> [<span class="string">Hexo</span>]</span><br></pre></td></tr></table></figure><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="演示-2"><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span> <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;示例&quot;</span><span class="punctuation">,</span> <span class="attr">&quot;tags&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="string">&quot;Hexo&quot;</span><span class="punctuation">]</span> <span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></div><h2 id="3-折叠-hideToggle">3. 折叠 hideToggle</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% hideToggle 点开看更多 %&#125;</span><br><span class="line">被折叠的内容</span><br><span class="line">&#123;% endhideToggle %&#125;</span><br></pre></td></tr></table></figure><details class="toggle" ><summary class="toggle-button" style="">点开看更多</summary><div class="toggle-content"><p>被折叠的内容，适合放答案、长代码或剧透。</p></div></details><h2 id="4-按钮、标签、居中标题">4. 按钮、标签、居中标题</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% btn https://hexo.io/zh-cn/, Hexo 文档, hexo %&#125;</span><br><span class="line">&#123;% label 绿色标签 green %&#125;</span><br><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">h2</span> <span class="attr">style</span>=<span class="string">&quot;text-align:center&quot;</span>&gt;</span></span>居中的大标题<span class="language-xml"><span class="tag">&lt;/<span class="name">h2</span>&gt;</span></span></span><br></pre></td></tr></table></figure><a class="btn-beautify " href="https://hexo.io/zh-cn/"   title="Hexo 文档"><i class="hexo"></i><span>Hexo 文档</span></a> <mark class="hl-label green">绿色标签</mark> <span class='p center logo h2'>居中的大标题</span><h2 id="5-时间线与画廊">5. 时间线与画廊</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">&#123;% timeline 标题 %&#125;</span><br><span class="line">&lt;!-- timeline 2026-10-01 --&gt;</span><br><span class="line">条目一</span><br><span class="line">&lt;!-- endtimeline --&gt;</span><br><span class="line">&#123;% endtimeline %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% galleryGroup &#x27;分组名&#x27; &#x27;描述&#x27; &#x27;/链接&#x27; 封面图 %&#125;</span><br></pre></td></tr></table></figure><div class="timeline undefined"><div class='timeline-item headline'><div class='timeline-item-title'><div class='item-circle'><p>演示</p></div></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2026-10-01</p></div></div><div class='timeline-item-content'><p>这一条演示时间线</p></div></div><div class='timeline-item'><div class='timeline-item-title'><div class='item-circle'><p>2026-10-02</p></div></div><div class='timeline-item-content'><p>时间线支持多段，用来写站史很好用</p></div></div></div><h2 id="6-图表-mermaid">6. 图表 mermaid</h2><div class="mermaid-wrap"><pre class="mermaid-src" hidden>  graph LR  A[写 Markdown] --&gt; B[hexo generate]  B --&gt; C[gulp 压缩]  C --&gt; D[推到托管平台]  </pre></div><div class="note primary flat"><p>以上标签的实现都在 <code>themes/fomalhaut/scripts/tag/</code>，想加自己的标签照着改一个文件即可。</p></div>]]></content>
    
    
    <summary type="html">Fomalhaut 主题自带的外挂标签用法速查，复制粘贴即可用。</summary>
    
    
    
    <category term="开始使用" scheme="https://www.777nx.cn/categories/%E5%BC%80%E5%A7%8B%E4%BD%BF%E7%94%A8/"/>
    
    
    <category term="Hexo" scheme="https://www.777nx.cn/tags/Hexo/"/>
    
    <category term="Fomalhaut" scheme="https://www.777nx.cn/tags/Fomalhaut/"/>
    
    <category term="标签" scheme="https://www.777nx.cn/tags/%E6%A0%87%E7%AD%BE/"/>
    
  </entry>
  
  <entry>
    <title>Hello World · 从这里开始</title>
    <link href="https://www.777nx.cn/posts/8b9651a9.html"/>
    <id>https://www.777nx.cn/posts/8b9651a9.html</id>
    <published>2026-10-01T02:00:00.000Z</published>
    <updated>2026-10-01T02:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="你现在看到的是什么">你现在看到的是什么</h2><p>一个跑在 <strong>Hexo 6.3.0</strong> 上的静态站点，主题是 <strong>hexo-theme-fomalhaut v1.0.4</strong>（基于 Butterfly 4.3.1 二次开发）。<br>仓库里 <code>source/_posts/</code> 下只有这一篇与另一篇《外挂标签速查》作为示例，其余空位留给你自己填。</p><h2 id="三步换成你自己的站">三步换成你自己的站</h2><h3 id="1-改站点信息">1. 改站点信息</h3><p>打开根目录的 <code>_config.yml</code>：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">title:</span> <span class="string">你的站点名</span></span><br><span class="line"><span class="attr">author:</span> <span class="string">你的名字</span></span><br><span class="line"><span class="attr">url:</span> <span class="string">https://your-domain.com/</span></span><br></pre></td></tr></table></figure><h3 id="2-改主题配置">2. 改主题配置</h3><p>主题的所有开关都在根目录的 <code>_config.fomalhaut.yml</code>：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">avatar:</span></span><br><span class="line">  <span class="attr">img:</span> <span class="string">/assets/avatar.webp</span>      <span class="comment"># 换成你自己的头像</span></span><br><span class="line"></span><br><span class="line"><span class="attr">social:</span>                          <span class="comment"># 社交链接，格式： 名称: 链接 || 图标 || 动画</span></span><br><span class="line">  <span class="attr">Github:</span> <span class="string">https://github.com/yourname</span> <span class="string">||</span> <span class="string">icon-github</span> <span class="string">||</span> <span class="string">faa-tada</span></span><br><span class="line"></span><br><span class="line"><span class="attr">index_img:</span> <span class="string">/assets/head.jpg</span>      <span class="comment"># 首页大图</span></span><br></pre></td></tr></table></figure><h3 id="3-写文章、跑起来">3. 写文章、跑起来</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo new post <span class="string">&quot;我的第一篇文章&quot;</span>   <span class="comment"># 在 source/_posts/ 生成</span></span><br><span class="line">hexo server                      <span class="comment"># 本地预览 http://localhost:4000</span></span><br><span class="line">hexo generate &amp;&amp; gulp            <span class="comment"># 构建（gulp 负责压缩）</span></span><br></pre></td></tr></table></figure><div class="note info flat"><p>根目录的 <code>scripts/</code> 与 <code>source/js/</code>、<code>source/css/</code> 是<strong>站点级</strong>的增强代码，和 <code>themes/fomalhaut/</code> 里的主题代码是分开的。<br>升级主题时只要不动 <code>themes/</code> 目录，你自己写的样式和脚本都不会丢。</p></div><h2 id="这篇示例用到的写法">这篇示例用到的写法</h2><p>上面用到了 <code>&#123;% note info flat %&#125;...&#123;% endnote %&#125;</code> 提示块、二级/三级标题、行内代码与代码块。<br>更多外挂标签（时间线、标签页、画廊、按钮、折叠、Mermaid 等）见另一篇《外挂标签速查》。</p>]]></content>
    
    
    <summary type="html">这是一篇示例文章，顺手说明这套源码怎么改成你自己的站点。</summary>
    
    
    
    <category term="开始使用" scheme="https://www.777nx.cn/categories/%E5%BC%80%E5%A7%8B%E4%BD%BF%E7%94%A8/"/>
    
    
    <category term="Hexo" scheme="https://www.777nx.cn/tags/Hexo/"/>
    
    <category term="Fomalhaut" scheme="https://www.777nx.cn/tags/Fomalhaut/"/>
    
  </entry>
  
  <entry>
    <title>后端项目初始化</title>
    <link href="https://www.777nx.cn/posts/4ddf5c9c.html"/>
    <id>https://www.777nx.cn/posts/4ddf5c9c.html</id>
    <published>2025-08-26T16:19:22.000Z</published>
    <updated>2026-10-15T06:19:20.359Z</updated>
    
    <content type="html"><![CDATA[<h1 id="AI零代码应用平台项目初始化">AI零代码应用平台项目初始化</h1><h3 id="项目简介">项目简介</h3><p>大厂都在卷AI编程的赛道，无论是网页还是AI应用生成器，这是当下的风口。</p><p>像百度的秒哒，美团的noCode都可以做到零代码编程</p><p><img src="https://img.777nx.cn/test/image-20250814233045559.png" alt="image-20250814233045559"></p><p>百度-秒哒</p><p>网址：<a href="https://console.bce.baidu.com/miaoda/design">https://console.bce.baidu.com/miaoda/design</a></p><p><img src="https://img.777nx.cn/test/image-20250814233146327.png" alt="image-20250814233146327"></p><p>美团-NoCode</p><p>网址：<a href="https://nocode.cn/">https://nocode.cn/</a></p><p>我自己亲身实践了一下百度的秒哒，确实爽的飞起~~~~</p><p><img src="https://img.777nx.cn/test/u2FoiuTDuQu5ZZSt.webp" alt="img"></p><p>我用秒哒生成了一个幸运抽取网站，如果生成的样式和自己的想法有所不同，可以继续修改prompt来改进自己的项目。</p><p><img src="https://img.777nx.cn/test/68khBm7HnuP9F7bm.png" alt="img"></p><p>我马上也开始了这种零代码的开发，手撕一个属于自己的零代码开发平台！！</p><p>好~~ 那么新项目就叫 兔子应用生成</p><h3 id="项目初始化">项目初始化</h3><h4 id="环境准备">环境准备</h4><p><strong>1）安装的 JDK 版本必须 &gt;= 17，推荐使用 21 版本！</strong></p><p>2）MyS؜QL 数据库最好安‎装 8.x 版本，⁢或者 5.7 版本‎。</p><h4 id="新建项目">新建项目</h4><p><img src="https://img.777nx.cn/test/image-20250814233754269.png" alt="image-20250814233754269"></p><p>选择 Sprin؜g Boot 3.5.x 版本，‎必须添加的依赖包括 Spring⁢ Web、MySQL、Lombo‎k，Spring Boot De‎vTools 可以按需选取：</p><p><img src="https://img.777nx.cn/test/image-20250814233925696.png" alt="image-20250814233925696"></p><p>当然，后续通过修改 Maven 配置添加依赖也是可以的。</p><p>💡 小提示，如果 Lombok 依赖报错的话，可以手动指定 Lombok 的版本，修改 <code>pom.xml</code> 的代码：</p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">dependency</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">groupId</span>&gt;</span>org.projectlombok<span class="tag">&lt;/<span class="name">groupId</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">artifactId</span>&gt;</span>lombok<span class="tag">&lt;/<span class="name">artifactId</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">version</span>&gt;</span>1.18.36<span class="tag">&lt;/<span class="name">version</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">optional</span>&gt;</span>true<span class="tag">&lt;/<span class="name">optional</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">dependency</span>&gt;</span></span><br></pre></td></tr></table></figure><h4 id="整合依赖">整合依赖</h4><h5 id="Hutool工具库">Hutool工具库</h5><p><strong>不多bb，Hutool yyds！！</strong></p><p>参考官方文档引入：<a href="https://doc.hutool.cn/pages/index/#%F0%9F%8D%8Amaven">https://doc.hutool.cn/pages/index/#%F0%9F%8D%8Amaven</a></p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">dependency</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">groupId</span>&gt;</span>cn.hutool<span class="tag">&lt;/<span class="name">groupId</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">artifactId</span>&gt;</span>hutool-all<span class="tag">&lt;/<span class="name">artifactId</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">version</span>&gt;</span>5.8.38<span class="tag">&lt;/<span class="name">version</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">dependency</span>&gt;</span></span><br></pre></td></tr></table></figure><h5 id="Knife4j接口文档">Knife4j接口文档</h5><p>参考官方文档引入：<a href="https://doc.xiaominfo.com/docs/quick-start#spring-boot-3">https://doc.xiaominfo.com/docs/quick-start#spring-boot-3</a></p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">dependency</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">groupId</span>&gt;</span>com.github.xiaoymin<span class="tag">&lt;/<span class="name">groupId</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">artifactId</span>&gt;</span>knife4j-openapi3-jakarta-spring-boot-starter<span class="tag">&lt;/<span class="name">artifactId</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">version</span>&gt;</span>4.4.0<span class="tag">&lt;/<span class="name">version</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">dependency</span>&gt;</span></span><br></pre></td></tr></table></figure><p>这里需要在配置文件中加入配置</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># springdoc-openapi</span></span><br><span class="line"><span class="attr">springdoc:</span></span><br><span class="line">  <span class="attr">group-configs:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">group:</span> <span class="string">&#x27;default&#x27;</span></span><br><span class="line">      <span class="attr">packages-to-scan:</span> <span class="string">com.fantasy.rabbitaicodemother.controller</span></span><br><span class="line"><span class="comment"># knife4j</span></span><br><span class="line"><span class="attr">knife4j:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">setting:</span></span><br><span class="line">    <span class="attr">language:</span> <span class="string">zh_cn</span></span><br></pre></td></tr></table></figure><p>继续测试一下我们的swagger~~~</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@RestController</span></span><br><span class="line"><span class="meta">@RequestMapping(&quot;/health&quot;)</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">HealthController</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@GetMapping(&quot;/&quot;)</span></span><br><span class="line">    <span class="keyword">public</span> String <span class="title function_">healthCheck</span><span class="params">()</span> &#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="string">&quot;ok&quot;</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/gJs88RdldlqxfkXH.webp" alt="img"></p><p>这里发现swagger已经成功有了接口，说明可以正常使用了~~</p><p>那么接下来就需要继续写一些通用的代码</p><h4 id="样板代码">样板代码</h4><p>这时候再来一个自定义错误码，用于统一返回错误信息</p><p>所以在 <code>exception</code> 包下新建错误码枚举类：</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Getter</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">enum</span> <span class="title class_">ErrorCode</span> &#123;</span><br><span class="line"></span><br><span class="line">    SUCCESS(<span class="number">0</span>, <span class="string">&quot;ok&quot;</span>),</span><br><span class="line">    PARAMS_ERROR(<span class="number">40000</span>, <span class="string">&quot;请求参数错误&quot;</span>),</span><br><span class="line">    NOT_LOGIN_ERROR(<span class="number">40100</span>, <span class="string">&quot;未登录&quot;</span>),</span><br><span class="line">    NO_AUTH_ERROR(<span class="number">40101</span>, <span class="string">&quot;无权限&quot;</span>),</span><br><span class="line">    NOT_FOUND_ERROR(<span class="number">40400</span>, <span class="string">&quot;请求数据不存在&quot;</span>),</span><br><span class="line">    FORBIDDEN_ERROR(<span class="number">40300</span>, <span class="string">&quot;禁止访问&quot;</span>),</span><br><span class="line">    SYSTEM_ERROR(<span class="number">50000</span>, <span class="string">&quot;系统内部异常&quot;</span>),</span><br><span class="line">    OPERATION_ERROR(<span class="number">50001</span>, <span class="string">&quot;操作失败&quot;</span>);</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 状态码</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">final</span> <span class="type">int</span> code;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 信息</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">final</span> String message;</span><br><span class="line"></span><br><span class="line">    ErrorCode(<span class="type">int</span> code, String message) &#123;</span><br><span class="line">        <span class="built_in">this</span>.code = code;</span><br><span class="line">        <span class="built_in">this</span>.message = message;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>有了自定义的错误码，自然也要生成自定义异常</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Getter</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">BusinessException</span> <span class="keyword">extends</span> <span class="title class_">RuntimeException</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 错误码</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">final</span> <span class="type">int</span> code;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">BusinessException</span><span class="params">(<span class="type">int</span> code, String message)</span> &#123;</span><br><span class="line">        <span class="built_in">super</span>(message);</span><br><span class="line">        <span class="built_in">this</span>.code = code;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">BusinessException</span><span class="params">(ErrorCode errorCode)</span> &#123;</span><br><span class="line">        <span class="built_in">super</span>(errorCode.getMessage());</span><br><span class="line">        <span class="built_in">this</span>.code = errorCode.getCode();</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">BusinessException</span><span class="params">(ErrorCode errorCode, String message)</span> &#123;</span><br><span class="line">        <span class="built_in">super</span>(message);</span><br><span class="line">        <span class="built_in">this</span>.code = errorCode.getCode();</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>那么，问题来了，什么时候抛这个自定义异常呢？难道还要用if来判断吗，那也太麻烦了</p><p>不如直接生成一个专门抛异常的类</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">ThrowUtils</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 条件成立则抛异常</span></span><br><span class="line"><span class="comment">     *</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> condition        条件</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> runtimeException 异常</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">throwIf</span><span class="params">(<span class="type">boolean</span> condition, RuntimeException runtimeException)</span> &#123;</span><br><span class="line">        <span class="keyword">if</span> (condition) &#123;</span><br><span class="line">            <span class="keyword">throw</span> runtimeException;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 条件成立则抛异常</span></span><br><span class="line"><span class="comment">     *</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> condition 条件</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> errorCode 错误码</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">throwIf</span><span class="params">(<span class="type">boolean</span> condition, ErrorCode errorCode)</span> &#123;</span><br><span class="line">        throwIf(condition, <span class="keyword">new</span> <span class="title class_">BusinessException</span>(errorCode));</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 条件成立则抛异常</span></span><br><span class="line"><span class="comment">     *</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> condition 条件</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> errorCode 错误码</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> message   错误信息</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">throwIf</span><span class="params">(<span class="type">boolean</span> condition, ErrorCode errorCode, String message)</span> &#123;</span><br><span class="line">        throwIf(condition, <span class="keyword">new</span> <span class="title class_">BusinessException</span>(errorCode, message));</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>接下来就是每一个controller层都要返回的通用响应类</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Data</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">BaseResponse</span>&lt;T&gt; <span class="keyword">implements</span> <span class="title class_">Serializable</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> code;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> T data;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> String message;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">BaseResponse</span><span class="params">(<span class="type">int</span> code, T data, String message)</span> &#123;</span><br><span class="line">        <span class="built_in">this</span>.code = code;</span><br><span class="line">        <span class="built_in">this</span>.data = data;</span><br><span class="line">        <span class="built_in">this</span>.message = message;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">BaseResponse</span><span class="params">(<span class="type">int</span> code, T data)</span> &#123;</span><br><span class="line">        <span class="built_in">this</span>(code, data, <span class="string">&quot;&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">BaseResponse</span><span class="params">(ErrorCode errorCode)</span> &#123;</span><br><span class="line">        <span class="built_in">this</span>(errorCode.getCode(), <span class="literal">null</span>, errorCode.getMessage());</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>但是如果用了这个通用响应类，那我每一次在controller层返回结果的时候，都要new一个对象，再把code，data，message都输入出来，这也太麻烦了</p><p>所以，我们写一个工具类，其实就是把各种可能的结果都用static列了出来，比如我们直接就可以<code>ResultUtils.sucess()</code>就ok了</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">ResultUtils</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 成功</span></span><br><span class="line"><span class="comment">     *</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> data 数据</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> &lt;T&gt;  数据类型</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@return</span> 响应</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> &lt;T&gt; BaseResponse&lt;T&gt; <span class="title function_">success</span><span class="params">(T data)</span> &#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="keyword">new</span> <span class="title class_">BaseResponse</span>&lt;&gt;(<span class="number">0</span>, data, <span class="string">&quot;ok&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 失败</span></span><br><span class="line"><span class="comment">     *</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> errorCode 错误码</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@return</span> 响应</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> BaseResponse&lt;?&gt; error(ErrorCode errorCode) &#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="keyword">new</span> <span class="title class_">BaseResponse</span>&lt;&gt;(errorCode);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 失败</span></span><br><span class="line"><span class="comment">     *</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> code    错误码</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> message 错误信息</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@return</span> 响应</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> BaseResponse&lt;?&gt; error(<span class="type">int</span> code, String message) &#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="keyword">new</span> <span class="title class_">BaseResponse</span>&lt;&gt;(code, <span class="literal">null</span>, message);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 失败</span></span><br><span class="line"><span class="comment">     *</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> errorCode 错误码</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@return</span> 响应</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> BaseResponse&lt;?&gt; error(ErrorCode errorCode, String message) &#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="keyword">new</span> <span class="title class_">BaseResponse</span>&lt;&gt;(errorCode.getCode(), <span class="literal">null</span>, message);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>好，接下来就是<strong>全局异常处理器</strong>了</p><p>有人问，全局异常处理器是干嘛用的？其实这个就是来增加代码的<strong>健壮性</strong>，所谓“健壮性&quot;就是让程序在运行的时候遇到我们一般预示不到的异常时保证自己的程序不中断</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Hidden</span></span><br><span class="line"><span class="meta">@RestControllerAdvice</span></span><br><span class="line"><span class="meta">@Slf4j</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">GlobalExceptionHandler</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@ExceptionHandler(BusinessException.class)</span></span><br><span class="line">    <span class="keyword">public</span> BaseResponse&lt;?&gt; businessExceptionHandler(BusinessException e) &#123;</span><br><span class="line">        log.error(<span class="string">&quot;BusinessException&quot;</span>, e);</span><br><span class="line">        <span class="keyword">return</span> ResultUtils.error(e.getCode(), e.getMessage());</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@ExceptionHandler(RuntimeException.class)</span></span><br><span class="line">    <span class="keyword">public</span> BaseResponse&lt;?&gt; runtimeExceptionHandler(RuntimeException e) &#123;</span><br><span class="line">        log.error(<span class="string">&quot;RuntimeException&quot;</span>, e);</span><br><span class="line">        <span class="keyword">return</span> ResultUtils.error(ErrorCode.SYSTEM_ERROR, <span class="string">&quot;系统错误&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>让我们来读一下这个代码，这里的<code>@ExceptionHandler(BusinessException.class)</code>意思是在系统运行的过程中，如果有了<code>BusinessException</code>，系统能继续走<code>return ResultUtils.error(e.getCode(), e.getMessage());</code></p><p><strong>在最新版的springboot中，knife4j会发生不兼容的情况，这里采用了@Hidden来解决问题</strong></p><p>在很多的情况，我们要用分页查询，分页查询有一些参数，比如：页号，页面大小，排序字段，顺序等等</p><p>这里统一写成一个封装类</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Data</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">PageRequest</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 当前页号</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> <span class="variable">pageNum</span> <span class="operator">=</span> <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 页面大小</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">private</span> <span class="type">int</span> <span class="variable">pageSize</span> <span class="operator">=</span> <span class="number">10</span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 排序字段</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">private</span> String sortField;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 排序顺序（默认降序）</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">private</span> <span class="type">String</span> <span class="variable">sortOrder</span> <span class="operator">=</span> <span class="string">&quot;descend&quot;</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>当然删除也是~~</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Data</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">DeleteRequest</span> <span class="keyword">implements</span> <span class="title class_">Serializable</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * id</span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="keyword">private</span> Long id;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="type">long</span> <span class="variable">serialVersionUID</span> <span class="operator">=</span> <span class="number">1L</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>还有前后端分离开发时，前端和后端的域名或者端口号是不同的，这就产生了跨域的问题，那么其实我们可以在后端统一写一个解决跨域的类来解决问题</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Configuration</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">CorsConfig</span> <span class="keyword">implements</span> <span class="title class_">WebMvcConfigurer</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">addCorsMappings</span><span class="params">(CorsRegistry registry)</span> &#123;</span><br><span class="line">        <span class="comment">// 覆盖所有请求</span></span><br><span class="line">        registry.addMapping(<span class="string">&quot;/**&quot;</span>)</span><br><span class="line">                <span class="comment">// 允许发送 Cookie</span></span><br><span class="line">                .allowCredentials(<span class="literal">true</span>)</span><br><span class="line">                <span class="comment">// 放行哪些域名（必须用 patterns，否则 * 会和 allowCredentials 冲突）</span></span><br><span class="line">                .allowedOriginPatterns(<span class="string">&quot;*&quot;</span>)</span><br><span class="line">                .allowedMethods(<span class="string">&quot;GET&quot;</span>, <span class="string">&quot;POST&quot;</span>, <span class="string">&quot;PUT&quot;</span>, <span class="string">&quot;DELETE&quot;</span>, <span class="string">&quot;OPTIONS&quot;</span>)</span><br><span class="line">                .allowedHeaders(<span class="string">&quot;*&quot;</span>)</span><br><span class="line">                .exposedHeaders(<span class="string">&quot;*&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>最后测试一下</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@RestController</span></span><br><span class="line"><span class="meta">@RequestMapping(&quot;/health&quot;)</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">HealthController</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@GetMapping(&quot;/&quot;)</span></span><br><span class="line">    <span class="keyword">public</span> BaseResponse&lt;String&gt; <span class="title function_">healthCheck</span><span class="params">()</span> &#123;</span><br><span class="line">        <span class="keyword">return</span> ResultUtils.success( <span class="string">&quot;ok&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/image-20250814235040066.png" alt="image-20250814235040066"></p>]]></content>
    
    
    <summary type="html">后端项目初始化</summary>
    
    
    
    <category term="初始化" scheme="https://www.777nx.cn/categories/%E5%88%9D%E5%A7%8B%E5%8C%96/"/>
    
    
    <category term="Java" scheme="https://www.777nx.cn/tags/Java/"/>
    
  </entry>
  
  <entry>
    <title>文章三栏</title>
    <link href="https://www.777nx.cn/posts/4481e024.html"/>
    <id>https://www.777nx.cn/posts/4481e024.html</id>
    <published>2025-04-08T12:06:34.000Z</published>
    <updated>2026-10-15T06:19:20.361Z</updated>
    
    <content type="html"><![CDATA[<p>参考：<a href="https://akilar.top/posts/d6b69c49/">双栏布局首页卡片魔改教程</a></p><p>本网站采用的是三栏+响应式布局的方案，也就是slidecard的方案，但是为了可拓展性，我还是把两种都搬了过来，方便大家阅读！</p><ol><li><p>修改<code>[BlogRoot]\themes\butterfly\layout\includes\mixins\post-ui.pug</code>,整个替换为下面的代码，注意，我这里用的是彩色的图标，每个<code>//- i.fas</code>那里表示我注释了黑白的额图标并换上彩色图标，彩色图标引入的具体方法见之前的教程，这里只需要替换成你自己的<code>图标名字</code>和调节相应的<code>大小</code>即可：</p><figure class="highlight n1ql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br></pre></td><td class="code"><pre><span class="line">mixin postUI(posts)</span><br><span class="line">  each article , <span class="keyword">index</span> <span class="keyword">in</span> page.posts.data</span><br><span class="line">    .recent-post-item</span><br><span class="line">      -</span><br><span class="line">        <span class="keyword">let</span> link = article.link || article.<span class="keyword">path</span></span><br><span class="line">        <span class="keyword">let</span> <span class="built_in">title</span> = article.<span class="built_in">title</span> || _p(<span class="string">&#x27;no_title&#x27;</span>)</span><br><span class="line">        const <span class="built_in">position</span> = theme.<span class="keyword">cover</span>.<span class="built_in">position</span></span><br><span class="line">        <span class="keyword">let</span> leftOrRight = <span class="built_in">position</span> === <span class="string">&#x27;both&#x27;</span></span><br><span class="line">          ? <span class="keyword">index</span>%<span class="number">2</span> == <span class="number">0</span> ? <span class="string">&#x27;left&#x27;</span> : <span class="string">&#x27;right&#x27;</span></span><br><span class="line">          : <span class="built_in">position</span> === <span class="string">&#x27;left&#x27;</span> ? <span class="string">&#x27;left&#x27;</span> : <span class="string">&#x27;right&#x27;</span></span><br><span class="line">        <span class="keyword">let</span> post_cover = article.<span class="keyword">cover</span></span><br><span class="line">        <span class="keyword">let</span> no_cover = article.<span class="keyword">cover</span> === <span class="literal">false</span> || !theme.<span class="keyword">cover</span>.index_enable ? <span class="string">&#x27;no-cover&#x27;</span> : <span class="string">&#x27;&#x27;</span></span><br><span class="line">      -</span><br><span class="line">      .recent-post-content(class=leftOrRight)</span><br><span class="line">        .recent-post-<span class="keyword">cover</span></span><br><span class="line">          img.article-<span class="keyword">cover</span>(src=url_for(post_cover) onerror=<span class="symbol">`this.onerror=null;this.src=&#x27;`</span>+ url_for(theme.error_img.post_page) + <span class="symbol">`&#x27;`</span> alt=<span class="built_in">title</span>)</span><br><span class="line">        .recent-post-info</span><br><span class="line">          a.article-<span class="built_in">title</span>(href=url_for(link) <span class="built_in">title</span>=<span class="built_in">title</span>)</span><br><span class="line">            .article-<span class="built_in">title</span>-link= <span class="built_in">title</span></span><br><span class="line">          .recent-post-<span class="built_in">meta</span>                </span><br><span class="line">            .article-<span class="built_in">meta</span>-wrap</span><br><span class="line">              <span class="keyword">if</span> (is_home() &amp;&amp; (article.top || article.sticky &gt; <span class="number">0</span>))</span><br><span class="line">                span.article-<span class="built_in">meta</span></span><br><span class="line">                  //- i.fas.fa-thumbtack.sticky</span><br><span class="line">                  svg.meta_icon(style=<span class="string">&quot;width:16px;height:16px;position:relative;top:3px&quot;</span>).post-ui-icon</span><br><span class="line">                    <span class="keyword">use</span>(xlink:href=<span class="string">&#x27;#icon-tuding&#x27;</span>)</span><br><span class="line">                  span.sticky= _p(<span class="string">&#x27;sticky&#x27;</span>)</span><br><span class="line">                  span.article-<span class="built_in">meta</span>-separator  | </span><br><span class="line">              <span class="keyword">if</span> (theme.post_meta.page.date_type)</span><br><span class="line">                span.post-<span class="built_in">meta</span>-date</span><br><span class="line">                  <span class="keyword">if</span> (theme.post_meta.page.date_type === <span class="string">&#x27;both&#x27;</span>)</span><br><span class="line">                    //- i.far.fa-calendar-alt</span><br><span class="line">                    svg.meta_icon(style=<span class="string">&quot;width:21px;height:21px;position:relative;top:6px&quot;</span>).post-ui-icon</span><br><span class="line">                      <span class="keyword">use</span>(xlink:href=<span class="string">&#x27;#icon-rili&#x27;</span>)</span><br><span class="line">                    span.article-<span class="built_in">meta</span>-label=_p(<span class="string">&#x27;post.created&#x27;</span>)</span><br><span class="line">                    time.post-<span class="built_in">meta</span>-date-created(datetime=date_xml(article.date) <span class="built_in">title</span>=_p(<span class="string">&#x27;post.created&#x27;</span>) + <span class="string">&#x27; &#x27;</span> + full_date(article.date))=date(article.date, config.date_format)</span><br><span class="line">                    span.article-<span class="built_in">meta</span>-separator  | </span><br><span class="line">                    //- i.fas.fa-history</span><br><span class="line">                    svg.meta_icon(style=<span class="string">&quot;width:13px;height:13px;position:relative;top:2px&quot;</span>).post-ui-icon</span><br><span class="line">                      <span class="keyword">use</span>(xlink:href=<span class="string">&#x27;#icon-gengxin1&#x27;</span>)                    </span><br><span class="line">                    span.article-<span class="built_in">meta</span>-label=_p(<span class="string">&#x27;post.updated&#x27;</span>) + <span class="string">&quot; &quot;</span></span><br><span class="line">                    time.post-<span class="built_in">meta</span>-date-updated(datetime=date_xml(article.updated) <span class="built_in">title</span>=_p(<span class="string">&#x27;post.updated&#x27;</span>) + <span class="string">&#x27; &#x27;</span> + full_date(article.updated))=date(article.updated, config.date_format)</span><br><span class="line">                  <span class="keyword">else</span></span><br><span class="line">                    - <span class="keyword">let</span> data_type_updated = theme.post_meta.page.date_type === <span class="string">&#x27;updated&#x27;</span></span><br><span class="line">                    - <span class="keyword">let</span> date_type = data_type_updated ? <span class="string">&#x27;updated&#x27;</span> : <span class="string">&#x27;date&#x27;</span></span><br><span class="line">                    - <span class="keyword">let</span> date_icon = data_type_updated ? <span class="string">&#x27;fas fa-history&#x27;</span> :<span class="string">&#x27;far fa-calendar-alt&#x27;</span></span><br><span class="line">                    - <span class="keyword">let</span> date_title = data_type_updated ? _p(<span class="string">&#x27;post.updated&#x27;</span>) : _p(<span class="string">&#x27;post.created&#x27;</span>)</span><br><span class="line">                    i(class=date_icon)</span><br><span class="line">                    span.article-<span class="built_in">meta</span>-label=date_title</span><br><span class="line">                    time(datetime=date_xml(article[date_type]) <span class="built_in">title</span>=date_title + <span class="string">&#x27; &#x27;</span> + full_date(article[date_type]))=date(article[date_type], config.date_format)</span><br><span class="line">              <span class="keyword">if</span> (theme.post_meta.page.categories &amp;&amp; article.categories.data.<span class="built_in">length</span> &gt; <span class="number">0</span>)</span><br><span class="line">                span.article-<span class="built_in">meta</span></span><br><span class="line">                  span.article-<span class="built_in">meta</span>-separator  | </span><br><span class="line">                  //- i.fas.fa-inbox</span><br><span class="line">                  svg.meta_icon(style=<span class="string">&quot;width:12px;height:12px;position:relative;top:1px&quot;</span>).post-ui-icon</span><br><span class="line">                    <span class="keyword">use</span>(xlink:href=<span class="string">&#x27;#icon-fenlei&#x27;</span>)</span><br><span class="line">                  <span class="keyword">each</span> item, <span class="keyword">index</span> <span class="keyword">in</span> article.categories.data</span><br><span class="line">                    a(href=url_for(item.<span class="keyword">path</span>)).article-meta__categories #[=item.name]</span><br><span class="line">                    <span class="keyword">if</span> (<span class="keyword">index</span> &lt; article.categories.data.<span class="built_in">length</span> - <span class="number">1</span>)</span><br><span class="line">                      i.fas.fa-angle-<span class="keyword">right</span>.article-<span class="built_in">meta</span>-link</span><br><span class="line">              <span class="keyword">if</span> (theme.post_meta.page.tags &amp;&amp; article.tags.data.<span class="built_in">length</span> &gt; <span class="number">0</span>)</span><br><span class="line">                span.article-<span class="built_in">meta</span>.tags</span><br><span class="line">                  span.article-<span class="built_in">meta</span>-separator  | </span><br><span class="line">                  //- i.fas.fa-tag</span><br><span class="line">                  svg.meta_icon(style=<span class="string">&quot;width:13px;height:13px;position:relative;top:2px&quot;</span>).post-ui-icon</span><br><span class="line">                    <span class="keyword">use</span>(xlink:href=<span class="string">&#x27;#icon-biaoqian&#x27;</span>)</span><br><span class="line">                  <span class="keyword">each</span> item, <span class="keyword">index</span> <span class="keyword">in</span> article.tags.data</span><br><span class="line">                    a(href=url_for(item.<span class="keyword">path</span>)).article-meta__tags #[=item.name]</span><br><span class="line">                    <span class="keyword">if</span> (<span class="keyword">index</span> &lt; article.tags.data.<span class="built_in">length</span> - <span class="number">1</span>)</span><br><span class="line">                      span.article-<span class="built_in">meta</span>-link #[=<span class="string">&#x27; • &#x27;</span>]</span><br><span class="line">              </span><br><span class="line">              mixin countBlockInIndex</span><br><span class="line">                - needLoadCountJs = <span class="literal">true</span></span><br><span class="line">                span.article-<span class="built_in">meta</span></span><br><span class="line">                  span.article-<span class="built_in">meta</span>-separator  | </span><br><span class="line">                  //- i.fas.fa-comments</span><br><span class="line">                  svg.meta_icon(style=<span class="string">&quot;width:13px;height:13px;position:relative;top:2px&quot;</span>).post-ui-icon</span><br><span class="line">                    <span class="keyword">use</span>(xlink:href=<span class="string">&#x27;#icon-pinglun1&#x27;</span>)</span><br><span class="line">                  <span class="keyword">if</span> block</span><br><span class="line">                    block</span><br><span class="line">                  span.article-<span class="built_in">meta</span>-label= <span class="string">&#x27; &#x27;</span> + _p(<span class="string">&#x27;card_post_count&#x27;</span>)</span><br><span class="line">              </span><br><span class="line">              <span class="keyword">if</span> theme.comments.card_post_count</span><br><span class="line">                <span class="keyword">case</span> theme.comments.<span class="keyword">use</span>[<span class="number">0</span>]</span><br><span class="line">                  <span class="keyword">when</span> <span class="string">&#x27;Disqus&#x27;</span></span><br><span class="line">                    +countBlockInIndex</span><br><span class="line">                      a(href=full_url_for(link) + <span class="string">&#x27;#disqus_thread&#x27;</span>)</span><br><span class="line">                        i.fa-solid.fa-spinner.fa-spin</span><br><span class="line">                  <span class="keyword">when</span> <span class="string">&#x27;Disqusjs&#x27;</span></span><br><span class="line">                    +countBlockInIndex</span><br><span class="line">                      a(href=full_url_for(link) + <span class="string">&#x27;#disqusjs&#x27;</span>)</span><br><span class="line">                        span.disqus-comment-<span class="built_in">count</span>(data-disqus-url=full_url_for(link))</span><br><span class="line">                          i.fa-solid.fa-spinner.fa-spin</span><br><span class="line">                  <span class="keyword">when</span> <span class="string">&#x27;Valine&#x27;</span></span><br><span class="line">                    +countBlockInIndex</span><br><span class="line">                      a(href=url_for(link) + <span class="string">&#x27;#post-comment&#x27;</span>)</span><br><span class="line">                        span.valine-comment-<span class="built_in">count</span>(data-xid=url_for(link))</span><br><span class="line">                          i.fa-solid.fa-spinner.fa-spin</span><br><span class="line">                  <span class="keyword">when</span> <span class="string">&#x27;Waline&#x27;</span></span><br><span class="line">                    +countBlockInIndex</span><br><span class="line">                      a(href=url_for(link) + <span class="string">&#x27;#post-comment&#x27;</span>)</span><br><span class="line">                        span.waline-comment-<span class="built_in">count</span>(id=url_for(link))</span><br><span class="line">                          i.fa-solid.fa-spinner.fa-spin</span><br><span class="line">                  <span class="keyword">when</span> <span class="string">&#x27;Twikoo&#x27;</span></span><br><span class="line">                    +countBlockInIndex</span><br><span class="line">                      a.twikoo-<span class="built_in">count</span>(href=url_for(link) + <span class="string">&#x27;#post-comment&#x27;</span>)</span><br><span class="line">                        i.fa-solid.fa-spinner.fa-spin</span><br><span class="line">                  <span class="keyword">when</span> <span class="string">&#x27;Facebook Comments&#x27;</span></span><br><span class="line">                    +countBlockInIndex</span><br><span class="line">                      a(href=url_for(link) + <span class="string">&#x27;#post-comment&#x27;</span>)</span><br><span class="line">                        span.fb-comments-<span class="built_in">count</span>(data-href=urlNoIndex(article.permalink))</span><br><span class="line">                  <span class="keyword">when</span> <span class="string">&#x27;Remark42&#x27;</span></span><br><span class="line">                    +countBlockInIndex</span><br><span class="line">                      a(href=url_for(link) + <span class="string">&#x27;#post-comment&#x27;</span>)</span><br><span class="line">                        span.remark42__counter(data-url=urlNoIndex(article.permalink))</span><br><span class="line">                          i.fa-solid.fa-spinner.fa-spin</span><br><span class="line">                  <span class="keyword">when</span> <span class="string">&#x27;Artalk&#x27;</span></span><br><span class="line">                    +countBlockInIndex</span><br><span class="line">                      a(href=url_for(link) + <span class="string">&#x27;#post-comment&#x27;</span>)</span><br><span class="line">                        span.artalk-<span class="built_in">count</span>(data-page-<span class="keyword">key</span>=url_for(link))</span><br><span class="line">                          i.fa-solid.fa-spinner.fa-spin      </span><br><span class="line">        a.article-content(href=url_for(link) <span class="built_in">title</span>=<span class="built_in">title</span>)</span><br><span class="line">          //- Display the article introduction <span class="keyword">on</span> homepage</span><br><span class="line">          <span class="keyword">case</span> theme.index_post_content.method</span><br><span class="line">            <span class="keyword">when</span> <span class="literal">false</span></span><br><span class="line">              - <span class="keyword">break</span></span><br><span class="line">            <span class="keyword">when</span> <span class="number">1</span></span><br><span class="line">              .article-content-text!= article.description</span><br><span class="line">            <span class="keyword">when</span> <span class="number">2</span></span><br><span class="line">              <span class="keyword">if</span> article.description</span><br><span class="line">                .article-content-text!= article.description</span><br><span class="line">              <span class="keyword">else</span></span><br><span class="line">                - const content = strip_html(article.content)</span><br><span class="line">                - <span class="keyword">let</span> expert = content.substring(<span class="number">0</span>, theme.index_post_content.<span class="built_in">length</span>) </span><br><span class="line">                - content.<span class="built_in">length</span> &gt; theme.index_post_content.<span class="built_in">length</span> ? expert += <span class="string">&#x27; ...&#x27;</span> : <span class="string">&#x27;&#x27;</span></span><br><span class="line">                .article-content-text!= expert</span><br><span class="line">            default</span><br><span class="line">              - const content = strip_html(article.content)</span><br><span class="line">              - <span class="keyword">let</span> expert = content.substring(<span class="number">0</span>, theme.index_post_content.<span class="built_in">length</span>) </span><br><span class="line">              - content.<span class="built_in">length</span> &gt; theme.index_post_content.<span class="built_in">length</span> ? expert += <span class="string">&#x27; ...&#x27;</span> : <span class="string">&#x27;&#x27;</span></span><br><span class="line">              .article-content-text!= expert      </span><br><span class="line">        .recent-post-arrow</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> theme.ad &amp;&amp; theme.ad.<span class="keyword">index</span></span><br><span class="line">      <span class="keyword">if</span> (<span class="keyword">index</span> + <span class="number">1</span>) % <span class="number">3</span> == <span class="number">0</span></span><br><span class="line">        .recent-post-item.ads-wrap!=theme.ad.<span class="keyword">index</span></span><br></pre></td></tr></table></figure></li><li><p>样式方案提供两种：</p><ul><li><p>样式一：电脑端宽屏采用滑动卡片，平板宽度采用双栏布局，手机宽度采用单栏卡片</p></li><li><p>样式二：移除滑动卡片，按屏幕宽度依次应用三栏、双栏、单栏</p><p>新建目录<code>[BlogRoot]\themes\butterfly\source\css\_index_card_style\</code>,并在下面新建对应的文件<code>slidecard.styl</code>和<code>multicard.styl</code>并分别填入以下内容，第一个滑动卡片的是店长原版的，我微调一下第二个的样式，大家可以根据自己的选择进行修改：</p><div class="tabs" id="分栏"><ul class="nav-tabs"><li class="tab active"><button type="button" data-href="#分栏-1">样式一：slidecard</button></li><li class="tab"><button type="button" data-href="#分栏-2">样式二：multicard</button></li></ul><div class="tab-contents"><div class="tab-item-content active" id="分栏-1"><pre><code>  <figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">//default color:</span></span><br><span class="line"><span class="selector-pseudo">:root</span></span><br><span class="line">  <span class="attr">--recent-post-bgcolor</span>: <span class="built_in">rgba</span>(<span class="number">255</span>, <span class="number">255</span>, <span class="number">255</span>, <span class="number">0.9</span>)  <span class="comment">//默认背景</span></span><br><span class="line">  <span class="attr">--article-content-bgcolor</span>: <span class="number">#49b1f5</span> <span class="comment">//描述版块背景</span></span><br><span class="line">  <span class="attr">--recent-post-arrow</span>: <span class="number">#ffffff</span> <span class="comment">//箭头配色</span></span><br><span class="line">  <span class="attr">--recent-post-cover-shadow</span>: <span class="number">#ffffff</span> <span class="comment">//封面遮罩层配色，建议和默认值的颜色相对应。</span></span><br><span class="line">  <span class="attr">--recent-post-transition</span>: <span class="attribute">all</span> <span class="number">0.5s</span> <span class="built_in">cubic-bezier</span>(<span class="number">0.59</span>, <span class="number">0.01</span>, <span class="number">0.48</span>, <span class="number">1.17</span>)  //动画效果。不了解的不要改动</span><br><span class="line"><span class="selector-attr">[data-theme=<span class="string">&quot;dark&quot;</span>]</span></span><br><span class="line">  <span class="attr">--recent-post-bgcolor</span>: <span class="built_in">rgba</span>(<span class="number">35</span>,<span class="number">35</span>,<span class="number">35</span>,<span class="number">0.5</span>)</span><br><span class="line">  <span class="attr">--article-content-bgcolor</span>: <span class="number">#99999a</span></span><br><span class="line">  <span class="attr">--recent-post-arrow</span>: <span class="number">#37e2dd</span></span><br><span class="line">  <span class="attr">--recent-post-cover-shadow</span>: <span class="number">#232323</span></span><br><span class="line"><span class="comment">// 默认的首页卡片容器布局</span></span><br><span class="line"><span class="selector-class">.recent-posts</span></span><br><span class="line">  <span class="attribute">padding</span> <span class="number">0</span> <span class="number">15px</span> <span class="number">0</span> <span class="number">15px</span></span><br><span class="line">  <span class="attribute">height</span> fit-content</span><br><span class="line">  <span class="selector-class">.recent-post-item</span></span><br><span class="line">    <span class="attribute">margin-bottom</span> <span class="number">15px</span></span><br><span class="line">    <span class="attribute">width</span> <span class="number">100%</span></span><br><span class="line">    <span class="attribute">background</span> <span class="built_in">var</span>(--recent-post-bgcolor)</span><br><span class="line">    <span class="attribute">overflow</span> hidden</span><br><span class="line">    <span class="attribute">border-radius</span> <span class="number">15px</span></span><br><span class="line">    <span class="selector-class">.recent-post-content</span></span><br><span class="line">      <span class="attribute">display</span> flex</span><br><span class="line">      <span class="attribute">background</span> <span class="built_in">var</span>(--recent-post-bgcolor)</span><br><span class="line">      <span class="attribute">position</span> relative</span><br><span class="line">      <span class="selector-class">.recent-post-cover</span></span><br><span class="line">        <span class="attribute">display</span> flex</span><br><span class="line">        <span class="attribute">background</span> transparent</span><br><span class="line">      <span class="selector-class">.recent-post-info</span></span><br><span class="line">        <span class="attribute">display</span> flex</span><br><span class="line">        <span class="attribute">background</span> transparent</span><br><span class="line">        <span class="attribute">flex-direction</span> column</span><br><span class="line">        <span class="attribute">justify-content</span> center</span><br><span class="line">        <span class="attribute">align-items</span> center</span><br><span class="line">        <span class="selector-class">.article-title</span></span><br><span class="line">          <span class="attribute">height</span> <span class="number">50%</span></span><br><span class="line">          <span class="attribute">display</span>: flex</span><br><span class="line">          <span class="attribute">text-align</span>: center</span><br><span class="line">          <span class="attribute">align-items</span>: center</span><br><span class="line">          <span class="attribute">justify-content</span>: flex-end</span><br><span class="line">          <span class="attribute">flex-direction</span>: column</span><br><span class="line">          <span class="selector-class">.article-title-link</span></span><br><span class="line">            <span class="attribute">color</span>: <span class="built_in">var</span>(--text-highlight-color)</span><br><span class="line">            <span class="attribute">transition</span>: all .<span class="number">2s</span> ease-in-out</span><br><span class="line">            <span class="attribute">display</span>: -webkit-box;</span><br><span class="line">            -webkit-box-orient: vertical;</span><br><span class="line">            <span class="attribute">overflow</span>: hidden;</span><br><span class="line">            <span class="selector-pseudo">&amp;:hover</span></span><br><span class="line">              <span class="attribute">color</span>: <span class="variable">$text</span>-hover</span><br><span class="line">        <span class="selector-class">.recent-post-meta</span></span><br><span class="line">          <span class="attribute">height</span> <span class="number">50%</span></span><br><span class="line">          <span class="attribute">display</span>: flex</span><br><span class="line">          <span class="attribute">text-align</span>: center</span><br><span class="line">          <span class="attribute">align-items</span>: center</span><br><span class="line">          <span class="attribute">justify-content</span>: flex-start</span><br><span class="line">          <span class="attribute">flex-direction</span>: column</span><br><span class="line">          <span class="selector-class">.article-meta-wrap</span></span><br><span class="line">            <span class="attribute">color</span> <span class="number">#969797</span></span><br><span class="line">            <span class="attribute">display</span>: -webkit-box;</span><br><span class="line">            -webkit-box-orient: vertical;</span><br><span class="line">            <span class="attribute">overflow</span>: hidden;</span><br><span class="line">            <span class="selector-tag">a</span></span><br><span class="line">              <span class="attribute">color</span>: <span class="built_in">var</span>(--text-highlight-color)</span><br><span class="line">              <span class="attribute">transition</span>: all .<span class="number">2s</span> ease-in-out</span><br><span class="line">              <span class="attribute">color</span> <span class="number">#969797</span></span><br><span class="line">              <span class="selector-pseudo">&amp;:hover</span></span><br><span class="line">                <span class="attribute">color</span>: <span class="variable">$text</span>-hover</span><br><span class="line">      <span class="selector-class">.article-content</span></span><br><span class="line">        <span class="attribute">display</span> flex</span><br><span class="line">        <span class="attribute">text-align</span>: center</span><br><span class="line">        <span class="attribute">flex-direction</span> row</span><br><span class="line">        <span class="attribute">align-items</span> center</span><br><span class="line">        <span class="attribute">justify-content</span> center</span><br><span class="line">        <span class="selector-class">.article-content-text</span></span><br><span class="line">          <span class="attribute">display</span> -webkit-box</span><br><span class="line">          -webkit-box-orient vertical</span><br><span class="line">          <span class="attribute">text-overflow</span>: ellipsis</span><br><span class="line">          <span class="attribute">overflow</span> hidden</span><br><span class="line">          <span class="attribute">color</span> <span class="number">#fff</span></span><br><span class="line">          <span class="attribute">text-shadow</span> <span class="number">1px</span> <span class="number">2px</span> <span class="number">3px</span> <span class="number">#000</span></span><br><span class="line">          <span class="selector-pseudo">&amp;::before</span></span><br><span class="line">            <span class="attribute">content</span> <span class="string">&quot;❝&quot;</span></span><br><span class="line">            <span class="attribute">font-size</span> <span class="number">20px</span></span><br><span class="line">          <span class="selector-pseudo">&amp;::after</span></span><br><span class="line">            <span class="attribute">content</span> <span class="string">&quot;❞&quot;</span></span><br><span class="line">            <span class="attribute">font-size</span> <span class="number">20px</span></span><br><span class="line">    &amp;<span class="selector-class">.ads-wrap</span></span><br><span class="line">      <span class="attribute">display</span>: block <span class="meta">!important</span></span><br><span class="line">      <span class="attribute">height</span>: auto <span class="meta">!important</span></span><br><span class="line"><span class="comment">// PC端滑动卡片样式</span></span><br><span class="line"><span class="keyword">@media</span> screen <span class="keyword">and</span> (<span class="attribute">min-width</span>:<span class="number">1069px</span>)</span><br><span class="line">  .recent-posts</span><br><span class="line">    padding <span class="number">0</span> <span class="number">15px</span> <span class="number">0</span> <span class="number">15px</span></span><br><span class="line">    .recent-post-item</span><br><span class="line">      .recent-post-content</span><br><span class="line">        position relative</span><br><span class="line">        <span class="attribute">height</span> <span class="number">200px</span></span><br><span class="line">        <span class="attribute">width</span> <span class="number">100%</span></span><br><span class="line">        transition var(--recent-post-transition)</span><br><span class="line">        &amp;:<span class="attribute">hover</span></span><br><span class="line">          .recent-post-cover-shadow</span><br><span class="line">            <span class="attribute">width</span> <span class="number">10.1%</span></span><br><span class="line">            transition var(--recent-post-transition)</span><br><span class="line">          .recent-post-cover</span><br><span class="line">            <span class="attribute">width</span> <span class="number">10%</span></span><br><span class="line">            transition var(--recent-post-transition)</span><br><span class="line">          .article-content</span><br><span class="line">            <span class="attribute">width</span> calc(<span class="number">30%</span> + <span class="number">80px</span>)</span><br><span class="line">            transition var(--recent-post-transition)</span><br><span class="line">            .article-content-text</span><br><span class="line">              opacity <span class="number">1</span></span><br><span class="line">          .recent-post-arrow</span><br><span class="line">            transition var(--recent-post-transition)</span><br><span class="line">        .recent-post-cover-shadow</span><br><span class="line">          z-index: <span class="number">1</span></span><br><span class="line">          transition var(--recent-post-transition)</span><br><span class="line">          position: absolute</span><br><span class="line">          <span class="attribute">height</span> <span class="number">200px</span></span><br><span class="line">          <span class="attribute">width</span> <span class="number">40%</span></span><br><span class="line">        .recent-post-cover</span><br><span class="line">          <span class="attribute">height</span> <span class="number">200px</span></span><br><span class="line">          <span class="attribute">width</span> <span class="number">40%</span></span><br><span class="line">          transition var(--recent-post-transition)</span><br><span class="line">          img</span><br><span class="line">            <span class="attribute">height</span> <span class="number">100%</span></span><br><span class="line">            <span class="attribute">width</span> <span class="number">100%</span></span><br><span class="line">            object-fit cover</span><br><span class="line"></span><br><span class="line">        .recent-post-info</span><br><span class="line">          <span class="attribute">height</span> <span class="number">200px</span></span><br><span class="line">          <span class="attribute">width</span> calc(<span class="number">60%</span> - <span class="number">80px</span>)</span><br><span class="line">          .article-title</span><br><span class="line">            margin: <span class="number">0px</span> <span class="number">40px</span></span><br><span class="line">            font-size <span class="number">24px</span></span><br><span class="line">            .article-title-link</span><br><span class="line">              -webkit-line-clamp: <span class="number">2</span>;</span><br><span class="line">          <span class="selector-class">.recent-post-meta</span></span><br><span class="line">            <span class="attribute">margin</span>: <span class="number">0px</span> <span class="number">20px</span></span><br><span class="line">            <span class="selector-class">.article-meta-wrap</span></span><br><span class="line">              <span class="attribute">font-size</span> <span class="number">12px</span></span><br><span class="line">              -webkit-line-clamp: <span class="number">3</span>;</span><br><span class="line">        <span class="selector-class">.article-content</span></span><br><span class="line">          <span class="attribute">height</span> <span class="number">200px</span></span><br><span class="line">          <span class="attribute">width</span> <span class="number">90px</span></span><br><span class="line">          <span class="attribute">background</span> <span class="built_in">var</span>(--article-content-bgcolor)</span><br><span class="line">          <span class="attribute">transition</span> <span class="built_in">var</span>(--recent-post-transition)</span><br><span class="line">          <span class="selector-class">.article-content-text</span></span><br><span class="line">            -webkit-line-clamp <span class="number">4</span></span><br><span class="line">            <span class="attribute">transition</span>: <span class="built_in">var</span>(--recent-post-transition)</span><br><span class="line">            <span class="attribute">opacity</span> <span class="number">0</span></span><br><span class="line">        <span class="selector-class">.recent-post-arrow</span></span><br><span class="line">          <span class="attribute">transition</span> <span class="built_in">var</span>(--recent-post-transition)</span><br><span class="line">          <span class="attribute">display</span> block</span><br><span class="line">          <span class="attribute">position</span> absolute</span><br><span class="line">          <span class="attribute">height</span> <span class="number">20px</span></span><br><span class="line">          <span class="attribute">width</span> <span class="number">8px</span></span><br><span class="line">          <span class="attribute">background</span> <span class="built_in">var</span>(--recent-post-arrow)</span><br><span class="line">        &amp;<span class="selector-class">.both</span>,</span><br><span class="line">        &amp;<span class="selector-class">.right</span></span><br><span class="line">          <span class="selector-class">.recent-post-cover-shadow</span></span><br><span class="line">            <span class="attribute">left</span> <span class="number">0</span></span><br><span class="line">            <span class="attribute">background</span> <span class="built_in">linear-gradient</span>(to left, <span class="built_in">var</span>(--recent-post-cover-shadow), transparent)</span><br><span class="line">          <span class="selector-class">.recent-post-cover</span></span><br><span class="line">            <span class="attribute">order</span>: <span class="number">1</span></span><br><span class="line">          <span class="selector-class">.recent-post-info</span></span><br><span class="line">            <span class="attribute">order</span>: <span class="number">2</span></span><br><span class="line">          <span class="selector-class">.article-content</span></span><br><span class="line">            <span class="attribute">order</span>: <span class="number">3</span></span><br><span class="line">            <span class="attribute">clip-path</span> <span class="built_in">polygon</span>(<span class="number">0</span> <span class="number">50%</span>, <span class="number">80px</span> <span class="number">0</span>, <span class="number">100%</span> <span class="number">0</span>, <span class="number">100%</span> <span class="number">100%</span>, <span class="number">80px</span> <span class="number">100%</span>)</span><br><span class="line">            <span class="selector-class">.article-content-text</span></span><br><span class="line">              <span class="attribute">margin</span> <span class="number">20px</span> <span class="number">40px</span> <span class="number">20px</span> <span class="number">80px</span></span><br><span class="line">          <span class="selector-class">.recent-post-arrow</span></span><br><span class="line">            <span class="attribute">order</span>: <span class="number">4</span></span><br><span class="line">            <span class="attribute">left</span> <span class="built_in">calc</span>(<span class="number">100%</span> - <span class="number">80px</span>)</span><br><span class="line">            <span class="attribute">top</span> <span class="built_in">calc</span>(<span class="number">50%</span> - <span class="number">10px</span>)</span><br><span class="line">            <span class="attribute">clip-path</span> <span class="built_in">polygon</span>(<span class="number">0</span> <span class="number">10px</span>, <span class="number">8px</span> <span class="number">0</span>, <span class="number">8px</span> <span class="number">20px</span>)</span><br><span class="line">          <span class="selector-pseudo">&amp;:hover</span></span><br><span class="line">            <span class="selector-class">.recent-post-arrow</span></span><br><span class="line">              <span class="attribute">left</span> <span class="built_in">calc</span>(<span class="number">100%</span> - <span class="number">40px</span>)</span><br><span class="line">        &amp;<span class="selector-class">.left</span></span><br><span class="line">          <span class="selector-class">.recent-post-cover-shadow</span></span><br><span class="line">            <span class="attribute">right</span> <span class="number">0</span></span><br><span class="line">            <span class="attribute">background</span> <span class="built_in">linear-gradient</span>(to right, <span class="built_in">var</span>(--recent-post-cover-shadow), transparent)</span><br><span class="line">          <span class="selector-class">.recent-post-cover</span></span><br><span class="line">            <span class="attribute">order</span>: <span class="number">4</span></span><br><span class="line">          <span class="selector-class">.recent-post-info</span></span><br><span class="line">            <span class="attribute">order</span>: <span class="number">3</span></span><br><span class="line">          <span class="selector-class">.article-content</span></span><br><span class="line">            <span class="attribute">order</span>: <span class="number">2</span></span><br><span class="line">            <span class="attribute">clip-path</span> <span class="built_in">polygon</span>(<span class="number">100%</span> <span class="number">50%</span>,<span class="built_in">calc</span>(<span class="number">100%</span> - <span class="number">80px</span>) <span class="number">100%</span>,<span class="number">0</span> <span class="number">100%</span>,<span class="number">0</span> <span class="number">0</span>,<span class="built_in">calc</span>(<span class="number">100%</span> - <span class="number">80px</span>) <span class="number">0</span>)</span><br><span class="line">            <span class="selector-class">.article-content-text</span></span><br><span class="line">              <span class="attribute">margin</span> <span class="number">20px</span> <span class="number">80px</span> <span class="number">20px</span> <span class="number">40px</span></span><br><span class="line">          <span class="selector-class">.recent-post-arrow</span></span><br><span class="line">            <span class="attribute">order</span>: <span class="number">1</span></span><br><span class="line">            <span class="attribute">left</span> <span class="number">72px</span></span><br><span class="line">            <span class="attribute">top</span> <span class="built_in">calc</span>(<span class="number">50%</span> - <span class="number">10px</span>)</span><br><span class="line">            <span class="attribute">clip-path</span> <span class="built_in">polygon</span>(<span class="number">0</span> <span class="number">0</span>, <span class="number">8px</span> <span class="number">10px</span>, <span class="number">0</span> <span class="number">20px</span>)</span><br><span class="line">          <span class="selector-pseudo">&amp;:hover</span></span><br><span class="line">            <span class="selector-class">.recent-post-arrow</span></span><br><span class="line">              <span class="attribute">left</span> <span class="number">32px</span></span><br><span class="line"><span class="comment">// 双栏布局卡片自适应适配</span></span><br><span class="line"><span class="keyword">@media</span> screen <span class="keyword">and</span> (<span class="attribute">min-width</span>:<span class="number">572px</span>) <span class="keyword">and</span> (<span class="attribute">max-width</span>:<span class="number">1068px</span>)</span><br><span class="line">  .recent-posts</span><br><span class="line">    padding <span class="number">0</span> <span class="number">15px</span> <span class="number">0</span> <span class="number">15px</span></span><br><span class="line">    display flex</span><br><span class="line">    flex-direction row</span><br><span class="line">    flex-wrap wrap</span><br><span class="line">    .recent-post-item</span><br><span class="line">      border-radius <span class="number">15px</span></span><br><span class="line">      overflow hidden</span><br><span class="line">      <span class="attribute">width</span> <span class="number">47%</span></span><br><span class="line">      margin <span class="number">0px</span> <span class="number">3%</span> <span class="number">20px</span> <span class="number">0px</span></span><br><span class="line">    nav#pagination</span><br><span class="line">      <span class="attribute">width</span>: <span class="number">100%</span></span><br><span class="line">// 手机端单栏布局自适应适配</span><br><span class="line">@media screen <span class="keyword">and</span> (<span class="attribute">max-width</span>:<span class="number">572px</span>)</span><br><span class="line">  .recent-posts</span><br><span class="line">    padding <span class="number">0</span> <span class="number">15px</span> <span class="number">0</span> <span class="number">15px</span></span><br><span class="line">    .recent-post-item</span><br><span class="line">      border-radius <span class="number">15px</span></span><br><span class="line">      overflow hidden</span><br><span class="line"></span><br><span class="line">// 手机端及双栏卡片样式</span><br><span class="line">@media screen <span class="keyword">and</span> (<span class="attribute">max-width</span>:<span class="number">1068px</span>)</span><br><span class="line">  .recent-posts</span><br><span class="line">    .recent-post-item</span><br><span class="line">      .recent-post-content</span><br><span class="line">        flex-direction column</span><br><span class="line">        flex-wrap nowrap</span><br><span class="line">        align-items center</span><br><span class="line">        <span class="attribute">max-height</span> <span class="number">350px</span></span><br><span class="line">        <span class="attribute">height</span>: auto </span><br><span class="line">        <span class="attribute">width</span> <span class="number">100%</span></span><br><span class="line">        .recent-post-cover</span><br><span class="line">          <span class="attribute">width</span> <span class="number">100%</span></span><br><span class="line">          <span class="attribute">height</span> <span class="number">200px</span></span><br><span class="line">          clip-path polygon(<span class="number">0</span> <span class="number">130px</span>,<span class="number">0</span> <span class="number">0</span>,<span class="number">100%</span> <span class="number">0</span>,<span class="number">100%</span> <span class="number">130px</span>,<span class="number">50%</span> <span class="number">100%</span>)</span><br><span class="line">          img</span><br><span class="line">            <span class="attribute">height</span> <span class="number">200px</span></span><br><span class="line">            <span class="attribute">width</span> <span class="number">100%</span></span><br><span class="line">            object-fit cover</span><br><span class="line">        .recent-post-info</span><br><span class="line">          <span class="attribute">height</span> <span class="number">150px</span></span><br><span class="line">          <span class="attribute">width</span> <span class="number">100%</span></span><br><span class="line">          padding <span class="number">0px</span> <span class="number">25px</span> <span class="number">5px</span> <span class="number">25px</span></span><br><span class="line">          .article-title</span><br><span class="line">            margin: <span class="number">0px</span> <span class="number">40px</span></span><br><span class="line">            font-size <span class="number">18px</span></span><br><span class="line">            .article-title-link</span><br><span class="line">              -webkit-line-clamp: <span class="number">2</span>;</span><br><span class="line">          <span class="selector-class">.recent-post-meta</span></span><br><span class="line">            <span class="attribute">margin</span>: <span class="number">0px</span> <span class="number">20px</span></span><br><span class="line">            <span class="selector-class">.article-meta-wrap</span></span><br><span class="line">              <span class="attribute">font-size</span> <span class="number">12px</span></span><br><span class="line">              -webkit-line-clamp: <span class="number">3</span>;</span><br><span class="line">        <span class="selector-class">.article-content</span></span><br><span class="line">          <span class="attribute">position</span> absolute</span><br><span class="line">          <span class="attribute">height</span> <span class="number">200px</span></span><br><span class="line">          <span class="attribute">width</span> <span class="number">100%</span></span><br><span class="line">          <span class="attribute">background</span> <span class="built_in">rgba</span>(<span class="number">25</span>,<span class="number">25</span>,<span class="number">25</span>,<span class="number">0.5</span>)</span><br><span class="line">          <span class="attribute">clip-path</span> <span class="built_in">polygon</span>(<span class="number">0</span> <span class="number">130px</span>,<span class="number">0</span> <span class="number">0</span>,<span class="number">100%</span> <span class="number">0</span>,<span class="number">100%</span> <span class="number">130px</span>,<span class="number">50%</span> <span class="number">100%</span>)</span><br><span class="line">          <span class="selector-class">.article-content-text</span></span><br><span class="line">            -webkit-line-clamp <span class="number">3</span></span><br><span class="line">            <span class="attribute">font-size</span> <span class="number">16px</span></span><br><span class="line">            <span class="attribute">margin</span> <span class="number">0px</span> <span class="number">25px</span> <span class="number">30px</span> <span class="number">25px</span></span><br><span class="line">        <span class="selector-class">.recent-post-arrow</span></span><br><span class="line">          <span class="attribute">display</span> block</span><br><span class="line">          <span class="attribute">background</span> <span class="built_in">var</span>(--article-content-bgcolor)</span><br><span class="line">          <span class="attribute">position</span> absolute</span><br><span class="line">          <span class="attribute">height</span> <span class="number">10px</span></span><br><span class="line">          <span class="attribute">width</span> <span class="number">20px</span></span><br><span class="line">          <span class="attribute">clip-path</span> <span class="built_in">polygon</span>(<span class="number">0</span> <span class="number">0</span>,<span class="number">100%</span> <span class="number">0</span>,<span class="number">50%</span> <span class="number">100%</span>)</span><br><span class="line">          <span class="attribute">top</span> <span class="number">20px</span></span><br></pre></td></tr></table></figure></code></pre><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="分栏-2"><pre><code><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">//default color:</span></span><br><span class="line">      <span class="selector-pseudo">:root</span></span><br><span class="line">        <span class="attr">--recent-post-bgcolor</span>: <span class="built_in">rgba</span>(<span class="number">200</span>, <span class="number">200</span>, <span class="number">200</span>, <span class="number">0.5</span>)  <span class="comment">//默认背景</span></span><br><span class="line">        <span class="attr">--article-content-bgcolor</span>: <span class="number">#49b1f5</span> <span class="comment">//描述版块背景</span></span><br><span class="line">        <span class="attr">--recent-post-arrow</span>: <span class="number">#ffffff</span> <span class="comment">//箭头配色</span></span><br><span class="line">        <span class="attr">--recent-post-cover-shadow</span>: <span class="number">#ffffff</span> <span class="comment">//封面遮罩层配色，建议和默认值的颜色相对应。</span></span><br><span class="line">        <span class="attr">--recent-post-transition</span>: <span class="attribute">all</span> <span class="number">0.5s</span> <span class="built_in">cubic-bezier</span>(<span class="number">0.59</span>, <span class="number">0.01</span>, <span class="number">0.48</span>, <span class="number">1.17</span>)  //动画效果。不了解的不要改动</span><br><span class="line">      <span class="selector-attr">[data-theme=<span class="string">&quot;dark&quot;</span>]</span></span><br><span class="line">        <span class="attr">--recent-post-bgcolor</span>: <span class="built_in">rgba</span>(<span class="number">35</span>,<span class="number">35</span>,<span class="number">35</span>,<span class="number">0.5</span>)</span><br><span class="line">        <span class="attr">--article-content-bgcolor</span>: <span class="number">#99999a</span></span><br><span class="line">        <span class="attr">--recent-post-arrow</span>: <span class="number">#37e2dd</span></span><br><span class="line">        <span class="attr">--recent-post-cover-shadow</span>: <span class="number">#232323</span></span><br><span class="line">      <span class="comment">// 默认的首页卡片容器布局</span></span><br><span class="line">      <span class="selector-class">.recent-posts</span></span><br><span class="line">        <span class="attribute">padding</span> <span class="number">0</span> <span class="number">15px</span> <span class="number">0</span> <span class="number">15px</span></span><br><span class="line">        <span class="attribute">height</span> fit-content</span><br><span class="line">        <span class="selector-class">.recent-post-item</span></span><br><span class="line">          <span class="attribute">margin-bottom</span> <span class="number">15px</span></span><br><span class="line">          <span class="attribute">background</span> <span class="built_in">var</span>(--recent-post-bgcolor)</span><br><span class="line">          <span class="attribute">overflow</span> hidden</span><br><span class="line">          <span class="attribute">border-radius</span> <span class="number">15px</span></span><br><span class="line">          <span class="selector-class">.recent-post-content</span></span><br><span class="line">            <span class="attribute">display</span> flex</span><br><span class="line">            <span class="attribute">background</span> <span class="built_in">var</span>(--recent-post-bgcolor)</span><br><span class="line">            <span class="attribute">position</span> relative</span><br><span class="line">            <span class="selector-class">.recent-post-cover</span></span><br><span class="line">              <span class="attribute">display</span> flex</span><br><span class="line">              <span class="attribute">background</span> transparent</span><br><span class="line">            <span class="selector-class">.recent-post-info</span></span><br><span class="line">              <span class="attribute">display</span> flex</span><br><span class="line">              <span class="attribute">background</span> transparent</span><br><span class="line">              <span class="attribute">flex-direction</span> column</span><br><span class="line">              <span class="attribute">justify-content</span> center</span><br><span class="line">              <span class="attribute">align-items</span> center</span><br><span class="line">              <span class="selector-class">.article-title</span></span><br><span class="line">                <span class="attribute">height</span> <span class="number">50%</span></span><br><span class="line">                <span class="attribute">display</span>: flex</span><br><span class="line">                <span class="attribute">text-align</span>: center</span><br><span class="line">                <span class="attribute">align-items</span>: center</span><br><span class="line">                <span class="attribute">justify-content</span>: flex-end</span><br><span class="line">                <span class="attribute">flex-direction</span>: column</span><br><span class="line">                <span class="selector-class">.article-title-link</span></span><br><span class="line">                  <span class="attribute">color</span>: <span class="built_in">var</span>(--text-highlight-color)</span><br><span class="line">                  <span class="attribute">transition</span>: all .<span class="number">2s</span> ease-in-out</span><br><span class="line">                  <span class="attribute">display</span>: -webkit-box;</span><br><span class="line">                  -webkit-box-orient: vertical;</span><br><span class="line">                  <span class="attribute">overflow</span>: hidden;</span><br><span class="line">                  <span class="selector-pseudo">&amp;:hover</span></span><br><span class="line">                    <span class="attribute">color</span>: <span class="variable">$text</span>-hover</span><br><span class="line">              <span class="selector-class">.recent-post-meta</span></span><br><span class="line">                <span class="attribute">height</span> <span class="number">50%</span></span><br><span class="line">                <span class="attribute">display</span>: flex</span><br><span class="line">                <span class="attribute">text-align</span>: center</span><br><span class="line">                <span class="attribute">align-items</span>: center</span><br><span class="line">                <span class="attribute">justify-content</span>: flex-start</span><br><span class="line">                <span class="attribute">flex-direction</span>: column</span><br><span class="line">                <span class="selector-class">.article-meta-wrap</span></span><br><span class="line">                  <span class="attribute">color</span> <span class="number">#969797</span></span><br><span class="line">                  <span class="attribute">display</span>: -webkit-box;</span><br><span class="line">                  -webkit-box-orient: vertical;</span><br><span class="line">                  <span class="attribute">overflow</span>: hidden;</span><br><span class="line">                  <span class="selector-tag">a</span></span><br><span class="line">                    <span class="attribute">color</span>: <span class="built_in">var</span>(--text-highlight-color)</span><br><span class="line">                    <span class="attribute">transition</span>: all .<span class="number">2s</span> ease-in-out</span><br><span class="line">                    <span class="attribute">color</span> <span class="number">#969797</span></span><br><span class="line">                    <span class="selector-pseudo">&amp;:hover</span></span><br><span class="line">                      <span class="attribute">color</span>: <span class="variable">$text</span>-hover</span><br><span class="line">            <span class="selector-class">.article-content</span></span><br><span class="line">              <span class="attribute">display</span> flex</span><br><span class="line">              <span class="attribute">text-align</span>: center</span><br><span class="line">              <span class="attribute">flex-direction</span> row</span><br><span class="line">              <span class="attribute">align-items</span> center</span><br><span class="line">              <span class="attribute">justify-content</span> center</span><br><span class="line">              <span class="selector-class">.article-content-text</span></span><br><span class="line">                <span class="attribute">display</span> -webkit-box</span><br><span class="line">                -webkit-box-orient vertical</span><br><span class="line">                <span class="attribute">text-overflow</span>: ellipsis</span><br><span class="line">                <span class="attribute">overflow</span> hidden</span><br><span class="line">                <span class="attribute">color</span> <span class="number">#fff</span></span><br><span class="line">                <span class="attribute">text-shadow</span> <span class="number">1px</span> <span class="number">2px</span> <span class="number">3px</span> <span class="number">#000</span></span><br><span class="line">          &amp;<span class="selector-class">.ads-wrap</span></span><br><span class="line">            <span class="attribute">display</span>: block <span class="meta">!important</span></span><br><span class="line">            <span class="attribute">height</span>: auto <span class="meta">!important</span></span><br><span class="line">        nav<span class="selector-id">#pagination</span></span><br><span class="line">          <span class="attribute">width</span>: <span class="number">100%</span></span><br><span class="line">      <span class="comment">// 卡片单元布局样式</span></span><br><span class="line">      <span class="selector-class">.recent-posts</span></span><br><span class="line">        <span class="attribute">padding</span> <span class="number">0</span> <span class="number">15px</span> <span class="number">0</span> <span class="number">15px</span></span><br><span class="line">        <span class="attribute">display</span> flex</span><br><span class="line">        <span class="attribute">flex-direction</span> row</span><br><span class="line">        <span class="attribute">flex-wrap</span> wrap</span><br><span class="line">        <span class="selector-class">.recent-post-item</span></span><br><span class="line">          <span class="attribute">border-radius</span> <span class="number">15px</span></span><br><span class="line">          <span class="attribute">overflow</span> hidden</span><br><span class="line">          <span class="selector-class">.recent-post-content</span></span><br><span class="line">            <span class="attribute">flex-direction</span> column</span><br><span class="line">            <span class="attribute">flex-wrap</span> nowrap</span><br><span class="line">            <span class="attribute">align-items</span> center</span><br><span class="line">            <span class="attribute">max-height</span> <span class="number">350px</span></span><br><span class="line">            <span class="attribute">height</span>: auto</span><br><span class="line">            <span class="attribute">width</span> <span class="number">100%</span></span><br><span class="line">            <span class="selector-class">.recent-post-cover</span></span><br><span class="line">              <span class="attribute">width</span> <span class="number">100%</span></span><br><span class="line">              <span class="attribute">height</span> <span class="number">200px</span></span><br><span class="line">              <span class="attribute">clip-path</span> <span class="built_in">polygon</span>(<span class="number">0</span> <span class="number">130px</span>,<span class="number">0</span> <span class="number">0</span>,<span class="number">100%</span> <span class="number">0</span>,<span class="number">100%</span> <span class="number">130px</span>,<span class="number">50%</span> <span class="number">100%</span>)</span><br><span class="line">              <span class="selector-tag">img</span></span><br><span class="line">                <span class="attribute">height</span> <span class="number">200px</span></span><br><span class="line">                <span class="attribute">width</span> <span class="number">100%</span></span><br><span class="line">                <span class="attribute">object-fit</span> cover</span><br><span class="line">            <span class="selector-class">.recent-post-info</span></span><br><span class="line">              <span class="attribute">height</span> <span class="number">150px</span></span><br><span class="line">              <span class="attribute">width</span> <span class="number">100%</span></span><br><span class="line">              <span class="attribute">padding</span> <span class="number">0px</span> <span class="number">25px</span> <span class="number">5px</span> <span class="number">25px</span></span><br><span class="line">              <span class="selector-class">.article-title</span></span><br><span class="line">                <span class="attribute">margin</span>: <span class="number">0px</span> <span class="number">40px</span></span><br><span class="line">                <span class="attribute">font-size</span> <span class="number">18px</span></span><br><span class="line">                <span class="selector-class">.article-title-link</span></span><br><span class="line">                  -webkit-line-clamp: <span class="number">2</span>;</span><br><span class="line">              <span class="selector-class">.recent-post-meta</span></span><br><span class="line">                <span class="attribute">margin</span>: <span class="number">0px</span> <span class="number">20px</span></span><br><span class="line">                <span class="selector-class">.article-meta-wrap</span></span><br><span class="line">                  <span class="attribute">font-size</span> <span class="number">12px</span></span><br><span class="line">                  -webkit-line-clamp: <span class="number">3</span>;</span><br><span class="line">            <span class="selector-class">.article-content</span></span><br><span class="line">              <span class="attribute">position</span> absolute</span><br><span class="line">              <span class="attribute">height</span> <span class="number">200px</span></span><br><span class="line">              <span class="attribute">width</span> <span class="number">100%</span></span><br><span class="line">              <span class="attribute">background</span> <span class="built_in">rgba</span>(<span class="number">25</span>,<span class="number">25</span>,<span class="number">25</span>,<span class="number">0.5</span>)</span><br><span class="line">              <span class="attribute">clip-path</span> <span class="built_in">polygon</span>(<span class="number">0</span> <span class="number">130px</span>,<span class="number">0</span> <span class="number">0</span>,<span class="number">100%</span> <span class="number">0</span>,<span class="number">100%</span> <span class="number">130px</span>,<span class="number">50%</span> <span class="number">100%</span>)</span><br><span class="line">              <span class="selector-class">.article-content-text</span></span><br><span class="line">                -webkit-line-clamp <span class="number">3</span></span><br><span class="line">                <span class="attribute">font-size</span> <span class="number">16px</span></span><br><span class="line">                <span class="attribute">margin</span> <span class="number">0px</span> <span class="number">25px</span> <span class="number">30px</span> <span class="number">25px</span></span><br><span class="line">                <span class="selector-pseudo">&amp;::before</span></span><br><span class="line">                  <span class="attribute">content</span> <span class="string">&quot;❝&quot;</span></span><br><span class="line">                  <span class="attribute">font-size</span> <span class="number">20px</span></span><br><span class="line">                <span class="selector-pseudo">&amp;::after</span></span><br><span class="line">                  <span class="attribute">content</span> <span class="string">&quot;❞&quot;</span></span><br><span class="line">                  <span class="attribute">font-size</span> <span class="number">20px</span></span><br><span class="line">            <span class="selector-class">.recent-post-arrow</span></span><br><span class="line">              <span class="attribute">display</span> block</span><br><span class="line">              <span class="attribute">background</span> <span class="built_in">var</span>(--article-content-bgcolor)</span><br><span class="line">              <span class="attribute">position</span> absolute</span><br><span class="line">              <span class="attribute">height</span> <span class="number">10px</span></span><br><span class="line">              <span class="attribute">width</span> <span class="number">20px</span></span><br><span class="line">              <span class="attribute">clip-path</span> <span class="built_in">polygon</span>(<span class="number">0</span> <span class="number">0</span>,<span class="number">100%</span> <span class="number">0</span>,<span class="number">50%</span> <span class="number">100%</span>)</span><br><span class="line">              <span class="attribute">top</span> <span class="number">20px</span></span><br><span class="line">      <span class="comment">// 三栏布局滑动卡片样式</span></span><br><span class="line">      <span class="keyword">@media</span> screen <span class="keyword">and</span> (<span class="attribute">min-width</span>:<span class="number">1069px</span>)</span><br><span class="line">        .recent-posts</span><br><span class="line">          .recent-post-item</span><br><span class="line">            <span class="attribute">width</span> <span class="number">32.3%</span></span><br><span class="line">            margin <span class="number">0px</span> <span class="number">1%</span> <span class="number">20px</span> <span class="number">0px</span></span><br><span class="line">            .recent-post-content</span><br><span class="line">              .recent-post-info</span><br><span class="line">                .article-title</span><br><span class="line">                  margin: <span class="number">0px</span> <span class="number">5px</span></span><br><span class="line">                  .article-title-link</span><br><span class="line">                    -webkit-line-clamp: <span class="number">1</span>;</span><br><span class="line">                <span class="selector-class">.recent-post-meta</span></span><br><span class="line">                  <span class="attribute">margin</span>: <span class="number">0px</span> <span class="number">5px</span></span><br><span class="line">                  <span class="selector-class">.article-meta-wrap</span></span><br><span class="line">                    -webkit-line-clamp: <span class="number">2</span>;</span><br><span class="line">      <span class="comment">// 双栏布局卡片自适应适配</span></span><br><span class="line">      <span class="keyword">@media</span> screen <span class="keyword">and</span> (<span class="attribute">min-width</span>:<span class="number">572px</span>) <span class="keyword">and</span> (<span class="attribute">max-width</span>:<span class="number">1068px</span>)</span><br><span class="line">        .recent-posts</span><br><span class="line">          .recent-post-item</span><br><span class="line">            <span class="attribute">width</span> <span class="number">47%</span></span><br><span class="line">            margin <span class="number">0px</span> <span class="number">3%</span> <span class="number">20px</span> <span class="number">0px</span></span><br><span class="line">      // 单栏布局卡片自适应适配</span><br><span class="line">      @media screen <span class="keyword">and</span> (<span class="attribute">max-width</span>:<span class="number">572px</span>)</span><br><span class="line">        .recent-posts</span><br><span class="line">          .recent-post-item</span><br><span class="line">            <span class="attribute">width</span> <span class="number">100%</span></span><br></pre></td></tr></table></figure></code></pre><p>​</p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></div></li></ul></li><li><p>修改<code>[BlogRoot]\themes\butterfly\source\css\_page\homepage.styl</code>,将整文件内容替换为以下代码：</p>   <figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> <span class="built_in">hexo-config</span>(<span class="string">&#x27;index_card_style&#x27;</span>) == <span class="string">&#x27;slidecard&#x27;</span></span><br><span class="line">  <span class="keyword">@import</span> <span class="string">&#x27;./_index_card_style/slidecard&#x27;</span></span><br><span class="line"><span class="keyword">else</span> <span class="keyword">if</span> <span class="built_in">hexo-config</span>(<span class="string">&#x27;index_card_style&#x27;</span>) == <span class="string">&#x27;multicard&#x27;</span></span><br><span class="line">  <span class="keyword">@import</span> <span class="string">&#x27;./_index_card_style/multicard&#x27;</span></span><br></pre></td></tr></table></figure></li><li><p>然后在主题配置文件<code>[BlogRoot]\_config.butterfly.yml</code>里新增配置项，这样我们就可以通过配置项自由切换使用哪款了：</p>   <figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 主页卡片样式</span></span><br><span class="line"><span class="comment"># Docs: https://akilar.top/posts/d6b69c49/</span></span><br><span class="line"><span class="attr">index_card_style:</span> <span class="string">multicard</span> <span class="comment"># slidecard | multicard</span></span><br></pre></td></tr></table></figure></li><li><p>考虑到不管是样式一还是样式二都存在一个布局突变的情况。为了不至于让首页的文章出现空缺，建议将首页生成的文章数量控制为1,2,3的公倍数。修改站点配置文件<code>[BlogRoot]\_config.yml</code>。找到以下配置项进行调整，注意这是站点配置文件本就有的配置项，不是新增配置项。建议是调整为12篇。如果你的侧边栏魔改内容特别多，那么建议改成18、24、30。务必确保文章卡片栏比侧栏完全展开要长，这样展示效果最好</p>   <figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Home page setting</span></span><br><span class="line"><span class="comment"># path: Root path for your blogs index page. (default = &#x27;&#x27;)</span></span><br><span class="line"><span class="comment"># per_page: Posts displayed per page. (0 = disable pagination)</span></span><br><span class="line"><span class="comment"># order_by: Posts order. (Order by date descending by default)</span></span><br><span class="line"><span class="attr">index_generator:</span></span><br><span class="line">  <span class="attr">path:</span> <span class="string">&#x27;&#x27;</span></span><br><span class="line">  <span class="attr">per_page:</span> <span class="number">12</span></span><br><span class="line">  <span class="attr">order_by:</span> <span class="string">-date</span></span><br></pre></td></tr></table></figure></li><li><p>本教程讨论的卡片都是考虑有封面和有描述的。所以需要保证你已经开启了相应的配置，查看主题配置文件<code>[BlogRoot]\_config.butterfly.yml</code>,找到配置项开启描述栏，建议选择2模式</p>   <figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Display the article introduction on homepage</span></span><br><span class="line"><span class="comment"># 1: description</span></span><br><span class="line"><span class="comment"># 2: both (if the description exists, it will show description, or show the auto_excerpt)</span></span><br><span class="line"><span class="comment"># 3: auto_excerpt (default)</span></span><br><span class="line"><span class="comment"># false: do not show the article introduction</span></span><br><span class="line"><span class="attr">index_post_content:</span></span><br><span class="line">  <span class="attr">method:</span> <span class="number">2</span></span><br><span class="line">  <span class="attr">length:</span> <span class="number">500</span> <span class="comment"># if you set method to 2 or 3, the length need to config</span></span><br></pre></td></tr></table></figure></li></ol>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;参考：&lt;a href=&quot;https://akilar.top/posts/d6b69c49/&quot;&gt;双栏布局首页卡片魔改教程&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本网站采用的是三栏+响应式布局的方案，也就是slidecard的方案，但是为了可拓展性，我还是把两种都搬了过来，方便大家阅读！&lt;/</summary>
      
    
    
    
    <category term="博客" scheme="https://www.777nx.cn/categories/%E5%8D%9A%E5%AE%A2/"/>
    
    
    <category term="Hexo" scheme="https://www.777nx.cn/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>Android Studio项目gradle下载慢问题</title>
    <link href="https://www.777nx.cn/posts/d297b2f0.html"/>
    <id>https://www.777nx.cn/posts/d297b2f0.html</id>
    <published>2025-03-01T13:08:27.000Z</published>
    <updated>2026-10-15T06:19:20.362Z</updated>
    
    <content type="html"><![CDATA[<div class="note info flat"><p>参考：<a href="https://blog.csdn.net/moresi/article/details/136206437">Android Studio项目gradle下载慢问题</a></p></div><h2 id="一、问题起因">一、问题起因</h2><p>通过Android studio新建了一个Android项目，同步gradle居然花费了30多分钟。忍不了，真的忍不了。</p><h3 id="二、原因分析">二、原因分析</h3><h4 id="1-通过观察日志耗时情况">1. 通过观察日志耗时情况</h4><p>发现耗时主要集中在两方面：<code>gradle</code>下载和<code>gradle依赖</code>下载，如下图所示，<code>gradle</code>下载耗时24分钟，<code>gradle依赖</code>下载耗时7分钟</p><p><img src="https://img.777nx.cn/test/5a2a31f01060b7867a434c5f65f99eda.png" alt="5a2a31f01060b7867a434c5f65f99eda"></p><h4 id="2-查看gradle-wrapper-properties">2. 查看<code>gradle-wrapper.properties</code></h4><p>文件路径<code>gradle/wrapper/gradle-wrapper.properties</code></p><ul><li>gradle-wrapper.properties是Gradle Wrapper的配置文件，用于指定Gradle版本。通过配置这个文件，可以确保项目在不同的环境中使用相同版本的Gradle进行构建。</li><li>Gradle Wrapper的目的是解决不同机器上Gradle版本不一致的问题，通过配置gradle-wrapper.properties文件，项目可以在任何环境下自动下载并使用正确的Gradle版本进行构建。</li></ul><p>查看后发现，默认使用的地址为https://services.gradle.org/distributions/gradle-8.2-bin.zip。</p><figure class="highlight properties"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">distributionBase</span>=<span class="string">GRADLE_USER_HOME</span></span><br><span class="line"><span class="attr">distributionPath</span>=<span class="string">wrapper/dists</span></span><br><span class="line"><span class="attr">distributionUrl</span>=<span class="string">https\://services.gradle.org/distributions/gradle-8.2-bin.zip</span></span><br><span class="line"><span class="attr">zipStoreBase</span>=<span class="string">GRADLE_USER_HOME</span></span><br><span class="line"><span class="attr">zipStorePath</span>=<span class="string">wrapper/dists</span></span><br></pre></td></tr></table></figure><blockquote><p>提示：可能你的gradle版本与我的不同，但并无影响</p></blockquote><p>通过ip查询工具，可发现<code>services.gradle.org</code>域名所在地理位置为美国。呵呵！国外源，慢得理所应当。</p><h4 id="3-查看settings-gradle-kts">3. 查看<code>settings.gradle.kts</code></h4><p>文件路径<code>根目录</code></p><ul><li>settings.gradle.kts文件是Kotlin DSL格式的settings文件，它用于配置项目的模块结构。在这个文件中，你可以声明项目中包含哪些模块、这些模块之间的依赖关系，以及全局的构建逻辑。</li><li>在新版本gradle中，settings.gradle.kts文件还承担了仓库配置的工作，而这也是我们关注的重点</li></ul><p>通过Android studio新建的项目，gradle仓库配置默认如下</p><figure class="highlight isbl"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">pluginManagement</span> &#123;</span><br><span class="line"> <span class="variable">repositories</span> &#123;</span><br><span class="line">     <span class="function"><span class="title">google</span>()</span></span><br><span class="line">     <span class="function"><span class="title">mavenCentral</span>()</span></span><br><span class="line">     <span class="function"><span class="title">gradlePluginPortal</span>()</span></span><br><span class="line"> &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="variable">dependencyResolutionManagement</span> &#123;</span><br><span class="line"> <span class="variable">repositoriesMode.set</span>(<span class="variable">RepositoriesMode.FAIL_ON_PROJECT_REPOS</span>)</span><br><span class="line"> <span class="variable">repositories</span> &#123;</span><br><span class="line">     <span class="function"><span class="title">google</span>()</span></span><br><span class="line">     <span class="function"><span class="title">mavenCentral</span>()</span></span><br><span class="line"> &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="variable">rootProject.name</span> = <span class="string">&quot;My Application&quot;</span></span><br><span class="line"><span class="function"><span class="title">include</span>(<span class="string">&quot;:app&quot;</span>)</span></span><br></pre></td></tr></table></figure><p>通过ip查询工具，分别查询地理位置，默认源同样均在国外</p><table><thead><tr><th style="text-align:center">配置</th><th style="text-align:center">地址</th><th style="text-align:center">地址位置</th></tr></thead><tbody><tr><td style="text-align:center">google()</td><td style="text-align:center"><a href="https://maven.google.com/">https://maven.google.com/</a></td><td style="text-align:center">美国</td></tr><tr><td style="text-align:center">mavenCentral()</td><td style="text-align:center"><a href="https://repo1.maven.org/maven2/">https://repo1.maven.org/maven2/</a></td><td style="text-align:center">瑞典</td></tr><tr><td style="text-align:center">gradlePluginPortal()</td><td style="text-align:center"><a href="https://plugins.gradle.org/m2/">https://plugins.gradle.org/m2/</a></td><td style="text-align:center">美国</td></tr></tbody></table><p>行吧，国外源，网络情况不理想，下载速度相对较慢，慢得有理有据。</p><h2 id="三、解决方式">三、解决方式</h2><p>对于上述问题，常见的解决方式无非走<strong>VPN代理</strong>或通过<strong>国内镜像源</strong>加速，由于合规的VPN代理需要申请，本文主要讲解通过国内镜像源加速的方式。有合规VPN代理的观众老爷们可以撤了。</p><h4 id="1-gradle下载慢解决方案">1. gradle下载慢解决方案</h4><p>常见的解决方案包括：<code>使用gradle离线下载</code>或<code>通过gradle国内镜像源加速</code></p><p>个人觉得，<code>gradle离线下载</code>相对麻烦，不展开讲解。感兴趣的同学可自行百度gradle离线下载</p><p>对比<code>gradle离线下载</code>，<code>通过gradle国内镜像源</code>相对方便些，国内知名的gradle镜像源，包含阿里云和腾讯云</p><p>阿里云gradle镜像源：<a href="https://mirrors.aliyun.com/gradle">https://mirrors.aliyun.com/gradle</a><br>腾讯云gradle镜像源：<a href="https://mirrors.cloud.tencent.com/gradle/">https://mirrors.cloud.tencent.com/gradle/</a><br>可惜的是，阿里云gradle镜像源截至2019年就不再更新，gradle版本也停留在了gradle-5.6.2，若你使用的是gradle-5.6.2以上版本，更推荐你使用腾讯云gradle镜像源，使用方式如下：</p><p>替换<code>https\://services.gradle.org/distributions</code>为<code>https\://mirrors.cloud.tencent.com/gradle</code></p><figure class="highlight properties"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">distributionBase</span>=<span class="string">GRADLE_USER_HOME</span></span><br><span class="line"><span class="attr">distributionPath</span>=<span class="string">wrapper/dists</span></span><br><span class="line"><span class="attr">distributionUrl</span>=<span class="string">https\://mirrors.cloud.tencent.com/gradle/gradle-8.2-bin.zip</span></span><br><span class="line"><span class="attr">zipStoreBase</span>=<span class="string">GRADLE_USER_HOME</span></span><br><span class="line"><span class="attr">zipStorePath</span>=<span class="string">wrapper/dists</span></span><br></pre></td></tr></table></figure><h4 id="2-gradle依赖下载慢解决方案">2. gradle依赖下载慢解决方案</h4><p>为加速gradle依赖下载，我们可以通过国内镜像源加速，这里强烈安利 <a href="https://developer.aliyun.com/mvn/guide">阿里云镜像源</a></p><table><thead><tr><th style="text-align:center">源库</th><th style="text-align:center">阿里云的镜像地址</th></tr></thead><tbody><tr><td style="text-align:center">google()</td><td style="text-align:center"><a href="https://maven.aliyun.com/repository/google">https://maven.aliyun.com/repository/google</a></td></tr><tr><td style="text-align:center">mavenCentral()</td><td style="text-align:center"><a href="https://maven.aliyun.com/repository/central">https://maven.aliyun.com/repository/central</a></td></tr><tr><td style="text-align:center">gradlePluginPortal()</td><td style="text-align:center"><a href="https://maven.aliyun.com/repository/gradle-plugin">https://maven.aliyun.com/repository/gradle-plugin</a></td></tr></tbody></table><blockquote><p>提示：上面仅列出我们使用到的镜像源，全量镜像源请见附录1：阿里云全量镜像源</p></blockquote><p>使用方式如下：</p><p>修改<code>settings.gradle.kts</code>，将对应阿里云镜像仓库添加到<code>google()</code>和<code>mavenCentral()</code>上方，优先从国内源下载，如果没有再去原网站下。</p><figure class="highlight routeros"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line">pluginManagement &#123;</span><br><span class="line">    repositories &#123;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://www.jitpack.io&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/releases&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/google&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/central&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/gradle-plugin&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/public&quot;</span>)&#125;</span><br><span class="line">        google()</span><br><span class="line">        mavenCentral()</span><br><span class="line">        gradlePluginPortal()</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line">dependencyResolutionManagement &#123;</span><br><span class="line">    repositoriesMode.<span class="built_in">set</span>(RepositoriesMode.FAIL_ON_PROJECT_REPOS)</span><br><span class="line">    repositories &#123;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://www.jitpack.io&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/releases&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/google&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/central&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/gradle-plugin&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/public&quot;</span>)&#125;</span><br><span class="line">        google()</span><br><span class="line">        mavenCentral()</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">rootProject.name = <span class="string">&quot;My Application&quot;</span></span><br><span class="line">include(<span class="string">&quot;:app&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><blockquote><p>建议：请不要随意改变仓库位置。各个仓库的列出顺序决定了 Gradle 在这些仓库中搜索各个项目依赖项的顺序。例如，如果从仓库 A 和 B 均可获得某个依赖项，而您先列出了仓库 A，则 Gradle 会从仓库 A 下载该依赖项。</p><p>提示：若你使用的groovy，非kotlin，请转附录2：gradle依赖下载加速-groovy版</p></blockquote><h2 id="四、总结（省流版）">四、总结（省流版）</h2><h4 id="1-gradle下载慢解决方案-2">1. gradle下载慢解决方案</h4><p>替换<code>https\://services.gradle.org/distributions</code>为<code>https\://mirrors.cloud.tencent.com/gradle</code></p><figure class="highlight properties"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">distributionBase</span>=<span class="string">GRADLE_USER_HOME</span></span><br><span class="line"><span class="attr">distributionPath</span>=<span class="string">wrapper/dists</span></span><br><span class="line"><span class="attr">distributionUrl</span>=<span class="string">https\://mirrors.cloud.tencent.com/gradle/gradle-8.2-bin.zip</span></span><br><span class="line"><span class="attr">zipStoreBase</span>=<span class="string">GRADLE_USER_HOME</span></span><br><span class="line"><span class="attr">zipStorePath</span>=<span class="string">wrapper/dists</span></span><br></pre></td></tr></table></figure><h4 id="2-gradle依赖下载慢解决方案-2">2. gradle依赖下载慢解决方案</h4><p>修改<code>settings.gradle.kts</code>，将对应阿里云镜像仓库添加到<code>google()</code>和<code>mavenCentral()</code>上方，优先从国内源下载，如果没有再去原网站下。</p><figure class="highlight routeros"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line">pluginManagement &#123;</span><br><span class="line">    repositories &#123;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://www.jitpack.io&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/releases&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/google&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/central&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/gradle-plugin&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/public&quot;</span>)&#125;</span><br><span class="line">        google()</span><br><span class="line">        mavenCentral()</span><br><span class="line">        gradlePluginPortal()</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line">dependencyResolutionManagement &#123;</span><br><span class="line">    repositoriesMode.<span class="built_in">set</span>(RepositoriesMode.FAIL_ON_PROJECT_REPOS)</span><br><span class="line">    repositories &#123;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://www.jitpack.io&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/releases&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/google&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/central&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/gradle-plugin&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/public&quot;</span>)&#125;</span><br><span class="line">        google()</span><br><span class="line">        mavenCentral()</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">rootProject.name = <span class="string">&quot;My Application&quot;</span></span><br><span class="line">include(<span class="string">&quot;:app&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><blockquote><p>建议：请不要随意改变仓库位置。各个仓库的列出顺序决定了 Gradle 在这些仓库中搜索各个项目依赖项的顺序。例如，如果从仓库 A 和 B 均可获得某个依赖项，而您先列出了仓库 A，则 Gradle 会从仓库 A 下载该依赖项。</p><p>提示：若你使用的groovy，非kotlin，请转附录2：gradle依赖下载加速-groovy版</p></blockquote><h2 id="附录">附录</h2><h3 id="附录1：阿里云全量镜像源">附录1：阿里云全量镜像源</h3><p>阿里云常见镜像库：<a href="https://developer.aliyun.com/mvn/guide">https://developer.aliyun.com/mvn/guide</a></p><table><thead><tr><th style="text-align:center">仓库名称</th><th style="text-align:center">阿里云仓库地址</th><th style="text-align:center">阿里云仓库地址(老版)</th><th style="text-align:center">源地址</th></tr></thead><tbody><tr><td style="text-align:center">central</td><td style="text-align:center"><a href="https://maven.aliyun.com/repository/central">https://maven.aliyun.com/repository/central</a></td><td style="text-align:center"><a href="https://maven.aliyun.com/nexus/content/repositories/central">https://maven.aliyun.com/nexus/content/repositories/central</a></td><td style="text-align:center"><a href="https://repo1.maven.org/maven2/">https://repo1.maven.org/maven2/</a></td></tr><tr><td style="text-align:center">jcenter</td><td style="text-align:center"><a href="https://maven.aliyun.com/repository/public">https://maven.aliyun.com/repository/public</a></td><td style="text-align:center"><a href="https://maven.aliyun.com/nexus/content/repositories/jcenter">https://maven.aliyun.com/nexus/content/repositories/jcenter</a></td><td style="text-align:center"><a href="http://jcenter.bintray.com/">http://jcenter.bintray.com/</a></td></tr><tr><td style="text-align:center">public</td><td style="text-align:center"><a href="https://maven.aliyun.com/repository/public">https://maven.aliyun.com/repository/public</a></td><td style="text-align:center"><a href="https://maven.aliyun.com/nexus/content/groups/public">https://maven.aliyun.com/nexus/content/groups/public</a></td><td style="text-align:center">central仓和jcenter仓的聚合仓</td></tr><tr><td style="text-align:center">google</td><td style="text-align:center"><a href="https://maven.aliyun.com/repository/google">https://maven.aliyun.com/repository/google</a></td><td style="text-align:center"><a href="https://maven.aliyun.com/nexus/content/repositories/google">https://maven.aliyun.com/nexus/content/repositories/google</a></td><td style="text-align:center"><a href="https://maven.google.com/">https://maven.google.com/</a></td></tr><tr><td style="text-align:center">gradle-plugin</td><td style="text-align:center"><a href="https://maven.aliyun.com/repository/gradle-plugin">https://maven.aliyun.com/repository/gradle-plugin</a></td><td style="text-align:center"><a href="https://maven.aliyun.com/nexus/content/repositories/gradle-plugin">https://maven.aliyun.com/nexus/content/repositories/gradle-plugin</a></td><td style="text-align:center"><a href="https://plugins.gradle.org/m2/">https://plugins.gradle.org/m2/</a></td></tr><tr><td style="text-align:center">spring</td><td style="text-align:center"><a href="https://maven.aliyun.com/repository/spring">https://maven.aliyun.com/repository/spring</a></td><td style="text-align:center"><a href="https://maven.aliyun.com/nexus/content/repositories/spring">https://maven.aliyun.com/nexus/content/repositories/spring</a></td><td style="text-align:center"><a href="http://repo.spring.io/libs-milestone/">http://repo.spring.io/libs-milestone/</a></td></tr><tr><td style="text-align:center">spring-plugin</td><td style="text-align:center"><a href="https://maven.aliyun.com/repository/spring-plugin">https://maven.aliyun.com/repository/spring-plugin</a></td><td style="text-align:center"><a href="https://maven.aliyun.com/nexus/content/repositories/spring-plugin">https://maven.aliyun.com/nexus/content/repositories/spring-plugin</a></td><td style="text-align:center"><a href="http://repo.spring.io/plugins-release/">http://repo.spring.io/plugins-release/</a></td></tr><tr><td style="text-align:center">grails-core</td><td style="text-align:center"><a href="https://maven.aliyun.com/repository/grails-core">https://maven.aliyun.com/repository/grails-core</a></td><td style="text-align:center"><a href="https://maven.aliyun.com/nexus/content/repositories/grails-core">https://maven.aliyun.com/nexus/content/repositories/grails-core</a></td><td style="text-align:center"><a href="https://repo.grails.org/grails/core">https://repo.grails.org/grails/core</a></td></tr><tr><td style="text-align:center">apache snapshots</td><td style="text-align:center"><a href="https://maven.aliyun.com/repository/apache-snapshots">https://maven.aliyun.com/repository/apache-snapshots</a></td><td style="text-align:center"><a href="https://maven.aliyun.com/nexus/content/repositories/apache-snapshots">https://maven.aliyun.com/nexus/content/repositories/apache-snapshots</a></td><td style="text-align:center"><a href="https://repository.apache.org/snapshots/">https://repository.apache.org/snapshots/</a></td></tr></tbody></table><blockquote><p>提示：由于阿里云官网更新，大家查到的数据可能比上面少。大部分库未在<a href="https://developer.aliyun.com/mvn/guide">常见镜像库</a>中展示，如google()库，全量仓库请通过https://developer.aliyun.com/mvn/view查看</p></blockquote><h3 id="附录2：gradle依赖下载加速-groovy版">附录2：gradle依赖下载加速-groovy版</h3><p>修改<code>settings.gradle</code>，将对应阿里云镜像仓库添加到<code>google()</code>和<code>mavenCentral()</code>上方，优先从国内源下载，如果没有再去原网站下。</p><figure class="highlight routeros"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">pluginManagement &#123;</span><br><span class="line">    repositories &#123;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://www.jitpack.io&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/releases&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/google&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/central&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/gradle-plugin&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/public&quot;</span>)&#125;</span><br><span class="line">        google()</span><br><span class="line">        mavenCentral()</span><br><span class="line">        gradlePluginPortal()</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line">dependencyResolutionManagement &#123;</span><br><span class="line">    repositoriesMode.<span class="built_in">set</span>(RepositoriesMode.FAIL_ON_PROJECT_REPOS)</span><br><span class="line">    repositories &#123;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://www.jitpack.io&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/releases&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/google&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/central&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/gradle-plugin&quot;</span>)&#125;</span><br><span class="line">        maven &#123; <span class="attribute">url</span>=uri (<span class="string">&quot;https://maven.aliyun.com/repository/public&quot;</span>)&#125;</span><br><span class="line">        google()</span><br><span class="line">        mavenCentral()</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">rootProject.name = <span class="string">&quot;My Application&quot;</span></span><br><span class="line">include(<span class="string">&quot;:app&quot;</span>)</span><br></pre></td></tr></table></figure><blockquote><p>建议：请不要随意改变仓库位置。各个仓库的列出顺序决定了 Gradle 在这些仓库中搜索各个项目依赖项的顺序。例如，如果从仓库 A 和 B 均可获得某个依赖项，而您先列出了仓库 A，则 Gradle 会从仓库 A 下载该依赖项。</p></blockquote><h2 id="参考文档">参考文档</h2><p><a href="https://developer.android.google.cn/build/dependencies?hl=zh-cn#remote-repositories">添加 build 依赖项 | Android Studio | Android Developers (google.cn)</a></p><p><a href="https://developer.aliyun.com/mvn/guide">阿里云仓库服务 (aliyun.com)</a></p><p><a href="https://developer.aliyun.com/mirror/">阿里巴巴开源镜像站</a></p><p><a href="https://juejin.cn/post/7321912587731075111">Android Studio 配置国内镜像源、HTTP代理</a></p>]]></content>
    
    
    <summary type="html">Android Studio项目gradle下载慢问题</summary>
    
    
    
    <category term="计算机基础" scheme="https://www.777nx.cn/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/"/>
    
    
    <category term="Android Studio" scheme="https://www.777nx.cn/tags/Android-Studio/"/>
    
    <category term="gradle" scheme="https://www.777nx.cn/tags/gradle/"/>
    
  </entry>
  
  <entry>
    <title>MobaXterm下载安装</title>
    <link href="https://www.777nx.cn/posts/567ecee8.html"/>
    <id>https://www.777nx.cn/posts/567ecee8.html</id>
    <published>2025-02-17T18:15:33.000Z</published>
    <updated>2026-10-15T06:19:20.359Z</updated>
    
    <content type="html"><![CDATA[<h2 id="SSH客户端">SSH客户端</h2><p>在VMware界面中操作虚拟机非常不友好，所以一般推荐使用专门的SSH客户端。市面上常见的有：</p><ul><li>Xshell：个人免费，商业收费，之前爆出过有隐藏后门。不推荐</li><li>Finshell：基础功能免费，高级功能收费，基于Java，内存占用较高（在1个G左右）。不推荐</li><li>MobarXterm：基础功能免费、高级功能收费。开源、功能强大、内存占用低（只有10m左右），但是界面不太漂亮。推荐使用</li></ul><h3 id="安装MobarXterm">安装MobarXterm</h3><p>这里我们会选择内存占用较低的MobarXterm作为SSH客户端，其官网地址：</p><div class="tag link"><a class="link-card" title="" href=""><div class="left"><img src="/assets/coffee.png"/></div><div class="right"><p class="text"></p><p class="url"></p></div></a></div><p>安装完成后界面如图所示：</p><p><img src="https://img.777nx.cn/test/c1c7b7d7-8806-4d76-ab67-2275e1d92ebd.png" alt="c1c7b7d7-8806-4d76-ab67-2275e1d92ebd"></p><p>点击session按钮，进入会话管理：</p><p><img src="https://img.777nx.cn/test/acbc78aa-93b6-4fc1-9c70-4f797ac77cf4.png" alt="acbc78aa-93b6-4fc1-9c70-4f797ac77cf4"></p><p>在弹出的session管理页面中，按照下图填写信息并保存：</p><p><img src="https://img.777nx.cn/test/b8f46921-c274-4642-b3dd-75d5ea35a60b.png" alt="b8f46921-c274-4642-b3dd-75d5ea35a60b"></p><p>点击OK后会提示你是第一次连接，询问你是信任连接的服务：</p><p><img src="https://img.777nx.cn/test/33f14f8d-a25c-4dae-a542-d244b1f373cb.png" alt="33f14f8d-a25c-4dae-a542-d244b1f373cb"></p><p>选择accept之后，会询问你是否要记住密码，选择yes：</p><p><img src="https://img.777nx.cn/test/2cca6380-1764-4136-976c-178e3c67c88f.png" alt="2cca6380-1764-4136-976c-178e3c67c88f"></p><p>紧接着需要你设置一个MobarXterm的全局密码用于做密码管理，建议设置一个与虚拟机密码不同的：</p><p>输入密码：</p><p><img src="https://img.777nx.cn/test/30497b08-3bc7-48d9-8d7c-2b63fe8c8d90.png" alt="30497b08-3bc7-48d9-8d7c-2b63fe8c8d90"></p><p>输入成功后，就会连接成功，并进入操作界面了：</p><p><img src="https://img.777nx.cn/test/107e5669-d8e4-4f99-86b1-9eb938a44a1d.png" alt="107e5669-d8e4-4f99-86b1-9eb938a44a1d"></p><p>这里需要做一些基础的配置：</p><p><img src="https://img.777nx.cn/test/06dddddf-a3ad-455c-a995-43e6d9e92798.png" alt="06dddddf-a3ad-455c-a995-43e6d9e92798"></p><h3 id="配置默认编辑器">配置默认编辑器</h3><p>首先建议设置一下默认编辑器，这样我们通过MobarXterm的FTP工具打开文件时会以指定的编辑器打开，方便修改。我这里配置的是vscode：</p><p><img src="https://img.777nx.cn/test/421a8e2e-4938-4083-b6bb-ebc19597e4ce.png" alt="421a8e2e-4938-4083-b6bb-ebc19597e4ce"></p><h3 id="配置右键粘贴">配置右键粘贴</h3><p>复制粘贴是很常用的配置，MobarXterm默认左键选中即<strong>复制</strong>，但是需要配置右键点击为<strong>粘贴：</strong></p><p><img src="https://img.777nx.cn/test/b5357926-4e8e-401b-b742-8106ace6e4a1.png" alt="b5357926-4e8e-401b-b742-8106ace6e4a1"></p><p>这样，复制和粘贴可以全部通过鼠标操作，无需按键。</p><h3 id="SSH配置">SSH配置</h3><p>接下来还有几个ssh配置：</p><p><img src="https://img.777nx.cn/test/65f89b0b-6cb9-4944-be8b-5d90b5d848f9.png" alt="65f89b0b-6cb9-4944-be8b-5d90b5d848f9"></p><p>分别是：</p><ul><li>默认的登录用户</li><li>ssh保持连接</li><li>取消连接成功后的欢迎banner</li></ul><h3 id="关闭X-Server服务">关闭X-Server服务</h3><p>大多数情况下，我们没有x-server的需求，因此可以选择不要自启动：</p><p><img src="https://img.777nx.cn/test/6c1e6dcb-186d-484e-8cae-9d0eae52d004.png" alt="6c1e6dcb-186d-484e-8cae-9d0eae52d004"></p>]]></content>
    
    
    <summary type="html">MobaXterm详细使用教程</summary>
    
    
    
    <category term="Java" scheme="https://www.777nx.cn/categories/Java/"/>
    
    
    <category term="MobaXterm" scheme="https://www.777nx.cn/tags/MobaXterm/"/>
    
  </entry>
  
  <entry>
    <title>CSS高级</title>
    <link href="https://www.777nx.cn/posts/7cffb7b9.html"/>
    <id>https://www.777nx.cn/posts/7cffb7b9.html</id>
    <published>2024-12-18T02:32:54.000Z</published>
    <updated>2026-10-15T06:19:20.360Z</updated>
    
    <content type="html"><![CDATA[<h1 id="CSS高级">CSS高级</h1><blockquote><p>目标：掌握定位的作用及特点；掌握 CSS 高级技巧</p></blockquote><h2 id="01-定位">01-定位</h2><p>作用：灵活的改变盒子在网页中的位置</p><p>实现：</p><p>1.定位模式：position</p><p>2.边偏移：设置盒子的位置</p><ul><li>left</li><li>right</li><li>top</li><li>bottom</li></ul><h3 id="相对定位">相对定位</h3><p><strong>position: relative</strong></p><p>特点：</p><ul><li>不脱标，占用自己原来位置</li><li>显示模式特点保持不变</li><li>设置边偏移则相对自己原来位置移动</li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">position</span>: relative;</span><br><span class="line">  <span class="attribute">top</span>: <span class="number">100px</span>;</span><br><span class="line">  <span class="attribute">left</span>: <span class="number">200px</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="绝对定位">绝对定位</h3><p><strong>position: absolute</strong></p><p>使用场景：子级绝对定位，父级相对定位（<strong>子绝父相</strong>）</p><p>特点：</p><ul><li>脱标，不占位</li><li>显示模式具备行内块特点</li><li>设置边偏移则相对最近的已经定位的祖先元素改变位置</li><li>如果祖先元素都未定位，则相对浏览器可视区改变位置</li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.father</span> &#123;</span><br><span class="line">  <span class="attribute">position</span>: relative;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.father</span> <span class="selector-tag">span</span> &#123;</span><br><span class="line">  <span class="attribute">position</span>: absolute;</span><br><span class="line">  <span class="attribute">top</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">right</span>: <span class="number">0</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="定位居中">定位居中</h3><p><img src="https://img.777nx.cn/test/1680340142857.png" alt="1680340142857"></p><p>实现步骤：</p><ol><li>绝对定位</li><li>水平、垂直边偏移为 50%</li><li>子级向左、上移动自身尺寸的一半</li></ol><ul><li>左、上的外边距为 –尺寸的一半</li><li>transform: translate(-50%, -50%)</li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">img</span> &#123;</span><br><span class="line">  <span class="attribute">position</span>: absolute;</span><br><span class="line">  <span class="attribute">left</span>: <span class="number">50%</span>;</span><br><span class="line">  <span class="attribute">top</span>: <span class="number">50%</span>;</span><br><span class="line"></span><br><span class="line">  <span class="comment">/* margin-left: -265px;</span></span><br><span class="line"><span class="comment">  margin-top: -127px; */</span></span><br><span class="line"></span><br><span class="line">  <span class="comment">/* 方便： 50% 就是自己宽高的一半 */</span></span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">translate</span>(-<span class="number">50%</span>, -<span class="number">50%</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="固定定位">固定定位</h3><p><strong>position: fixed</strong></p><p>场景：元素的位置在网页滚动时不会改变</p><p>特点：</p><ul><li>脱标，不占位</li><li>显示模式具备行内块特点</li><li>设置边偏移相对浏览器窗口改变位置</li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">position</span>: fixed;</span><br><span class="line">  <span class="attribute">top</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">right</span>: <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line">  <span class="attribute">width</span>: <span class="number">500px</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="堆叠层级z-index">堆叠层级z-index</h3><p><img src="https://img.777nx.cn/test/1680340281795.png" alt="1680340281795"></p><p>默认效果：按照标签书写顺序，后来者居上</p><p>作用：设置定位元素的层级顺序，改变定位元素的显示顺序</p><p>属性名：<strong>z-index</strong></p><p>属性值：<strong>整数数字</strong>（默认值为0，取值越大，层级越高）</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.box1</span> &#123;</span><br><span class="line">  <span class="attribute">background-color</span>: pink;</span><br><span class="line">  <span class="comment">/* 取值是整数，默认是0，取值越大显示顺序越靠上 */</span></span><br><span class="line">  <span class="attribute">z-index</span>: <span class="number">1</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.box2</span> &#123;</span><br><span class="line">  <span class="attribute">background-color</span>: skyblue;</span><br><span class="line">  <span class="attribute">left</span>: <span class="number">100px</span>;</span><br><span class="line">  <span class="attribute">top</span>: <span class="number">100px</span>;</span><br><span class="line"></span><br><span class="line">  <span class="attribute">z-index</span>: <span class="number">2</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="02-高级技巧">02-高级技巧</h2><h3 id="CSS精灵">CSS精灵</h3><p>CSS 精灵，也叫 <strong>CSS Sprites</strong>，是一种网页<strong>图片应用处理方式</strong>。把网页中<strong>一些背景图片</strong>整合到<strong>一张图片</strong>文件中，再<strong>background-position</strong> 精确的定位出背景图片的位置。</p><p><img src="https://img.777nx.cn/test/1680340401800.png" alt="1680340401800"></p><p>优点：减少服务器被请求次数，减轻服务器的压力，提高页面加载速度</p><p><img src="https://img.777nx.cn/test/1680340411600.png" alt="1680340411600"></p><p>实现步骤：</p><ol><li>创建盒子，<strong>盒子尺寸</strong>与<strong>小图</strong>尺寸<strong>相同</strong></li><li>设置盒子<strong>背景图</strong>为精灵图</li><li>添加 <strong>background-position</strong> 属性，改变<strong>背景图位置</strong></li></ol><p>​       3.1 使用 PxCook 测量小图片<strong>左上角坐标</strong></p><p>​       3.2 取<strong>负数</strong>坐标为 background-position 属性值（向左上移动图片位置）</p><h3 id="案例-京东服务">案例-京东服务</h3><p><img src="https://img.777nx.cn/test/1680340481861.png" alt="1680340481861"></p><h4 id="HTML结构">HTML结构</h4><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;service&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">ul</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">h5</span>&gt;</span><span class="tag">&lt;/<span class="name">h5</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">p</span>&gt;</span>品类齐全，轻松购物<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">h5</span>&gt;</span><span class="tag">&lt;/<span class="name">h5</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">p</span>&gt;</span>多仓直发，极速配送<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">h5</span>&gt;</span><span class="tag">&lt;/<span class="name">h5</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">p</span>&gt;</span>正品行货，精致服务<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">h5</span>&gt;</span><span class="tag">&lt;/<span class="name">h5</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">p</span>&gt;</span>天天低价，畅选无忧<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">ul</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h4 id="CSS样式">CSS样式</h4><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  * &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">padding</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">box-sizing</span>: border-box;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">li</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">list-style</span>: none;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.service</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin</span>: <span class="number">100px</span> auto;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">1190px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">42px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="comment">/* background-color: pink; */</span></span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.service</span> <span class="selector-tag">ul</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">display</span>: flex;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.service</span> <span class="selector-tag">li</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">display</span>: flex;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">padding-left</span>: <span class="number">40px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">297px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">42px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="comment">/* background-color: skyblue; */</span></span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.service</span> <span class="selector-tag">li</span> <span class="selector-tag">h5</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin-right</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">36px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">42px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="comment">/* background-color: pink; */</span></span></span><br><span class="line"><span class="language-css">    <span class="attribute">background</span>: <span class="built_in">url</span>(<span class="string">./images/sprite.png</span>) <span class="number">0</span> -<span class="number">192px</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.service</span> <span class="selector-tag">li</span><span class="selector-pseudo">:nth-child</span>(<span class="number">2</span>) <span class="selector-tag">h5</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-position</span>: -<span class="number">41px</span> -<span class="number">192px</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.service</span> <span class="selector-tag">li</span><span class="selector-pseudo">:nth-child</span>(<span class="number">3</span>) <span class="selector-tag">h5</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-position</span>: -<span class="number">82px</span> -<span class="number">192px</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.service</span> <span class="selector-tag">li</span><span class="selector-pseudo">:nth-child</span>(<span class="number">4</span>) <span class="selector-tag">h5</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-position</span>: -<span class="number">123px</span> -<span class="number">192px</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.service</span> <span class="selector-tag">li</span> <span class="selector-tag">p</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">18px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="number">#444</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-weight</span>: <span class="number">700</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">line-height</span>: <span class="number">42px</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="字体图标">字体图标</h3><p><img src="https://img.777nx.cn/test/1680340562425.png" alt="1680340562425"></p><p>字体图标：<strong>展示的是图标，本质是字体</strong></p><p>作用：在网页中添加<strong>简单的、颜色单一</strong>的小图标</p><p>优点</p><ul><li><strong>灵活性</strong>：灵活地修改样式，例如：尺寸、颜色等</li><li><strong>轻量级</strong>：体积小、渲染快、降低服务器请求次数</li><li><strong>兼容性</strong>：几乎兼容所有主流浏览器</li><li><strong>使用方便</strong>：先下载再使用</li></ul><h4 id="下载字体">下载字体</h4><p>iconfont 图标库：<a href="https://www.iconfont.cn/">https://www.iconfont.cn/</a></p><p>登录 → 素材库 → 官方图标库 → 进入图标库 → 选图标，加入购物车 → 购物车，添加至项目，确定 → 下载至本地</p><p><img src="https://img.777nx.cn/test/1680340665988.png" alt="1680340665988"></p><h4 id="使用字体">使用字体</h4><ol><li>引入字体样式表（iconfont.css）</li></ol><p><img src="https://img.777nx.cn/test/1680340697011.png" alt="1680340697011"></p><ol start="2"><li>标签使用字体图标类名<ul><li>iconfont：字体图标基本样式（字体名，字体大小等等）</li><li>icon-xxx：图标对应的类名</li></ul></li></ol><p><img src="https://img.777nx.cn/test/1680340718890.png" alt="1680340718890"></p><h4 id="上传矢量图">上传矢量图</h4><p>作用：项目特有的图标上传到 iconfont 图标库，生成字体</p><p><img src="https://img.777nx.cn/test/1680340775611.png" alt="1680340775611"></p><p>上传步骤：上传 → 上传图标 → 选择 svg 矢量图，打开 → 提交 → 系统审核</p><h2 id="03-CSS修饰属性">03-CSS修饰属性</h2><h3 id="垂直对齐方式">垂直对齐方式</h3><p><img src="https://img.777nx.cn/test/1680340838945.png" alt="1680340838945"></p><p>属性名：vertical-align</p><p><img src="https://img.777nx.cn/test/1680340829633.png" alt="1680340829633"></p><h3 id="过渡">过渡</h3><p>作用：可以为一个元素在不同状态之间切换的时候添加<strong>过渡效果</strong></p><p>属性名：<strong>transition（复合属性）</strong></p><p>属性值：<strong>过渡的属性  花费时间 (s)</strong></p><p>提示：</p><ul><li>过渡的属性可以是具体的 CSS 属性</li><li>也可以为 all（两个状态属性值不同的所有属性，都产生过渡效果）</li><li>transition 设置给元素本身</li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">img</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">transition</span>: all <span class="number">1s</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-tag">img</span><span class="selector-pseudo">:hover</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">500px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">500px</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="透明度opacity">透明度opacity</h3><p>作用：设置<strong>整个元素的透明度</strong>（包含背景和内容）</p><p>属性名：opacity</p><p>属性值：0 – 1</p><ul><li>0：完全透明（元素不可见）</li><li>1：不透明</li><li>0-1之间小数：半透明</li></ul><h3 id="光标类型cursor">光标类型cursor</h3><p>作用：鼠标悬停在元素上时指针显示样式</p><p>属性名：cursor</p><p><img src="https://img.777nx.cn/test/1680342344485.png" alt="1680342344485"></p><h2 id="04-综合案例-轮播图">04-综合案例-轮播图</h2><p><img src="https://img.777nx.cn/test/1680342362855.png" alt="1680342362855"></p><h3 id="图片效果">图片效果</h3><h4 id="HTML结构-2">HTML结构</h4><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;banner&quot;</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 图: ul &gt; li --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">ul</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;./images/banner1.jpg&quot;</span> <span class="attr">alt</span>=<span class="string">&quot;&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;./images/banner2.jpg&quot;</span> <span class="attr">alt</span>=<span class="string">&quot;&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;./images/banner3.jpg&quot;</span> <span class="attr">alt</span>=<span class="string">&quot;&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">ul</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h4 id="CSS样式-2">CSS样式</h4><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">* &#123;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">padding</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">box-sizing</span>: border-box;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-tag">li</span> &#123;</span><br><span class="line">  <span class="attribute">list-style</span>: none;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.banner</span> &#123;</span><br><span class="line">  <span class="attribute">position</span>: relative;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">100px</span> auto;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">564px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">315px</span>;</span><br><span class="line">  <span class="comment">/* background-color: pink; */</span></span><br><span class="line">  <span class="attribute">overflow</span>: hidden;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 图片 */</span></span><br><span class="line"><span class="selector-class">.banner</span> <span class="selector-tag">img</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">564px</span>;</span><br><span class="line">  <span class="attribute">border-radius</span>: <span class="number">12px</span>;</span><br><span class="line">  <span class="attribute">vertical-align</span>: middle;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.banner</span> <span class="selector-tag">ul</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: flex;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="箭头">箭头</h3><h4 id="HTML结构-3">HTML结构</h4><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">&lt;!-- 箭头 --&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- 上一张 prev --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span> <span class="attr">class</span>=<span class="string">&quot;prev&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">i</span> <span class="attr">class</span>=<span class="string">&quot;iconfont icon-zuoce&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">i</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- 下一张 next --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span> <span class="attr">class</span>=<span class="string">&quot;next&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">i</span> <span class="attr">class</span>=<span class="string">&quot;iconfont icon-youce&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">i</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br></pre></td></tr></table></figure><h4 id="CSS样式-3">CSS样式</h4><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/* 箭头 */</span></span><br><span class="line"><span class="selector-class">.banner</span> <span class="selector-class">.prev</span>,</span><br><span class="line"><span class="selector-class">.banner</span> <span class="selector-class">.next</span> &#123;</span><br><span class="line">  <span class="comment">/* 隐藏 */</span></span><br><span class="line">  <span class="attribute">display</span>: none;</span><br><span class="line">  <span class="attribute">position</span>: absolute;</span><br><span class="line">  <span class="attribute">top</span>: <span class="number">50%</span>;</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">translateY</span>(-<span class="number">50%</span>);</span><br><span class="line"></span><br><span class="line">  <span class="attribute">width</span>: <span class="number">20px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">30px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: <span class="built_in">rgba</span>(<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>, <span class="number">0.3</span>);</span><br><span class="line"></span><br><span class="line">  <span class="attribute">text-decoration</span>: none;</span><br><span class="line">  <span class="attribute">color</span>: <span class="number">#fff</span>;</span><br><span class="line">  <span class="attribute">line-height</span>: <span class="number">30px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 鼠标滑到banner区域，箭头要显示 display:block */</span></span><br><span class="line"><span class="selector-class">.banner</span><span class="selector-pseudo">:hover</span> <span class="selector-class">.prev</span>,</span><br><span class="line"><span class="selector-class">.banner</span><span class="selector-pseudo">:hover</span> <span class="selector-class">.next</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: block;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.banner</span> <span class="selector-class">.prev</span> &#123;</span><br><span class="line">  <span class="attribute">left</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">border-radius</span>: <span class="number">0</span> <span class="number">15px</span> <span class="number">15px</span> <span class="number">0</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.banner</span> <span class="selector-class">.next</span> &#123;</span><br><span class="line">  <span class="attribute">right</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">border-radius</span>: <span class="number">15px</span> <span class="number">0</span> <span class="number">0</span> <span class="number">15px</span>;</span><br><span class="line">  <span class="attribute">text-align</span>: center;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="圆点">圆点</h3><h4 id="HTML结构-4">HTML结构</h4><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">&lt;!-- 圆点 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">ol</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">li</span> <span class="attr">class</span>=<span class="string">&quot;active&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">ol</span>&gt;</span></span><br></pre></td></tr></table></figure><h4 id="CSS样式-4">CSS样式</h4><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/* 圆点 */</span></span><br><span class="line"><span class="selector-class">.banner</span> <span class="selector-tag">ol</span> &#123;</span><br><span class="line">  <span class="attribute">position</span>: absolute;</span><br><span class="line">  <span class="attribute">bottom</span>: <span class="number">20px</span>;</span><br><span class="line">  <span class="attribute">left</span>: <span class="number">50%</span>;</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">translateX</span>(-<span class="number">50%</span>);</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">13px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: <span class="built_in">rgba</span>(<span class="number">255</span>,<span class="number">255</span>,<span class="number">255</span>,<span class="number">0.3</span>);</span><br><span class="line"></span><br><span class="line">  <span class="attribute">display</span>: flex;</span><br><span class="line"></span><br><span class="line">  <span class="attribute">border-radius</span>: <span class="number">10px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.banner</span> <span class="selector-tag">ol</span> <span class="selector-tag">li</span> &#123;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">3px</span>;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">8px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">8px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: <span class="number">#fff</span>;</span><br><span class="line">  <span class="attribute">border-radius</span>: <span class="number">50%</span>;</span><br><span class="line">  <span class="attribute">cursor</span>: pointer;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 橙色的li */</span></span><br><span class="line"><span class="selector-class">.banner</span> <span class="selector-tag">ol</span> <span class="selector-class">.active</span> &#123;</span><br><span class="line">  <span class="attribute">background-color</span>: <span class="number">#ff5000</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">CSS高级</summary>
    
    
    
    <category term="前端" scheme="https://www.777nx.cn/categories/%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="CSS" scheme="https://www.777nx.cn/tags/CSS/"/>
    
  </entry>
  
  <entry>
    <title>Flex布局</title>
    <link href="https://www.777nx.cn/posts/ab688311.html"/>
    <id>https://www.777nx.cn/posts/ab688311.html</id>
    <published>2024-12-18T02:30:40.000Z</published>
    <updated>2026-10-15T06:19:20.360Z</updated>
    
    <content type="html"><![CDATA[<h1 id="Flex布局">Flex布局</h1><blockquote><p>目标：熟练使用 Flex 完成结构化布局</p></blockquote><h2 id="01-标准流">01-标准流</h2><p>标准流也叫文档流，指的是标签在页面中<strong>默认的排布规则</strong>，例如：块元素独占一行，行内元素可以一行显示多个。</p><p><img src="https://img.777nx.cn/test/1680334840709.png" alt="1680334840709"></p><h2 id="02-浮动">02-浮动</h2><h3 id="基本使用">基本使用</h3><p>作用：让块元素水平排列。</p><p>属性名：<strong>float</strong></p><p>属性值</p><ul><li><strong>left</strong>：左对齐</li><li><strong>right</strong>：右对齐</li></ul><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="comment">/* 特点：顶对齐；具备行内块显示模式特点；浮动的盒子会脱标 */</span></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.one</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">100px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">100px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: brown;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">    <span class="attribute">float</span>: left;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.two</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">200px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">200px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: orange;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">    <span class="comment">/* float: left; */</span></span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">    <span class="attribute">float</span>: right;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;one&quot;</span>&gt;</span>one<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;two&quot;</span>&gt;</span>two<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><p>特点：</p><ul><li>浮动后的盒子<strong>顶对齐</strong></li><li>浮动后的盒子具备<strong>行内块</strong>特点</li><li>浮动后的盒子<strong>脱标</strong>，<strong>不占用标准流的位置</strong></li></ul><h3 id="产品区域布局">产品区域布局</h3><p><img src="https://img.777nx.cn/test/1680335016853.png" alt="1680335016853"></p><h4 id="HTML标签">HTML标签</h4><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">&lt;!-- 版心：左右，右面：8个产品 → 8个 li --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;product&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;left&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;right&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">ul</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">ul</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h4 id="CSS样式">CSS样式</h4><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  * &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">padding</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">li</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">list-style</span>: none;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.product</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin</span>: <span class="number">50px</span> auto;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">1226px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">628px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: pink;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.left</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">float</span>: left;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">234px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">628px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: skyblue;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.right</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">float</span>: right;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">978px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">628px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: brown;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.right</span> <span class="selector-tag">li</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">float</span>: left;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin-right</span>: <span class="number">14px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin-bottom</span>: <span class="number">14px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">234px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">300px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: orange;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="comment">/* 第四个li和第八个li 去掉右侧的margin */</span></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.right</span> <span class="selector-tag">li</span><span class="selector-pseudo">:nth-child</span>(<span class="number">4</span>n) &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin-right</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="comment">/* 细节：如果父级宽度不够，浮动的盒子会掉下来 */</span></span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="清除浮动">清除浮动</h3><p>场景：浮动元素会脱标，如果<strong>父级没有高度</strong>，<strong>子级无法撑开父级高度</strong>（可能导致页面布局错乱）</p><p>解决方法：<strong>清除浮动</strong>（清除浮动带来的影响）</p><h4 id="场景搭建">场景搭建</h4><p><img src="https://img.777nx.cn/test/1680335081694.png" alt="1680335081694"></p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.top</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin</span>: <span class="number">10px</span> auto;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">1200px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="comment">/* height: 300px; */</span></span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: pink;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.left</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">float</span>: left;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">200px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">300px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: skyblue;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.right</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">float</span>: right;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">950px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">300px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: orange;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.bottom</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">100px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: brown;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;top&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;left&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;right&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;bottom&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h4 id="额外标签法">额外标签法</h4><p>在<strong>父元素内容的最后</strong>添加一个<strong>块级</strong>元素，设置 CSS 属性 <strong>clear: both</strong></p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.clearfix</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">clear</span>: both;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;father&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;left&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;right&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;clearfix&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h4 id="单伪元素法">单伪元素法</h4><ol><li>准备 after 伪元素</li></ol><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.clearfix</span><span class="selector-pseudo">::after</span> &#123;</span><br><span class="line">  <span class="attribute">content</span>: <span class="string">&quot;&quot;</span>;</span><br><span class="line">  <span class="attribute">display</span>: block;</span><br><span class="line">  <span class="attribute">clear</span>: both;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><ol start="2"><li>父级使用 clearfix 类</li></ol><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;father clearfix&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h4 id="双伪元素法">双伪元素法</h4><ol><li>准备 after 和 before 伪元素</li></ol><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/* before 解决外边距塌陷问题 */</span></span><br><span class="line"><span class="comment">/* 双伪元素法 */</span></span><br><span class="line"><span class="selector-class">.clearfix</span><span class="selector-pseudo">::before</span>,</span><br><span class="line"><span class="selector-class">.clearfix</span><span class="selector-pseudo">::after</span> &#123;</span><br><span class="line">  <span class="attribute">content</span>: <span class="string">&quot;&quot;</span>;</span><br><span class="line">  <span class="attribute">display</span>: table;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* after 清除浮动 */</span></span><br><span class="line"><span class="selector-class">.clearfix</span><span class="selector-pseudo">::after</span> &#123;</span><br><span class="line">  <span class="attribute">clear</span>: both;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><ol start="2"><li>父级使用 clearfix 类</li></ol><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;father clearfix&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h4 id="overfow法">overfow法</h4><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.father</span> &#123;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">10px</span> auto;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">1200px</span>;</span><br><span class="line">  <span class="comment">/* height: 300px; */</span></span><br><span class="line">  <span class="attribute">background-color</span>: pink;</span><br><span class="line"></span><br><span class="line">  <span class="attribute">overflow</span>: hidden;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="03-Flex布局">03-Flex布局</h2><p>Flex 布局也叫<strong>弹性布局</strong>，是浏览器<strong>提倡的布局模型</strong>，非常适合<strong>结构化</strong>布局，提供了强大的空间分布和对齐能力。</p><p>Flex 模型不会产生浮动布局中脱标现象，布局网页更简单、更灵活。</p><p><img src="https://img.777nx.cn/test/1680335815005.png" alt="1680335815005"></p><h3 id="Flex组成">Flex组成</h3><p>设置方式：给<strong>父</strong>元素设置 <strong>display: flex</strong>，子元素可以自动挤压或拉伸</p><p>组成部分：</p><ul><li>弹性容器</li><li>弹性盒子</li><li>主轴：默认在<strong>水平</strong>方向</li><li>侧轴 / 交叉轴：默认在<strong>垂直</strong>方向</li></ul><p><img src="https://img.777nx.cn/test/1680335870554.png" alt="1680335870554"></p><h3 id="主轴对齐方式">主轴对齐方式</h3><p>属性名：<strong>justify-content</strong></p><p><img src="https://img.777nx.cn/test/1680335902526.png" alt="1680335902526"></p><h3 id="侧轴对齐方式">侧轴对齐方式</h3><ul><li>align-items：当前弹性容器内<strong>所有</strong>弹性盒子的侧轴对齐方式（给<strong>弹性容器</strong>设置）</li><li>align-self：单独控制<strong>某个弹性盒子</strong>的侧轴对齐方式（给<strong>弹性盒子</strong>设置）</li></ul><p><img src="https://img.777nx.cn/test/1680335957166.png" alt="1680335957166"></p><h3 id="修改主轴方向">修改主轴方向</h3><p><strong>主轴默认在水平方向，侧轴默认在垂直方向</strong></p><p>属性名：<strong>flex-direction</strong></p><p><img src="https://img.777nx.cn/test/1680335988425.png" alt="1680335988425"></p><h3 id="弹性伸缩比">弹性伸缩比</h3><p>作用：控制弹性盒子的主轴方向的尺寸。</p><p>属性名：<strong>flex</strong></p><p>属性值：整数数字，表示占用<strong>父级剩余尺寸的份数</strong>。</p><h3 id="弹性盒子换行">弹性盒子换行</h3><p>弹性盒子可以自动挤压或拉伸，默认情况下，所有弹性盒子都在一行显示。</p><p>属性名：<strong>flex-wrap</strong></p><p>属性值</p><ul><li>wrap：换行</li><li>nowrap：不换行（默认）</li></ul><h3 id="行内对齐方式">行内对齐方式</h3><p>属性名：<strong>align-content</strong></p><p><img src="https://img.777nx.cn/test/1680336183457.png" alt="1680336183457"></p><blockquote><p>注意：该属性对<strong>单行</strong>弹性盒子模型<strong>无效</strong>。</p></blockquote><h2 id="04-综合案例-–-抖音解决方案">04-综合案例 – 抖音解决方案</h2><p><img src="https://img.777nx.cn/test/1680336238340.png" alt="1680336238340"></p><h3 id="整体布局">整体布局</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">* &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">margin</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">padding</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">box-sizing</span>: border-box;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-tag">li</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">list-style</span>: none;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.box</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">margin</span>: <span class="number">50px</span> auto;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">width</span>: <span class="number">1200px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">height</span>: <span class="number">418px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">border</span>: <span class="number">1px</span> solid <span class="number">#ddd</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">border-radius</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;box&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="列表布局">列表布局</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.box</span> <span class="selector-tag">ul</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">display</span>: flex;</span></span><br><span class="line"><span class="language-css">  <span class="comment">/* 弹性盒子换行 */</span></span></span><br><span class="line"><span class="language-css">  <span class="attribute">flex-wrap</span>: wrap;</span></span><br><span class="line"><span class="language-css">  <span class="comment">/* 调整主轴对齐方式 */</span></span></span><br><span class="line"><span class="language-css">  <span class="attribute">justify-content</span>: space-between;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="comment">/* 调整 行对齐方式 */</span></span></span><br><span class="line"><span class="language-css">  <span class="attribute">align-content</span>: space-between;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="attribute">padding</span>: <span class="number">90px</span> <span class="number">40px</span> <span class="number">90px</span> <span class="number">60px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">height</span>: <span class="number">418px</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.box</span> <span class="selector-tag">li</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">display</span>: flex;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">width</span>: <span class="number">500px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">height</span>: <span class="number">88px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="comment">/* background-color: pink; */</span></span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;box&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">ul</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span>1<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span>2<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span>3<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span>4<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">ul</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="内容样式">内容样式</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.box</span> <span class="selector-class">.pic</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">margin-right</span>: <span class="number">15px</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.box</span> <span class="selector-class">.text</span> <span class="selector-tag">h4</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">line-height</span>: <span class="number">40px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">font-size</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">font-weight</span>: <span class="number">400</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">color</span>: <span class="number">#333</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.box</span> <span class="selector-class">.text</span> <span class="selector-tag">p</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">font-size</span>: <span class="number">14px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">color</span>: <span class="number">#666</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">ul</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;pic&quot;</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;./images/1.svg&quot;</span> <span class="attr">alt</span>=<span class="string">&quot;&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;text&quot;</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">h4</span>&gt;</span>一键发布多端<span class="tag">&lt;/<span class="name">h4</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">p</span>&gt;</span>发布视频到抖音短视频、西瓜视频及今日头条<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;pic&quot;</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;./images/2.svg&quot;</span> <span class="attr">alt</span>=<span class="string">&quot;&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;text&quot;</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">h4</span>&gt;</span>管理视频内容<span class="tag">&lt;/<span class="name">h4</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">p</span>&gt;</span>支持修改已发布稿件状态和实时查询视频审核状态<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;pic&quot;</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;./images/3.svg&quot;</span> <span class="attr">alt</span>=<span class="string">&quot;&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;text&quot;</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">h4</span>&gt;</span>发布携带组件<span class="tag">&lt;/<span class="name">h4</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">p</span>&gt;</span>支持分享内容携带小程序、地理位置信息等组件，扩展内容及突出地域性<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;pic&quot;</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;./images/4.svg&quot;</span> <span class="attr">alt</span>=<span class="string">&quot;&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;text&quot;</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">h4</span>&gt;</span>数据评估分析<span class="tag">&lt;/<span class="name">h4</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">p</span>&gt;</span>获取视频在对应产品内的数据表现、获取抖音热点，及时进行表现评估<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">ul</span>&gt;</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">Flex布局</summary>
    
    
    
    <category term="前端" scheme="https://www.777nx.cn/categories/%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="CSS" scheme="https://www.777nx.cn/tags/CSS/"/>
    
  </entry>
  
  <entry>
    <title>盒子模型</title>
    <link href="https://www.777nx.cn/posts/998dffd6.html"/>
    <id>https://www.777nx.cn/posts/998dffd6.html</id>
    <published>2024-12-18T02:27:13.000Z</published>
    <updated>2026-10-15T06:19:20.360Z</updated>
    
    <content type="html"><![CDATA[<h1 id="盒子模型">盒子模型</h1><blockquote><p>目标：掌握盒子模型组成部分，使用盒子模型布局网页区域</p></blockquote><h2 id="01-选择器">01-选择器</h2><h3 id="结构伪类选择器">结构伪类选择器</h3><h3 id="基本使用">基本使用</h3><p>作用：根据元素的<strong>结构关系</strong>查找元素。</p><p><img src="https://img.777nx.cn/test/1680321408957.png" alt="1680321408957"></p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">li</span><span class="selector-pseudo">:first</span>-child &#123;</span><br><span class="line">  <span class="attribute">background-color</span>: green;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="nth-child-公式">:nth-child(公式)</h3><p><img src="https://img.777nx.cn/test/1680321448162.png" alt="1680321448162"></p><blockquote><p>提示：公式中的n取值从 <strong>0</strong> 开始。</p></blockquote><h3 id="伪元素选择器">伪元素选择器</h3><p>作用：创建<strong>虚拟元素</strong>（伪元素），用来<strong>摆放装饰性的内容</strong>。</p><p><img src="https://img.777nx.cn/test/1680321533901.png" alt="1680321533901"></p><p><img src="https://img.777nx.cn/test/1680321544646.png" alt="1680321544646"></p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span><span class="selector-pseudo">::before</span> &#123;</span><br><span class="line">  <span class="attribute">content</span>: <span class="string">&quot;before 伪元素&quot;</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-tag">div</span><span class="selector-pseudo">::after</span> &#123;</span><br><span class="line">  <span class="attribute">content</span>: <span class="string">&quot;after 伪元素&quot;</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>注意点：</p><ul><li>必须设置 <strong>content: ””属性</strong>，用来 设置伪元素的内容，如果没有内容，则<strong>引号留空</strong>即可</li><li>伪元素默认是<strong>行内</strong>显示模式</li><li><strong>权重和标签选择器相同</strong></li></ul><h2 id="02-PxCook">02-PxCook</h2><p>PxCook（像素大厨） 是一款切图设计工具软件。支持PSD文件的文字、颜色、距离自动智能识别。</p><ul><li>开发面板（自动智能识别）</li><li>设计面板（手动测量尺寸和颜色）</li></ul><p>使用方法：创建项目 → 输入 项目名称、项目类型 Web → 单击按钮【创建项目】 → 单击按钮【添加】，导入设计稿</p><p><img src="https://img.777nx.cn/test/1680321681695.png" alt="1680321681695"></p><h2 id="03-盒子模型">03-盒子模型</h2><p>作用：布局网页，摆放盒子和内容。</p><h3 id="盒子模型-组成">盒子模型-组成</h3><ul><li>内容区域 – width &amp; height</li><li>内边距 – padding（出现在内容与盒子边缘之间）</li><li>边框线 – border</li><li>外边距 – margin（出现在盒子外面）</li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">50px</span>;</span><br><span class="line">  <span class="attribute">border</span>: <span class="number">5px</span> solid brown;</span><br><span class="line">  <span class="attribute">padding</span>: <span class="number">20px</span>;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: pink;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/1680330928735.png" alt="1680330928735"></p><p><img src="https://img.777nx.cn/test/1680330935635.png" alt="1680330935635"></p><h3 id="边框线">边框线</h3><h4 id="四个方向">四个方向</h4><p>属性名：<strong>border</strong>（bd）</p><p>属性值：边框线粗细  线条样式  颜色（不区分顺序）</p><p><img src="https://img.777nx.cn/test/1680330976390.png" alt="1680330976390"></p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">border</span>: <span class="number">5px</span> solid brown;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: pink;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h4 id="单方向边框线">单方向边框线</h4><p>属性名：<strong>border-方位名词</strong>（bd+方位名词首字母，例如，bdl）</p><p>属性值：边框线粗细  线条样式  颜色（不区分顺序）</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">border-top</span>: <span class="number">2px</span> solid red;</span><br><span class="line">  <span class="attribute">border-right</span>: <span class="number">3px</span> dashed green;</span><br><span class="line">  <span class="attribute">border-bottom</span>: <span class="number">4px</span> dotted blue;</span><br><span class="line">  <span class="attribute">border-left</span>: <span class="number">5px</span> solid orange;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: pink;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="内边距">内边距</h3><p>作用：设置 内容 与 盒子边缘 之间的距离。</p><ul><li>属性名：padding / padding-方位名词</li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="comment">/* 四个方向 内边距相同 */</span></span><br><span class="line">  <span class="attribute">padding</span>: <span class="number">30px</span>;</span><br><span class="line">  <span class="comment">/* 单独设置一个方向内边距 */</span></span><br><span class="line">  <span class="attribute">padding-top</span>: <span class="number">10px</span>;</span><br><span class="line">  <span class="attribute">padding-right</span>: <span class="number">20px</span>;</span><br><span class="line">  <span class="attribute">padding-bottom</span>: <span class="number">40px</span>;</span><br><span class="line">  <span class="attribute">padding-left</span>: <span class="number">80px</span>;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: pink;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p>提示：添加 padding 会撑大盒子。</p></blockquote><ul><li>padding 多值写法</li></ul><p><img src="https://img.777nx.cn/test/1680331118330.png" alt="1680331118330"></p><blockquote><p>技巧：从<strong>上</strong>开始<strong>顺时针</strong>赋值，当前方向没有数值则与<strong>对面取值相同</strong>。</p></blockquote><h3 id="尺寸计算">尺寸计算</h3><p><img src="https://img.777nx.cn/test/1680331322935.png" alt="1680331322935"></p><p>默认情况：盒子尺寸 = 内容尺寸 + border 尺寸 + 内边距尺寸</p><p>结论：给盒子加 border / padding 会撑大盒子</p><p>解决：</p><ul><li>手动做减法，减掉 border / padding 的尺寸</li><li>內减模式：<strong>box-sizing: border-box</strong></li></ul><h3 id="外边距">外边距</h3><p>作用：拉开两个盒子之间的距离</p><p>属性名：<strong>margin</strong></p><p>提示：与 padding 属性值写法、含义相同</p><h3 id="版心居中">版心居中</h3><p><img src="https://img.777nx.cn/test/1680331503466.png" alt="1680331503466"></p><p>左右 margin 值 为 auto（盒子要有宽度）</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">0</span> auto;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">1000px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: pink;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="清除默认样式">清除默认样式</h3><p><img src="https://img.777nx.cn/test/1680331558304.png" alt="1680331558304"></p><p>清除标签默认的样式，比如：默认的内外边距。</p><p><img src="https://img.777nx.cn/test/1680331580746.png" alt="1680331580746"></p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/* 清除默认内外边距 */</span></span><br><span class="line">* &#123;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">padding</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">box-sizing</span>: border-box;</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/* 清除列表项目符号 */</span></span><br><span class="line"><span class="selector-tag">li</span> &#123;</span><br><span class="line">  <span class="attribute">list-style</span>: none;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="元素溢出">元素溢出</h3><p>作用：控制溢出元素的内容的显示方式。</p><p>属性名：<strong>overflow</strong></p><p><img src="https://img.777nx.cn/test/1680331623305.png" alt="1680331623305"></p><h3 id="外边距问题">外边距问题</h3><h4 id="合并现象">合并现象</h4><p>场景：<strong>垂直</strong>排列的兄弟元素，上下 <strong>margin</strong> 会<strong>合并</strong></p><p>现象：取两个 margin 中的<strong>较大值生效</strong></p><p><img src="https://img.777nx.cn/test/1680331672628.png" alt="1680331672628"></p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.one</span> &#123;</span><br><span class="line">  <span class="attribute">margin-bottom</span>: <span class="number">50px</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.two</span> &#123;</span><br><span class="line">  <span class="attribute">margin-top</span>: <span class="number">20px</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h4 id="外边距塌陷">外边距塌陷</h4><p>场景：父子级的标签，子级的添加 <strong>上外边距</strong> 会产生<strong>塌陷</strong>问题</p><p>现象：<strong>导致父级一起向下移动</strong></p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.son</span> &#123;</span><br><span class="line">  <span class="attribute">margin-top</span>: <span class="number">50px</span>;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">100px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">100px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: orange;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/1680333860271.png" alt="1680333860271"></p><p>解决方法：</p><ul><li>取消子级margin，父级设置padding</li><li>父级设置 overflow: hidden</li><li>父级设置 border-top</li></ul><h3 id="行内元素-–-内外边距问题">行内元素 – 内外边距问题</h3><p>场景：行内元素添加 margin 和 padding，无法改变元素垂直位置</p><p>解决方法：给行内元素添加 <strong>line-height</strong> 可以改变垂直位置</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">span</span> &#123;</span><br><span class="line">  <span class="comment">/* margin 和 padding 属性，无法改变垂直位置 */</span></span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">50px</span>;</span><br><span class="line">  <span class="attribute">padding</span>: <span class="number">20px</span>;</span><br><span class="line">  <span class="comment">/* 行高可以改变垂直位置 */</span></span><br><span class="line">  <span class="attribute">line-height</span>: <span class="number">100px</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="圆角">圆角</h3><p>作用：设置元素的外边框为圆角。</p><p>属性名：<strong>border-radius</strong></p><p>属性值：数字+px / 百分比</p><p>提示：属性值是圆角半径</p><p><img src="https://img.777nx.cn/test/1680334014390.png" alt="1680334014390"></p><ul><li>多值写法</li></ul><p><img src="https://img.777nx.cn/test/1680334027657.png" alt="1680334027657"></p><blockquote><p>技巧：从左上角开始顺时针赋值，当前角没有数值则与对角取值相同。</p></blockquote><ul><li>正圆形状：给正方形盒子设置圆角属性值为 <strong>宽高的一半 / 50%</strong></li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">img</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">200px</span>;</span><br><span class="line">  </span><br><span class="line">  <span class="attribute">border-radius</span>: <span class="number">100px</span>;</span><br><span class="line">  <span class="attribute">border-radius</span>: <span class="number">50%</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/1680334083567.png" alt="1680334083567"></p><ul><li>胶囊形状：给长方形盒子设置圆角属性值为 盒子高度的一半</li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">80px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: orange;</span><br><span class="line">  <span class="attribute">border-radius</span>: <span class="number">40px</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/1680334136242.png" alt="1680334136242"></p><h3 id="盒子阴影（拓展）">盒子阴影（拓展）</h3><p>作用：给元素设置阴影效果</p><p>属性名：<strong>box-shadow</strong></p><p>属性值：X 轴偏移量  Y 轴偏移量  模糊半径  扩散半径  颜色  内外阴影</p><p>注意：</p><ul><li>X 轴偏移量 和 Y 轴偏移量 必须书写</li><li>默认是外阴影，内阴影需要添加 inset</li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">80px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: orange;</span><br><span class="line">  <span class="attribute">box-shadow</span>: <span class="number">2px</span> <span class="number">5px</span> <span class="number">10px</span> <span class="number">0</span> <span class="built_in">rgba</span>(<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0.5</span>) inset;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="04-综合案例-产品卡片">04-综合案例-产品卡片</h2><p><img src="https://img.777nx.cn/test/1680334221212.png" alt="1680334221212"></p><p>CSS 书写顺序：</p><ol><li>盒子模型属性</li><li>文字样式</li><li>圆角、阴影等修饰属性</li></ol><h3 id="HTML标签">HTML标签</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;product&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;./images/liveSDK.svg&quot;</span> <span class="attr">alt</span>=<span class="string">&quot;&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">h4</span>&gt;</span>抖音直播SDK<span class="tag">&lt;/<span class="name">h4</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">p</span>&gt;</span>包含抖音直播看播功能<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="CSS样式">CSS样式</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  * &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">padding</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">box-sizing</span>: border-box;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">body</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: <span class="number">#f1f1f1</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.product</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin</span>: <span class="number">50px</span> auto;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">padding-top</span>: <span class="number">40px</span>;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">270px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">253px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: <span class="number">#fff</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">text-align</span>: center;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">    <span class="attribute">border-radius</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.product</span> <span class="selector-tag">h4</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin-top</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin-bottom</span>: <span class="number">12px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">18px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="number">#333</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-weight</span>: <span class="number">400</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.product</span> <span class="selector-tag">p</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">12px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="number">#555</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure><h2 id="05-综合案例二-–-新闻列表">05-综合案例二 – 新闻列表</h2><p><img src="https://img.777nx.cn/test/1680334329887.png" alt="1680334329887"></p><h3 id="整体布局">整体布局</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">* &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">margin</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">padding</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">box-sizing</span>: border-box;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-tag">li</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">list-style</span>: none;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-tag">a</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">text-decoration</span>: none;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.news</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">margin</span>: <span class="number">100px</span> auto;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">width</span>: <span class="number">360px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">height</span>: <span class="number">200px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="comment">/* background-color: pink; */</span></span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;news&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="标题区域">标题区域</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.news</span> <span class="selector-class">.hd</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">height</span>: <span class="number">34px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">background-color</span>: <span class="number">#eee</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">border</span>: <span class="number">1px</span> solid <span class="number">#dbdee1</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">border-left</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.news</span> <span class="selector-class">.hd</span> <span class="selector-tag">a</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="comment">/* -1 盒子向上移动 */</span></span></span><br><span class="line"><span class="language-css">  <span class="attribute">margin-top</span>: -<span class="number">1px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">display</span>: block;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">border-top</span>: <span class="number">3px</span> solid <span class="number">#ff8400</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">border-right</span>: <span class="number">1px</span> solid <span class="number">#dbdee1</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">width</span>: <span class="number">48px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">height</span>: <span class="number">34px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">background-color</span>: <span class="number">#fff</span>;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="attribute">text-align</span>: center;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">line-height</span>: <span class="number">32px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">font-size</span>: <span class="number">14px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">color</span>: <span class="number">#333</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;hd&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>新闻<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="内容区域">内容区域</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.news</span> <span class="selector-class">.bd</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">padding</span>: <span class="number">5px</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.news</span> <span class="selector-class">.bd</span> <span class="selector-tag">li</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">padding-left</span>: <span class="number">15px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">background-image</span>: <span class="built_in">url</span>(<span class="string">./images/square.png</span>);</span></span><br><span class="line"><span class="language-css">  <span class="attribute">background-repeat</span>: no-repeat;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">background-position</span>: <span class="number">0</span> center;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.news</span> <span class="selector-class">.bd</span> <span class="selector-tag">li</span> <span class="selector-tag">a</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">padding-left</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">background</span>: <span class="built_in">url</span>(<span class="string">./images/img.gif</span>) no-repeat <span class="number">0</span> center;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="attribute">font-size</span>: <span class="number">12px</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">color</span>: <span class="number">#666</span>;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">line-height</span>: <span class="number">24px</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.news</span> <span class="selector-class">.bd</span> <span class="selector-tag">li</span> <span class="selector-tag">a</span><span class="selector-pseudo">:hover</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">color</span>: <span class="number">#ff8400</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;bd&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">ul</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>点赞“新农人” 温暖的伸手<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>在希望的田野上...<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>“中国天眼”又有新发现 已在《自然》杂志发表<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>急！这个领域，缺人！月薪4万元还不好招！啥情况？<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>G9“带货”背后：亏损面持续扩大，竞争环境激烈<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>多地力推二手房“带押过户”，有什么好处？<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">ul</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">盒子模型</summary>
    
    
    
    <category term="前端" scheme="https://www.777nx.cn/categories/%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="CSS" scheme="https://www.777nx.cn/tags/CSS/"/>
    
  </entry>
  
  <entry>
    <title>CSS进阶</title>
    <link href="https://www.777nx.cn/posts/f7eab168.html"/>
    <id>https://www.777nx.cn/posts/f7eab168.html</id>
    <published>2024-12-18T01:45:15.000Z</published>
    <updated>2026-10-15T06:19:20.360Z</updated>
    
    <content type="html"><![CDATA[<h1 id="CSS进阶">CSS进阶</h1><blockquote><p>目标：掌握复合选择器作用和写法；使用background属性添加背景效果</p></blockquote><h2 id="01-复合选择器">01-复合选择器</h2><p>定义：由两个或多个基础选择器，通过不同的方式组合而成。</p><p>作用：更准确、更高效的选择目标元素（标签）。</p><h3 id="后代选择器">后代选择器</h3><p>后代选择器：<strong>选中某元素的后代元素</strong>。</p><p>选择器写法：父选择器  子选择器 { CSS 属性}，父子选择器之间用<strong>空格</strong>隔开。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">div</span> <span class="selector-tag">span</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: red;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">span</span>&gt;</span> span 标签<span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">span</span>&gt;</span>这是 div 的儿子 span&lt;/span &gt;</span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="子代选择器">子代选择器</h3><p>子代选择器：选中某元素的子代元素（<strong>最近的子级</strong>）。</p><p>选择器写法：父选择器 &gt; 子选择器 { CSS 属性}，父子选择器之间用 <strong>&gt;</strong> 隔开。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">div</span> &gt; <span class="selector-tag">span</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: red;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">span</span>&gt;</span>这是 div 里面的 span<span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">p</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">span</span>&gt;</span>这是 div 里面的 p 里面的 span<span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="并集选择器">并集选择器</h3><p>并集选择器：选中<strong>多组标签</strong>设置<strong>相同</strong>的样式。</p><p>选择器写法：选择器1, 选择器2, …, 选择器N { CSS 属性}，选择器之间用 <strong>,</strong> 隔开。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">div</span>,</span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">p</span>,</span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">span</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: red;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span>&gt;</span> div 标签<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">p</span>&gt;</span>p 标签<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">span</span>&gt;</span>span 标签<span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="交集选择器">交集选择器</h3><p>交集选择器：选中<strong>同时满足多个条件</strong>的元素。</p><p>选择器写法：选择器1选择器2 { CSS 属性}，选择器之间连写，没有任何符号。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">p</span><span class="selector-class">.box</span> &#123;</span></span><br><span class="line"><span class="language-css">  <span class="attribute">color</span>: red;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">p</span> <span class="attr">class</span>=<span class="string">&quot;box&quot;</span>&gt;</span>p 标签，使用了类选择器 box<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">p</span>&gt;</span>p 标签<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;box&quot;</span>&gt;</span>div 标签，使用了类选择器 box<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><blockquote><p>注意：如果交集选择器中有标签选择器，标签选择器必须书写在最前面。</p></blockquote><h3 id="伪类选择器">伪类选择器</h3><p>伪类选择器：伪类表示元素<strong>状态</strong>，选中元素的某个状态设置样式。</p><p>鼠标悬停状态：<strong>选择器:hover { CSS 属性 }</strong></p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">a</span><span class="selector-pseudo">:hover</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: red;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.box</span><span class="selector-pseudo">:hover</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: green;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>a 标签<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;box&quot;</span>&gt;</span>div 标签<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h4 id="超链接伪类">超链接伪类</h4><p><img src="https://img.777nx.cn/test/1680319272736.png" alt="1680319272736"></p><blockquote><p>提示：如果要给超链接设置以上四个状态，需要按 LVHA 的顺序书写。</p><p>经验：工作中，一个 a 标签选择器设置超链接的样式， hover状态特殊设置</p></blockquote><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">a</span> &#123;</span><br><span class="line">  <span class="attribute">color</span>: red;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-tag">a</span><span class="selector-pseudo">:hover</span> &#123;</span><br><span class="line">  <span class="attribute">color</span>: green;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="02-CSS特性">02-CSS特性</h2><p>CSS特性：化简代码 / 定位问题，并解决问题</p><ul><li>继承性</li><li>层叠性</li><li>优先级</li></ul><h3 id="继承性">继承性</h3><p>继承性：子级默认继承父级的<strong>文字控制属性</strong>。</p><p><img src="https://img.777nx.cn/test/1680319376438.png" alt="1680319376438"></p><blockquote><p>注意：如果标签有默认文字样式会继承失败。 例如：a 标签的颜色、标题的字体大小。</p></blockquote><h3 id="层叠性">层叠性</h3><p>特点：</p><ul><li>相同的属性会覆盖：<strong>后面的 CSS 属性覆盖前面的 CSS 属性</strong></li><li>不同的属性会叠加：<strong>不同的 CSS 属性都生效</strong></li></ul><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">div</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: red;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-weight</span>: <span class="number">700</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">div</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: green;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">30px</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span>&gt;</span>div 标签<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><blockquote><p>注意：选择器类型相同则遵循层叠性，否则按选择器优先级判断。</p></blockquote><h3 id="优先级">优先级</h3><p>优先级：也叫权重，当一个标签<strong>使用了多种选择器时</strong>，基于不同种类的选择器的<strong>匹配规则</strong>。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">div</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: red;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.box</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: green;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;box&quot;</span>&gt;</span>div 标签<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h4 id="基础选择器">基础选择器</h4><p>规则：选择器<strong>优先级高的样式生效</strong>。</p><p>公式：<strong>通配符选择器 &lt; 标签选择器 &lt; 类选择器 &lt; id选择器 &lt; 行内样式 &lt; !important</strong></p><p>​           <strong>（选中标签的范围越大，优先级越低）</strong></p><h4 id="复合选择器-叠加">复合选择器-叠加</h4><p>叠加计算：如果是复合选择器，则需要<strong>权重叠加</strong>计算。</p><p>公式：（每一级之间不存在进位）</p><p><img src="https://img.777nx.cn/test/1680319646205.png" alt="1680319646205"></p><p>规则：</p><ul><li>从左向右依次比较选个数，同一级个数多的优先级高，如果个数相同，则向后比较</li><li><strong>!important 权重最高</strong></li><li>继承权重最低</li></ul><h2 id="03-Emmet-写法">03-Emmet 写法</h2><p>Emmet写法：代码的<strong>简写</strong>方式，输入缩写 VS Code 会自动生成对应的代码。</p><ul><li>HTML标签</li></ul><p><img src="https://img.777nx.cn/test/1680319897697.png" alt="1680319897697"></p><ul><li>CSS：大多数简写方式为属性单词的<strong>首字母</strong></li></ul><p><img src="https://img.777nx.cn/test/1680319926111.png" alt="1680319926111"></p><h2 id="04-背景属性">04-背景属性</h2><p><img src="https://img.777nx.cn/test/1680319971861.png" alt="1680319971861"></p><h3 id="背景图">背景图</h3><p>网页中，使用背景图实现装饰性的图片效果。</p><ul><li>属性名：<strong>background-image</strong>（bgi）</li><li>属性值：url(背景图 URL)</li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">400px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">400px</span>;</span><br><span class="line"></span><br><span class="line">  <span class="attribute">background-image</span>: <span class="built_in">url</span>(<span class="string">./images/1.png</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p>提示：背景图默认有<strong>平铺（复制）效果</strong>。</p></blockquote><h3 id="平铺方式">平铺方式</h3><p>属性名：<strong>background-repeat</strong>（bgr）</p><p><img src="https://img.777nx.cn/test/1680320072292.png" alt="1680320072292"></p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">400px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">400px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: pink;</span><br><span class="line">  <span class="attribute">background-image</span>: <span class="built_in">url</span>(<span class="string">./images/1.png</span>);</span><br><span class="line"></span><br><span class="line">  <span class="attribute">background-repeat</span>: no-repeat;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="背景图位置">背景图位置</h3><p>属性名：<strong>background-position</strong>（bgp）</p><p>属性值：水平方向位置 垂直方向位置</p><ul><li>关键字</li></ul><p><img src="https://img.777nx.cn/test/1680320211424.png" alt="1680320211424"></p><ul><li>坐标<ul><li>水平：正数向右；负数向左</li><li>垂直：正数向下；负数向上</li></ul></li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">400px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">400px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: pink;</span><br><span class="line">  <span class="attribute">background-image</span>: <span class="built_in">url</span>(<span class="string">./images/1.png</span>);</span><br><span class="line">  <span class="attribute">background-repeat</span>: no-repeat;</span><br><span class="line"></span><br><span class="line">  <span class="attribute">background-position</span>: center bottom;</span><br><span class="line">  <span class="attribute">background-position</span>: <span class="number">50px</span> -<span class="number">100px</span>;</span><br><span class="line">  <span class="attribute">background-position</span>: <span class="number">50px</span> center;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p>提示：</p><ul><li>关键字取值方式写法，可以颠倒取值顺序</li><li>可以只写一个关键字，另一个方向默认为居中；数字只写一个值表示水平方向，垂直方向为居中</li></ul></blockquote><h3 id="背景图缩放">背景图缩放</h3><p>作用：设置背景图大小</p><p>属性名：<strong>background-size</strong>（bgz）</p><p>常用属性值：</p><ul><li><p>关键字</p><ul><li>cover：等比例缩放背景图片以完全覆盖背景区，可能背景图片部分看不见</li><li>contain：等比例缩放背景图片以完全装入背景区，可能背景区部分空白</li></ul></li><li><p>百分比：根据盒子尺寸计算图片大小</p></li><li><p>数字 + 单位（例如：px）</p></li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">500px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">400px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: pink;</span><br><span class="line">  <span class="attribute">background-image</span>: <span class="built_in">url</span>(<span class="string">./images/1.png</span>);</span><br><span class="line">  <span class="attribute">background-repeat</span>: no-repeat;</span><br><span class="line">  </span><br><span class="line">  <span class="attribute">background-size</span>: cover;</span><br><span class="line">  <span class="attribute">background-size</span>: contain;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p>提示：工作中，<strong>图片比例与盒子比例相同</strong>，使用 cover 或 contain 缩放背景图效果相同。</p></blockquote><h3 id="背景图固定">背景图固定</h3><p>作用：背景不会随着元素的内容滚动。</p><p>属性名：<strong>background-attachment</strong>（bga）</p><p>属性值：<strong>fixed</strong></p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">body</span> &#123;</span><br><span class="line">  <span class="attribute">background-image</span>: <span class="built_in">url</span>(<span class="string">./images/bg.jpg</span>);</span><br><span class="line">  <span class="attribute">background-repeat</span>: no-repeat;</span><br><span class="line">  <span class="attribute">background-attachment</span>: fixed;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="背景复合属性">背景复合属性</h3><p>属性名：<strong>background</strong>（bg）</p><p>属性值：背景色 背景图 背景图平铺方式 背景图位置/背景图缩放  背景图固定（<strong>空格隔开各个属性值，不区分顺序</strong>）</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">400px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">400px</span>;</span><br><span class="line"></span><br><span class="line">  <span class="attribute">background</span>: pink <span class="built_in">url</span>(<span class="string">./images/1.png</span>) no-repeat right center/cover;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="05-显示模式">05-显示模式</h2><p>显示模式：标签（元素）的显示方式。</p><p><img src="https://img.777nx.cn/test/1680320464551.png" alt="1680320464551"></p><p>作用：布局网页的时候，根据标签的显示模式选择合适的标签摆放内容。</p><h3 id="块级元素">块级元素</h3><p>特点：</p><ul><li>独占一行</li><li>宽度默认是父级的100%</li><li>添加宽高属性生效</li></ul><p><img src="https://img.777nx.cn/test/1680320578369.png" alt="1680320578369"></p><h3 id="行内元素">行内元素</h3><p>特点：</p><ul><li>一行可以显示多个</li><li>设置宽高属性不生效</li><li>宽高尺寸由内容撑开</li></ul><p><img src="https://img.777nx.cn/test/1680320583985.png" alt="1680320583985"></p><h3 id="行内块元素">行内块元素</h3><p>特点：</p><ul><li>一行可以显示多个</li><li>设置宽高属性生效</li><li>宽高尺寸也可以由内容撑开</li></ul><p><img src="https://img.777nx.cn/test/1680320590005.png" alt="1680320590005"></p><h3 id="转换显示模式">转换显示模式</h3><p>属性：<strong>display</strong></p><p><img src="https://img.777nx.cn/test/1680320613034.png" alt="1680320613034"></p><h2 id="06-综合案例一-热词">06-综合案例一-热词</h2><p><img src="https://img.777nx.cn/test/1680320664821.png" alt="1680320664821"></p><h3 id="HTML标签">HTML标签</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>HTML<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>CSS<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>JavaScript<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>Vue<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>React<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="CSS样式">CSS样式</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="comment">/* 默认效果 */</span></span></span><br><span class="line"><span class="language-css"><span class="selector-tag">a</span> &#123;</span></span><br><span class="line"><span class="language-css"><span class="attribute">display</span>: block;</span></span><br><span class="line"><span class="language-css"><span class="attribute">width</span>: <span class="number">200px</span>;</span></span><br><span class="line"><span class="language-css"><span class="attribute">height</span>: <span class="number">80px</span>;</span></span><br><span class="line"><span class="language-css"><span class="attribute">background-color</span>: <span class="number">#3064bb</span>;</span></span><br><span class="line"><span class="language-css"><span class="attribute">color</span>: <span class="number">#fff</span>;</span></span><br><span class="line"><span class="language-css"><span class="attribute">text-decoration</span>: none;</span></span><br><span class="line"><span class="language-css"><span class="attribute">text-align</span>: center;</span></span><br><span class="line"><span class="language-css"><span class="attribute">line-height</span>: <span class="number">80px</span>;</span></span><br><span class="line"><span class="language-css"><span class="attribute">font-size</span>: <span class="number">18px</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="comment">/* 鼠标悬停的效果 */</span></span></span><br><span class="line"><span class="language-css"><span class="selector-tag">a</span><span class="selector-pseudo">:hover</span> &#123;</span></span><br><span class="line"><span class="language-css"><span class="attribute">background-color</span>: <span class="number">#608dd9</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure><h2 id="07-综合案例二-–-banner-效果">07-综合案例二 – banner 效果</h2><p><img src="https://img.777nx.cn/test/1680320758496.png" alt="1680320758496"></p><h3 id="HTML标签-2">HTML标签</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;banner&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">h2</span>&gt;</span>让创造产生价值<span class="tag">&lt;/<span class="name">h2</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">p</span>&gt;</span>我们希望小游戏平台可以提供无限的可能性，让每一个创作者都可以将他们的才华和创意传递给用户。<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>我要报名<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="CSS样式-2">CSS样式</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.banner</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">500px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: <span class="number">#f3f3f4</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-image</span>: <span class="built_in">url</span>(<span class="string">./images/bk.png</span>);</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-repeat</span>: no-repeat;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-position</span>: left bottom;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">    <span class="comment">/* 文字控制属性，继承给子级 */</span></span></span><br><span class="line"><span class="language-css">    <span class="attribute">text-align</span>: right;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="number">#333</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.banner</span> <span class="selector-tag">h2</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">36px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-weight</span>: <span class="number">400</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">line-height</span>: <span class="number">100px</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.banner</span> <span class="selector-tag">p</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.banner</span> <span class="selector-tag">a</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">125px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">40px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: <span class="number">#f06b1f</span>;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">    <span class="attribute">display</span>: inline-block;</span></span><br><span class="line"><span class="language-css">    <span class="comment">/* 转块级无法右对齐，因为块元素独占一行 */</span></span></span><br><span class="line"><span class="language-css">    <span class="comment">/* display: block; */</span></span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">    <span class="attribute">text-align</span>: center;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">line-height</span>: <span class="number">40px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="number">#fff</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">text-decoration</span>: none;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">CSS进阶</summary>
    
    
    
    <category term="前端" scheme="https://www.777nx.cn/categories/%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="CSS" scheme="https://www.777nx.cn/tags/CSS/"/>
    
  </entry>
  
  <entry>
    <title>CSS基础</title>
    <link href="https://www.777nx.cn/posts/599b70c0.html"/>
    <id>https://www.777nx.cn/posts/599b70c0.html</id>
    <published>2024-12-18T01:38:42.000Z</published>
    <updated>2026-10-15T06:19:20.360Z</updated>
    
    <content type="html"><![CDATA[<h1 id="CSS基础">CSS基础</h1><blockquote><p>目标：掌握 CSS 属性基本写法，能够使用文字相关属性美化文章页。</p></blockquote><h2 id="01-CSS初体验">01-CSS初体验</h2><p>层叠样式表 (Cascading Style Sheets，缩写为 CSS），是一种 <strong>样式表</strong> 语言，用来<strong>描述 HTML 文档的呈现</strong>（<strong>美化内容</strong>）。</p><p>书写位置：<strong>title 标签下方添加 style 双标签，style 标签里面书写 CSS 代码</strong>。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">title</span>&gt;</span>CSS 初体验<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="comment">/* 选择器 &#123; &#125; */</span></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">p</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="comment">/* CSS 属性 */</span></span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: red;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">p</span>&gt;</span>体验 CSS<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br></pre></td></tr></table></figure><blockquote><p>提示：属性名和属性值成对出现 → 键值对。</p></blockquote><h2 id="02-CSS引入方式">02-CSS引入方式</h2><ul><li><strong>内部</strong>样式表：学习使用<ul><li>CSS 代码写在 style 标签里面</li></ul></li><li><strong>外部</strong>样式表：开发使用<ul><li>CSS 代码写在单独的 CSS 文件中（<strong>.css</strong>）</li><li>在 HTML 使用 link 标签引入</li></ul></li></ul><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">link</span> <span class="attr">rel</span>=<span class="string">&quot;stylesheet&quot;</span> <span class="attr">href</span>=<span class="string">&quot;./my.css&quot;</span>&gt;</span></span><br></pre></td></tr></table></figure><ul><li><strong>行内</strong>样式：配合 JavaScript 使用<ul><li>CSS 写在标签的 style 属性值里</li></ul></li></ul><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">style</span>=<span class="string">&quot;color: red; font-size:20px;&quot;</span>&gt;</span>这是 div 标签<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h2 id="03-选择器">03-选择器</h2><p>作用：<strong>查找标签</strong>，设置样式。</p><h3 id="标签选择器">标签选择器</h3><p>标签选择器：使用<strong>标签名</strong>作为选择器 → 选中<strong>同名标签设置相同的样式</strong>。</p><p>例如：p, h1, div, a, img…</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">p</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: red;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><blockquote><p>注意：标签选择器<strong>无法差异化</strong>同名标签的显示效果。</p></blockquote><h3 id="类选择器">类选择器</h3><p>作用：查找标签，<strong>差异化</strong>设置标签的显示效果。</p><p>步骤：</p><ul><li>定义类选择器 → <strong>.类名</strong></li><li>使用类选择器 → 标签添加 <strong>class=“类名”</strong></li></ul><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="comment">/* 定义类选择器 */</span></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.red</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: red;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">&lt;!-- 使用类选择器 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;red&quot;</span>&gt;</span>这是 div 标签<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;red size&quot;</span>&gt;</span>div 标签<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><p>注意：</p><ul><li>类名<strong>自定义</strong>，不要用纯数字或中文，尽量用英文命名</li><li>一个类选择器<strong>可以供多个标签使用</strong></li><li><strong>一个标签可以使用多个类名</strong>，类名之间用<strong>空格</strong>隔开</li></ul><blockquote><p>开发习惯：类名见名知意，多个单词可以用 - 连接，例如：news-hd。</p></blockquote><h3 id="id选择器">id选择器</h3><p>作用：查找标签，差异化设置标签的显示效果。</p><p>场景：id 选择器一般<strong>配合 JavaScript</strong> 使用，很少用来设置 CSS 样式</p><p>步骤：</p><ul><li>定义 id 选择器 → #id名</li><li>使用 id 选择器 → 标签添加 id= “id名”</li></ul><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="comment">/* 定义 id 选择器 */</span></span></span><br><span class="line"><span class="language-css">  <span class="selector-id">#red</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: red;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">&lt;!-- 使用 id 选择器 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;red&quot;</span>&gt;</span>这是 div 标签<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><blockquote><p>规则：同一个 id 选择器在一个页面只能使用一次。</p></blockquote><h3 id="通配符选择器">通配符选择器</h3><p>作用：查找页面<strong>所有</strong>标签，设置相同样式。</p><p>通配符选择器： *<strong>，不需要调用</strong>，浏览器自动查找页面所有标签，设置相同的样式</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">* &#123;</span><br><span class="line">  <span class="attribute">color</span>: red;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p>经验：通配符选择器可以用于<strong>清除标签的默认样式</strong>，例如：标签默认的外边距、内边距。</p></blockquote><p><img src="https://img.777nx.cn/test/1680317584651.png" alt="1680317584651"></p><h2 id="04-盒子尺寸和背景色">04-盒子尺寸和背景色</h2><p><img src="https://img.777nx.cn/test/1680317605797.png" alt="1680317605797"></p><h2 id="05-文字控制属性">05-文字控制属性</h2><h3 id="字体大小">字体大小</h3><ul><li>属性名：<strong>font-size</strong></li><li>属性值：文字尺寸，PC 端网页最常用的单位 <strong>px</strong></li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">p</span> &#123;</span><br><span class="line">  <span class="attribute">font-size</span>: <span class="number">30px</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p>经验：谷歌浏览器默认字号是16px。</p></blockquote><h3 id="字体样式（是否倾斜）">字体样式（是否倾斜）</h3><p>作用：清除文字默认的倾斜效果</p><p>属性名：<strong>font-style</strong></p><p>属性值</p><ul><li>正常（不倾斜）：<strong>normal</strong></li><li>倾斜：<strong>italic</strong></li></ul><h3 id="行高">行高</h3><p>作用：设置多行文本的间距</p><p>属性名：line-height</p><p>属性值</p><ul><li>数字 + px</li><li>数字（当前标签font-size属性值的倍数）</li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">line-height</span>: <span class="number">30px</span>;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment">/* 当前标签字体大小为16px */</span></span><br><span class="line"><span class="attribute">line-height</span>: <span class="number">2</span>;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/1680317770048.png" alt="1680317770048"></p><blockquote><p>行高的测量方法：从一行文字的最顶端（最底端）量到下一行文字的最顶端（最底端）。</p></blockquote><h4 id="单行文字垂直居中">单行文字垂直居中</h4><p>垂直居中技巧：<strong>行高属性值等于盒子高度属性值</strong></p><p>注意：该技巧适用于单行文字垂直居中效果</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">100px</span>;</span><br><span class="line">  <span class="attribute">background-color</span>: skyblue;</span><br><span class="line"></span><br><span class="line">  <span class="comment">/* 注意：只能是单行文字垂直居中 */</span></span><br><span class="line">  <span class="attribute">line-height</span>: <span class="number">100px</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="字体族">字体族</h3><p>属性名：<strong>font-family</strong></p><p>属性值：字体名</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">font-family</span>: 楷体;</span><br></pre></td></tr></table></figure><blockquote><p>拓展（了解）：font-family属性值可以书写多个字体名，各个字体名用逗号隔开，执行顺序是从左向右依次查找</p><ul><li>font-family 属性最后设置一个字体族名，网页开发建议使用无衬线字体</li></ul></blockquote><p><img src="https://img.777nx.cn/test/1680318278244.png" alt="1680318278244"></p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">font-family</span>: Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, <span class="string">&quot;\5B8B\4F53&quot;</span>, sans-serif;</span><br></pre></td></tr></table></figure><h3 id="font复合属性">font复合属性</h3><p>使用场景：设置网页文字公共样式</p><p><img src="https://img.777nx.cn/test/1680318326214.png" alt="1680318326214"></p><p>复合属性：属性的简写方式，<strong>一个属性对应多个值的写法</strong>，各个属性值之间用<strong>空格</strong>隔开。</p><p><strong>font: 是否倾斜  是否加粗  字号/行高 字体（必须按顺序书写）</strong></p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">font</span>: italic <span class="number">700</span> <span class="number">30px</span>/<span class="number">2</span> 楷体;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p>注意：字号和字体值必须书写，否则 font 属性不生效 。</p></blockquote><h3 id="文本缩进">文本缩进</h3><p>属性名：<strong>text-indent</strong></p><p>属性值：</p><ul><li>数字 + px</li><li><strong>数字 + em</strong>（推荐：<strong>1em = 当前标签的字号大小</strong>）</li></ul><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">p</span> &#123;</span><br><span class="line">  <span class="attribute">text-indent</span>: <span class="number">2em</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="文本对齐方式">文本对齐方式</h3><p>作用：控制内容水平对齐方式</p><p>属性名：<strong>text-align</strong></p><p><img src="https://img.777nx.cn/test/1680318461130.png" alt="1680318461130"></p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">text-align</span>: center;</span><br></pre></td></tr></table></figure><blockquote><p>text-align本质是控制内容的对齐方式，属性要设置给内容的父级。</p></blockquote><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">div</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">text-align</span>: center;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;./images/1.jpg&quot;</span> <span class="attr">alt</span>=<span class="string">&quot;&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="文本修饰线">文本修饰线</h3><p>属性名： <strong>text-decoration</strong></p><p><img src="https://img.777nx.cn/test/1680318548558.png" alt="1680318548558"></p><h3 id="color-文字颜色">color 文字颜色</h3><p><img src="https://img.777nx.cn/test/1680318569852.png" alt="1680318569852"></p><blockquote><p>提示：只要属性值为颜色，都可以使用上述四种颜色表示方式，例如：背景色。</p></blockquote><h2 id="06-调试工具">06-调试工具</h2><p>作用：检查、调试代码；帮助程序员发现代码问题、解决问题</p><ol><li>打开调试工具</li></ol><ul><li>浏览器窗口内任意位置 / 选中标签 → 鼠标右键 → 检查</li><li>F12</li></ul><ol start="2"><li>使用调试工具</li></ol><p><img src="https://img.777nx.cn/test/1680318624523.png" alt="1680318624523"></p><h2 id="07-综合案例一-新闻详情">07-综合案例一-新闻详情</h2><p>网页制作思路：</p><ol><li>从上到下，先整体再局部</li><li>先标签，再 CSS 美化</li></ol><p><img src="https://img.777nx.cn/test/1680318667113.png" alt="1680318667113"></p><h3 id="HTML标签">HTML标签</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">h1</span>&gt;</span>在希望的田野上 | 湖北秋收开镰 各地多举措保增产增收<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span>&gt;</span>来源：央视网 | 2222年12月12日 12:12:12<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">p</span>&gt;</span><span class="tag">&lt;<span class="name">strong</span>&gt;</span>央视网消息：<span class="tag">&lt;/<span class="name">strong</span>&gt;</span>眼下，湖北省秋收开镰已有一周多的时间。水稻收割已经超过四成，玉米收割七成。湖北省通过大力推广新品种水稻，建设高标准农田等一系列措施，为秋粮稳产提供有力支撑。<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">p</span>&gt;</span>中稻占据了湖北全年粮食产量的一半以上。在湖北的主产区荆门市，370万亩中稻已经收割四成以上。<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;pic&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;./1.jpg&quot;</span> <span class="attr">alt</span>=<span class="string">&quot;&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">p</span>&gt;</span>王化林说的新品种，是湖北省研发的杂交水稻“华夏香丝”，不仅产量高，还具有抗病、抗倒、抗高温的特性。在荆门漳河镇的一工程示范田内，像“华夏香丝”这样抗旱节水的品种还有20多个，这些水稻新品将在荆门全面推广，确保来年增产增收。<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">p</span>&gt;</span>此外，湖北还大力推进高标准农田建设。截至今年6月，已建成3980万亩高标准农田。目前，湖北全省仍有1800多万亩中稻正在有序收割中，预计10月中旬收割完毕。<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="CSS样式">CSS样式</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">h1</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">text-align</span>: center;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-weight</span>: <span class="number">400</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">30px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="number">#333</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">div</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">14px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="number">#999</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">p</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">text-indent</span>: <span class="number">2em</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">18px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="number">#333</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="comment">/* div &#123;</span></span></span><br><span class="line"><span class="comment"><span class="language-css">    text-align: center;</span></span></span><br><span class="line"><span class="comment"><span class="language-css">  &#125; */</span></span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.pic</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">text-align</span>: center;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure><h2 id="08-综合案例二-CSS简介">08-综合案例二-CSS简介</h2><p><img src="https://img.777nx.cn/test/1680318751246.png" alt="1680318751246"></p><h3 id="HTML标签-2">HTML标签</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">h1</span>&gt;</span>CSS（层叠样式表）<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">p</span>&gt;</span>层叠样式表 (Cascading Style Sheets，缩写为 CSS），是一种 <span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>样式表<span class="tag">&lt;/<span class="name">a</span>&gt;</span> 语言，用来描述 HTML 或 XML（包括如 SVG、MathML、XHTML 之类的 XML 分支语言）文档的呈现。CSS 描述了在屏幕、纸质、音频等其它媒体上的元素应该如何被渲染的问题。<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">p</span>&gt;</span><span class="tag">&lt;<span class="name">strong</span>&gt;</span>CSS 是开放网络的核心语言之一<span class="tag">&lt;/<span class="name">strong</span>&gt;</span>，由 W3C 规范 实现跨浏览器的标准化。CSS 节省了大量的工作。 样式可以通过定义保存在外部.css 文件中，同时控制多个网页的布局，这意味着开发者不必经历在所有网页上编辑布局的麻烦。CSS 被分为不同等级：CSS1 现已废弃， CSS2.1 是推荐标准， CSS3 分成多个小模块且正在标准化中。<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">ul</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">li</span>&gt;</span>CSS 介绍 如果你是 Web 开发的新手，请务必阅读我们的 CSS 基础 文章以学习 CSS 的含义和用法。<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">li</span>&gt;</span>CSS 教程 我们的 CSS 学习区 包含了丰富的教程，它们覆盖了全部基础知识，能使你在 CSS 之路上从初出茅庐到游刃有余。<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">li</span>&gt;</span>CSS 参考 针对资深 Web 开发者的 <span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>详细参考手册<span class="tag">&lt;/<span class="name">a</span>&gt;</span> ，描述了 CSS 的各个属性与概念。<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">ul</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="CSS样式-2">CSS样式</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">h1</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="number">#333</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">p</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">text-indent</span>: <span class="number">2em</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">14px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="number">#444</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">line-height</span>: <span class="number">30px</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">a</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="number">#0069c2</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-tag">li</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">14px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="number">#444</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">line-height</span>: <span class="number">30px</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">CSS基础</summary>
    
    
    
    <category term="前端" scheme="https://www.777nx.cn/categories/%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="CSS" scheme="https://www.777nx.cn/tags/CSS/"/>
    
  </entry>
  
  <entry>
    <title>千年之恋注册页面</title>
    <link href="https://www.777nx.cn/posts/67642788.html"/>
    <id>https://www.777nx.cn/posts/67642788.html</id>
    <published>2024-11-27T03:25:36.000Z</published>
    <updated>2026-10-15T06:19:20.360Z</updated>
    
    <content type="html"><![CDATA[<p>本篇文章我们来实现一个千年之恋的登录注册页面(仅使用了HTML+CSS)，这个案例充分使用到了表单标签，这对于刚学习表单标签的朋友练习难度刚刚好，接下来我们来看看如何实现这个页面的效果吧。</p><p>这里是网页页面+图片素材，需要的自取噢：</p><p>链接：<a href="https://777nx.lanzouw.com/iXq6P2gfih5e">https://777nx.lanzouw.com/iXq6P2gfih5e</a><br>提取码：2024</p><h2 id="案例图">案例图</h2><p><img src="https://img.777nx.cn/test/image-20241127112248579.png" alt="image-20241127112248579"></p><h2 id="源代码">源代码</h2><h3 id="HTML代码部分">HTML代码部分</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span> <span class="attr">lang</span>=<span class="string">&quot;en&quot;</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">title</span>&gt;</span>千年之恋<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">link</span> <span class="attr">rel</span>=<span class="string">&quot;stylesheet&quot;</span> <span class="attr">href</span>=<span class="string">&quot;./千年之恋.css&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!-- 头部 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;header&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;./images/logo.jpg&quot;</span> <span class="attr">alt</span>=<span class="string">&quot;&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"></span><br><span class="line">    <span class="comment">&lt;!-- 导航 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;nav&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">ul</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>首页<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>会员<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>活动<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>直播<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>视频<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">li</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;#&quot;</span>&gt;</span>注册<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;/<span class="name">ul</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"></span><br><span class="line">    <span class="comment">&lt;!-- 横幅 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;banner&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;./images/banner.jpg&quot;</span> <span class="attr">alt</span>=<span class="string">&quot;&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"></span><br><span class="line">    <span class="comment">&lt;!-- 主体 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;content&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">h2</span> <span class="attr">class</span>=<span class="string">&quot;step&quot;</span>&gt;</span>注册步骤：<span class="tag">&lt;/<span class="name">h2</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">form</span> <span class="attr">action</span>=<span class="string">&quot;#&quot;</span> <span class="attr">method</span>=<span class="string">&quot;POST&quot;</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">h3</span>&gt;</span>您的账号信息：<span class="tag">&lt;/<span class="name">h3</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">table</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">label</span>&gt;</span>注册方式：<span class="tag">&lt;/<span class="name">label</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">label</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;radio&quot;</span> <span class="attr">name</span>=<span class="string">&quot;mode&quot;</span> <span class="attr">value</span>=<span class="string">&quot;email&quot;</span>&gt;</span> E-mail注册<span class="tag">&lt;/<span class="name">label</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">label</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;radio&quot;</span> <span class="attr">name</span>=<span class="string">&quot;mode&quot;</span> <span class="attr">value</span>=<span class="string">&quot;phone&quot;</span>&gt;</span> 手机号码注册<span class="tag">&lt;/<span class="name">label</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">label</span> <span class="attr">for</span>=<span class="string">&quot;email&quot;</span>&gt;</span>注册邮箱：<span class="tag">&lt;/<span class="name">label</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;text&quot;</span> <span class="attr">id</span>=<span class="string">&quot;email&quot;</span> <span class="attr">name</span>=<span class="string">&quot;email&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">label</span> <span class="attr">for</span>=<span class="string">&quot;phone&quot;</span>&gt;</span>注册手机：<span class="tag">&lt;/<span class="name">label</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;text&quot;</span> <span class="attr">id</span>=<span class="string">&quot;phone&quot;</span> <span class="attr">name</span>=<span class="string">&quot;phone&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">label</span> <span class="attr">for</span>=<span class="string">&quot;password&quot;</span>&gt;</span>登录密码：<span class="tag">&lt;/<span class="name">label</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;text&quot;</span> <span class="attr">id</span>=<span class="string">&quot;password&quot;</span> <span class="attr">name</span>=<span class="string">&quot;password&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">label</span> <span class="attr">for</span>=<span class="string">&quot;verify_password&quot;</span>&gt;</span>验证密码：<span class="tag">&lt;/<span class="name">label</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;text&quot;</span> <span class="attr">id</span>=<span class="string">&quot;verify_password&quot;</span> <span class="attr">name</span>=<span class="string">&quot;verify_password&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">label</span> <span class="attr">for</span>=<span class="string">&quot;nickname&quot;</span>&gt;</span>昵称：<span class="tag">&lt;/<span class="name">label</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;text&quot;</span> <span class="attr">id</span>=<span class="string">&quot;nickname&quot;</span> <span class="attr">name</span>=<span class="string">&quot;nickname&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;/<span class="name">table</span>&gt;</span></span><br><span class="line"></span><br><span class="line">            <span class="tag">&lt;<span class="name">h3</span>&gt;</span>您的个人信息：<span class="tag">&lt;/<span class="name">h3</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">table</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">label</span>&gt;</span>性别：<span class="tag">&lt;/<span class="name">label</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">label</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;radio&quot;</span> <span class="attr">name</span>=<span class="string">&quot;sex&quot;</span> <span class="attr">value</span>=<span class="string">&quot;male&quot;</span>&gt;</span> 男<span class="tag">&lt;/<span class="name">label</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">label</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;radio&quot;</span> <span class="attr">name</span>=<span class="string">&quot;sex&quot;</span> <span class="attr">value</span>=<span class="string">&quot;female&quot;</span>&gt;</span> 女<span class="tag">&lt;/<span class="name">label</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">label</span> <span class="attr">for</span>=<span class="string">&quot;education&quot;</span>&gt;</span>学历：<span class="tag">&lt;/<span class="name">label</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">select</span> <span class="attr">id</span>=<span class="string">&quot;education&quot;</span> <span class="attr">name</span>=<span class="string">&quot;education&quot;</span>&gt;</span></span><br><span class="line">                            <span class="tag">&lt;<span class="name">option</span> <span class="attr">value</span>=<span class="string">&quot;&quot;</span> <span class="attr">disabled</span> <span class="attr">selected</span>&gt;</span>请选择<span class="tag">&lt;/<span class="name">option</span>&gt;</span></span><br><span class="line">                            <span class="tag">&lt;<span class="name">option</span> <span class="attr">value</span>=<span class="string">&quot;1&quot;</span>&gt;</span>中职/高中<span class="tag">&lt;/<span class="name">option</span>&gt;</span></span><br><span class="line">                            <span class="tag">&lt;<span class="name">option</span> <span class="attr">value</span>=<span class="string">&quot;2&quot;</span>&gt;</span>专科/本科<span class="tag">&lt;/<span class="name">option</span>&gt;</span></span><br><span class="line">                            <span class="tag">&lt;<span class="name">option</span> <span class="attr">value</span>=<span class="string">&quot;3&quot;</span>&gt;</span>硕士研究生<span class="tag">&lt;/<span class="name">option</span>&gt;</span></span><br><span class="line">                            <span class="tag">&lt;<span class="name">option</span> <span class="attr">value</span>=<span class="string">&quot;4&quot;</span>&gt;</span>博士研究生<span class="tag">&lt;/<span class="name">option</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;/<span class="name">select</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">label</span> <span class="attr">for</span>=<span class="string">&quot;city&quot;</span>&gt;</span>所在城市：<span class="tag">&lt;/<span class="name">label</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">select</span> <span class="attr">id</span>=<span class="string">&quot;city&quot;</span> <span class="attr">name</span>=<span class="string">&quot;city&quot;</span>&gt;</span></span><br><span class="line">                            <span class="tag">&lt;<span class="name">option</span> <span class="attr">value</span>=<span class="string">&quot;&quot;</span> <span class="attr">disabled</span> <span class="attr">selected</span>&gt;</span>请选择<span class="tag">&lt;/<span class="name">option</span>&gt;</span></span><br><span class="line">                            <span class="tag">&lt;<span class="name">option</span> <span class="attr">value</span>=<span class="string">&quot;1&quot;</span>&gt;</span>北京<span class="tag">&lt;/<span class="name">option</span>&gt;</span></span><br><span class="line">                            <span class="tag">&lt;<span class="name">option</span> <span class="attr">value</span>=<span class="string">&quot;2&quot;</span>&gt;</span>上海<span class="tag">&lt;/<span class="name">option</span>&gt;</span></span><br><span class="line">                            <span class="tag">&lt;<span class="name">option</span> <span class="attr">value</span>=<span class="string">&quot;3&quot;</span>&gt;</span>广州<span class="tag">&lt;/<span class="name">option</span>&gt;</span></span><br><span class="line">                            <span class="tag">&lt;<span class="name">option</span> <span class="attr">value</span>=<span class="string">&quot;4&quot;</span>&gt;</span>深圳<span class="tag">&lt;/<span class="name">option</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;/<span class="name">select</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">label</span>&gt;</span>兴趣爱好：<span class="tag">&lt;/<span class="name">label</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">label</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;checkbox&quot;</span> <span class="attr">name</span>=<span class="string">&quot;hobby&quot;</span> <span class="attr">value</span>=<span class="string">&quot;1&quot;</span>&gt;</span> 足球<span class="tag">&lt;/<span class="name">label</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">label</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;checkbox&quot;</span> <span class="attr">name</span>=<span class="string">&quot;hobby&quot;</span> <span class="attr">value</span>=<span class="string">&quot;2&quot;</span>&gt;</span> 篮球<span class="tag">&lt;/<span class="name">label</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">label</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;checkbox&quot;</span> <span class="attr">name</span>=<span class="string">&quot;hobby&quot;</span> <span class="attr">value</span>=<span class="string">&quot;3&quot;</span>&gt;</span> 游泳<span class="tag">&lt;/<span class="name">label</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">label</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;checkbox&quot;</span> <span class="attr">name</span>=<span class="string">&quot;hobby&quot;</span> <span class="attr">value</span>=<span class="string">&quot;4&quot;</span>&gt;</span> 唱歌<span class="tag">&lt;/<span class="name">label</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">label</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;checkbox&quot;</span> <span class="attr">name</span>=<span class="string">&quot;hobby&quot;</span> <span class="attr">value</span>=<span class="string">&quot;5&quot;</span>&gt;</span> 跑步<span class="tag">&lt;/<span class="name">label</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">label</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;checkbox&quot;</span> <span class="attr">name</span>=<span class="string">&quot;hobby&quot;</span> <span class="attr">value</span>=<span class="string">&quot;6&quot;</span>&gt;</span> 瑜伽<span class="tag">&lt;/<span class="name">label</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">label</span>&gt;</span><span class="tag">&lt;<span class="name">input</span> <span class="attr">type</span>=<span class="string">&quot;checkbox&quot;</span> <span class="attr">name</span>=<span class="string">&quot;hobby&quot;</span> <span class="attr">value</span>=<span class="string">&quot;7&quot;</span>&gt;</span> 其他<span class="tag">&lt;/<span class="name">label</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span><span class="tag">&lt;<span class="name">label</span> <span class="attr">for</span>=<span class="string">&quot;introduction&quot;</span>&gt;</span>自我介绍：<span class="tag">&lt;/<span class="name">label</span>&gt;</span><span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">textarea</span> <span class="attr">id</span>=<span class="string">&quot;introduction&quot;</span> <span class="attr">name</span>=<span class="string">&quot;introduction&quot;</span> <span class="attr">cols</span>=<span class="string">&quot;60&quot;</span> <span class="attr">rows</span>=<span class="string">&quot;8&quot;</span></span></span><br><span class="line"><span class="tag">                            <span class="attr">placeholder</span>=<span class="string">&quot;评论的时候，请遵纪守法并注意语言文明，多给文档分享人一些支持。&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">textarea</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">tr</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;<span class="name">td</span> <span class="attr">colspan</span>=<span class="string">&quot;2&quot;</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">button</span> <span class="attr">class</span>=<span class="string">&quot;btn&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">button</span>&gt;</span></span><br><span class="line">                    <span class="tag">&lt;/<span class="name">td</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">tr</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;/<span class="name">table</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;/<span class="name">form</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"></span><br><span class="line">    <span class="comment">&lt;!-- 页脚 --&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;footer&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">p</span>&gt;</span>Copyright <span class="symbol">&amp;copy;</span> 2024 qingnianzhilian.com, ALL rights reserved.<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">p</span>&gt;</span>2024, 版权所有 千年之恋 萌ICP备20245025号<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="CSS代码部分">CSS代码部分</h3><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br></pre></td><td class="code"><pre><span class="line">* &#123;</span><br><span class="line">    <span class="attribute">margin</span>: <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">box-sizing</span>: border-box;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-tag">body</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">980px</span>;</span><br><span class="line">    <span class="attribute">margin</span>: <span class="number">0</span> auto;</span><br><span class="line">    <span class="attribute">font-family</span>: <span class="string">&quot;微软雅黑&quot;</span>;</span><br><span class="line">    <span class="attribute">font-size</span>: <span class="number">14px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-tag">ul</span> &#123;</span><br><span class="line">    <span class="attribute">list-style</span>: none;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-tag">a</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: white;</span><br><span class="line">    <span class="attribute">text-decoration</span>: none;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.header</span> &#123;</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">20px</span> <span class="number">0</span> <span class="number">10px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.nav</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">48px</span>;</span><br><span class="line">    <span class="attribute">background-color</span>: <span class="number">#fe668f</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.nav</span> <span class="selector-tag">ul</span> &#123;</span><br><span class="line">    <span class="attribute">display</span>: flex;</span><br><span class="line">    <span class="attribute">justify-content</span>: space-around;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.nav</span> <span class="selector-tag">ul</span> <span class="selector-tag">li</span> &#123;</span><br><span class="line">    <span class="attribute">flex</span>: <span class="number">1</span>;</span><br><span class="line">    <span class="attribute">text-align</span>: center;</span><br><span class="line">    <span class="attribute">line-height</span>: <span class="number">48px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.nav</span> <span class="selector-tag">ul</span> <span class="selector-tag">li</span><span class="selector-pseudo">:hover</span> &#123;</span><br><span class="line">    <span class="attribute">background-color</span>: <span class="number">#fe9ab5</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.content</span> &#123;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">934px</span>;</span><br><span class="line">    <span class="attribute">padding-left</span>: <span class="number">150px</span>;</span><br><span class="line">    <span class="attribute">background</span>: <span class="built_in">url</span>(<span class="string">./images/content_bg.jpg</span>) no-repeat;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.content</span> <span class="selector-class">.step</span> &#123;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">80px</span>;</span><br><span class="line">    <span class="attribute">font-size</span>: <span class="number">20px</span>;</span><br><span class="line">    <span class="attribute">line-height</span>: <span class="number">80px</span>;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#dd8787</span>;</span><br><span class="line">    <span class="attribute">background</span>: <span class="built_in">url</span>(<span class="string">./images/step.jpg</span>) no-repeat;</span><br><span class="line">    <span class="attribute">background-position</span>: <span class="number">120px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.content</span> <span class="selector-tag">h3</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">444px</span>;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">45px</span>;</span><br><span class="line">    <span class="attribute">font-size</span>: <span class="number">20px</span>;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#dd8787</span>;</span><br><span class="line">    <span class="attribute">line-height</span>: <span class="number">45px</span>;</span><br><span class="line">    <span class="attribute">border-bottom</span>: <span class="number">2px</span> solid <span class="number">#dd8787</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.content</span> <span class="selector-tag">td</span> &#123;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">50px</span>;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#dd8787</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.content</span> <span class="selector-tag">td</span><span class="selector-pseudo">:first</span>-child &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">120px</span>;</span><br><span class="line">    <span class="attribute">text-align</span>: right;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.content</span> <span class="selector-tag">td</span> <span class="selector-tag">input</span><span class="selector-attr">[type=<span class="string">&quot;text&quot;</span>]</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">320px</span>;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">28px</span>;</span><br><span class="line">    <span class="attribute">border</span>: <span class="number">1px</span> solid <span class="number">#dd8787</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.content</span> <span class="selector-tag">td</span> <span class="selector-tag">input</span><span class="selector-attr">[type=<span class="string">&quot;radio&quot;</span>]</span> &#123;</span><br><span class="line">    <span class="attribute">margin-left</span>: <span class="number">10px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.content</span> <span class="selector-tag">td</span> <span class="selector-tag">input</span><span class="selector-attr">[type=<span class="string">&quot;checkbox&quot;</span>]</span> &#123;</span><br><span class="line">    <span class="attribute">margin-left</span>: <span class="number">5px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.content</span> <span class="selector-tag">td</span> select &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">171px</span>;</span><br><span class="line">    <span class="attribute">border</span>: <span class="number">1px</span> solid <span class="number">#dd8787</span>;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#aaa</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.content</span> <span class="selector-tag">td</span> <span class="selector-tag">textarea</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">380px</span>;</span><br><span class="line">    <span class="attribute">border</span>: <span class="number">1px</span> solid <span class="number">#dd8787</span>;</span><br><span class="line">    <span class="attribute">resize</span>: none;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#aaa</span>;</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">20px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.btn</span> &#123;</span><br><span class="line">    <span class="attribute">border</span>: none;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">409px</span>;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">76px</span>;</span><br><span class="line">    <span class="attribute">background</span>: <span class="built_in">url</span>(<span class="string">./images/btn.jpg</span>) center center no-repeat;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.footer</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">68px</span>;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#fff</span>;</span><br><span class="line">    <span class="attribute">background-color</span>: <span class="number">#de668f</span>;</span><br><span class="line">    <span class="attribute">display</span>: flex;</span><br><span class="line">    <span class="attribute">flex-direction</span>: column;</span><br><span class="line">    <span class="attribute">justify-content</span>: center;</span><br><span class="line">    <span class="attribute">align-items</span>: center;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>如果感兴趣可以去练习一下，不过这些都是学校布置的前端实验课作业，也均是我自己编写的代码，非常初学，现在看这些代码也感觉非常好笑，不过自己毕竟是主学后端，所以前端能做出来这些页面也挺高兴的了。</p><p>接下来就是效果展示了，如果能做到下面图片的效果即可，不必太追求完美。</p><h2 id="效果呈现">效果呈现</h2><p><img src="https://img.777nx.cn/test/image-20241127111737317.png" alt="image-20241127111737317"></p>]]></content>
    
    
    <summary type="html">千年之恋HTML+CSS</summary>
    
    
    
    <category term="前端" scheme="https://www.777nx.cn/categories/%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="HTML" scheme="https://www.777nx.cn/tags/HTML/"/>
    
    <category term="CSS" scheme="https://www.777nx.cn/tags/CSS/"/>
    
  </entry>
  
  <entry>
    <title>git回退代码的n种方式</title>
    <link href="https://www.777nx.cn/posts/6a7d6b62.html"/>
    <id>https://www.777nx.cn/posts/6a7d6b62.html</id>
    <published>2024-09-09T06:58:27.000Z</published>
    <updated>2026-10-15T06:19:20.359Z</updated>
    
    <content type="html"><![CDATA[<h2 id="内容概要">内容概要</h2><p>介绍<code>git restore</code>; <code>git reset</code>; <code>git revert</code> 的用法以及常见场景下回退代码的方式。也会简单介绍一些<a href="https://so.csdn.net/so/search?q=git&amp;spm=1001.2101.3001.7020">git</a>的基础知识。</p><h2 id="正文">正文</h2><ol><li><code>git restore</code></li></ol><ul><li><code>git restore file1</code>: 针对暂存区的文件file1，将它回退到工作区，且撤销其修改。就是把你<code>git add</code>之后的文件变成<code>add</code>之前，同时你的修改会丢失</li><li><code>git restore --staged file1</code>：针对暂存区的文件 file1，回退到工作区，但是保留修改。把你<code>git add</code>之后的文件变成<code>add</code>之前，但是你的修改会保留</li><li>备注：<ul><li>工作区：就是你本地的代码，未使用<code>git add</code>操作的文件所在位置。</li><li>暂存区：你使用<code>git add</code>添加之后的文件所在位置</li></ul></li></ul><ol start="2"><li><code>git reset</code></li></ol><ul><li><code>git reset commitId --soft</code>：回退当前代码仓库到指定提交commitId，当前HEAD和commitId之间的修改会保留，这些修改会在暂存区。就是保留了<code>add</code>的状态</li><li><code>git reset commitId --hard</code>：回退当前代码仓库的代码到指定commitId，这之间的代码会丢失。</li><li><code>git reset commitId --mixed</code>：回退代码到connitId，修改保存在工作区，就是没有<code>add</code>的状态</li></ul><ol start="3"><li><code>git revert</code></li></ol><ul><li><code>git revert commitId</code>：撤销指定提交commitId。会建立一个新的commit，这个commit的内容就是指定commitId的反向，也就是提交一个新的commit把commitId对应的修改内容还原。</li></ul><h2 id="常见代码回退场景">常见代码回退场景</h2><ol><li>本地有修改，未执行<code>git add</code>，想撤回修改。</li></ol><p>执行命令 <code>git restore file1</code></p><ol start="2"><li>本地修改，执行了 <code>git add</code>，想撤回。</li></ol><p>执行命令<code>git restore --staged file1</code></p><ol start="3"><li>本地修改，已执行 <code>git add</code>和<code>git commit</code>，想撤回。</li></ol><ul><li>如果要保留<code>add</code>的状态，就执行 <code>git reset --mixed</code></li><li>如果不想保留<code>add</code>的状态，但是想保留修改。<code>git reset --soft HEAD^</code> 这里的<code>HEAD^</code>指最近一次<code>commit</code>，也可以直接用<code>commitId</code></li><li>如果不想保留修改，直接舍弃代码。<code>git reset --hard HEAD^</code></li></ul><ol start="4"><li>本地修改，执行了<code>git add</code>和<code>git commit</code>，并且执行了<code>git push</code>，但是此时其他人还未提交代码到同一分支。想撤回。</li></ol><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">根据你是否想要保留修改代码，自由选择 --soft --mixed --hard</span></span><br><span class="line">git reset --soft HEAD^;</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">执行要做的修改等操作，重新提交，或者丢弃代码</span></span><br><span class="line">git push -f;</span><br></pre></td></tr></table></figure><ol start="5"><li>本地修改，执行了<code>git add</code>和<code>git commit</code>，并且执行了<code>git push</code>，其他人也提交了代码到同一分支；或者过了很久，自己又提交了好多次commit，想撤回指定的这个commit，但是不撤回之后的commit。</li></ol><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">先查看日志，找到commit n可以指定查看多少条日志</span></span><br><span class="line">git reflog -n</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">复制对应commitId</span></span><br><span class="line">git revert commitId</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">如果有冲突，解决冲突，如果没有直接push</span></span><br><span class="line">git push;</span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">git代码撤销回滚只看这一篇就足够了!</summary>
    
    
    
    <category term="Java" scheme="https://www.777nx.cn/categories/Java/"/>
    
    
    <category term="Git" scheme="https://www.777nx.cn/tags/Git/"/>
    
  </entry>
  
  <entry>
    <title>安装Docker教程及yum报错</title>
    <link href="https://www.777nx.cn/posts/1df8e37.html"/>
    <id>https://www.777nx.cn/posts/1df8e37.html</id>
    <published>2024-07-22T10:11:35.000Z</published>
    <updated>2026-10-15T06:19:20.359Z</updated>
    
    <content type="html"><![CDATA[<p>前提：Linux环境已经搭建好，安装了VMware和MobarXterm</p><h2 id="卸载旧版">卸载旧版</h2><p>首先如果系统中已经存在旧的Docker，则先卸载：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">yum remove docker \</span><br><span class="line">    docker-client \</span><br><span class="line">    docker-client-latest \</span><br><span class="line">    docker-common \</span><br><span class="line">    docker-latest \</span><br><span class="line">    docker-latest-logrotate \</span><br><span class="line">    docker-logrotate \</span><br><span class="line">    docker-engine</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/Snipaste_2024-07-22_17-22-03.png" alt="Snipaste_2024-07-22_17-22-03"></p><h2 id="配置Docker的yum库">配置Docker的yum库</h2><p>首先要安装一个yum工具：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum install -y yum-utils</span><br></pre></td></tr></table></figure><p>如果出现下述报错：</p><p><img src="https://img.777nx.cn/test/Snipaste_2024-07-22_17-22-33.png" alt="Snipaste_2024-07-22_17-22-33"></p><p>原因：服务器没法访问外面的网络，所以需要配置镜像源</p><h3 id="解决方案">解决方案</h3><p>先进入目录 /etc/yum.repos.d</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> /etc/yum.repos.d</span><br></pre></td></tr></table></figure><p>编辑替换：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vi /etc/yum.repos.d/CentOS-Base.repo</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/image-20240722183222963.png" alt="image-20240722183222963"></p><p>替换内容为：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line">[base]</span><br><span class="line">name=CentOS-<span class="variable">$releasever</span> - Base</span><br><span class="line">baseurl=https://mirrors.aliyun.com/centos/<span class="variable">$releasever</span>/os/<span class="variable">$basearch</span>/</span><br><span class="line">gpgcheck=1</span><br><span class="line">gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7</span><br><span class="line"> </span><br><span class="line">[updates]</span><br><span class="line">name=CentOS-<span class="variable">$releasever</span> - Updates</span><br><span class="line">baseurl=https://mirrors.aliyun.com/centos/<span class="variable">$releasever</span>/updates/<span class="variable">$basearch</span>/</span><br><span class="line">gpgcheck=1</span><br><span class="line">gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7</span><br><span class="line"> </span><br><span class="line">[extras]</span><br><span class="line">name=CentOS-<span class="variable">$releasever</span> - Extras</span><br><span class="line">baseurl=https://mirrors.aliyun.com/centos/<span class="variable">$releasever</span>/extras/<span class="variable">$basearch</span>/</span><br><span class="line">gpgcheck=1</span><br><span class="line">gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7</span><br><span class="line"> </span><br><span class="line">[centosplus]</span><br><span class="line">name=CentOS-<span class="variable">$releasever</span> - Plus</span><br><span class="line">baseurl=https://mirrors.aliyun.com/centos/<span class="variable">$releasever</span>/centosplus/<span class="variable">$basearch</span>/</span><br><span class="line">gpgcheck=1</span><br><span class="line">enabled=0</span><br><span class="line">gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7</span><br></pre></td></tr></table></figure><p>清理 yum 缓存：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum clean all</span><br></pre></td></tr></table></figure><p>再次输入命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum install -y yum-utils</span><br></pre></td></tr></table></figure><p>成功解决！！！</p><p><img src="https://img.777nx.cn/test/Snipaste_2024-07-22_17-25-39.png" alt="Snipaste_2024-07-22_17-25-39"></p><p>安装成功后，执行命令，配置Docker的yum源：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo</span><br></pre></td></tr></table></figure><h2 id="安装Docker">安装Docker</h2><p>最后，执行命令，安装Docker</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/Snipaste_2024-07-22_17-32-01.png" alt="Snipaste_2024-07-22_17-32-01"></p><h2 id="启动和校验">启动和校验</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 启动Docker</span></span><br><span class="line">systemctl start docker</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 停止Docker</span></span><br><span class="line">systemctl stop docker</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 重启</span></span><br><span class="line">systemctl restart docker</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 设置开机自启</span></span><br><span class="line">systemctl <span class="built_in">enable</span> docker</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 执行docker ps命令，如果不报错，说明安装启动成功</span></span><br><span class="line">docker ps</span><br></pre></td></tr></table></figure><h2 id="配置镜像加速">配置镜像加速</h2><p>镜像地址可能会变更，如果失效可以百度找最新的docker镜像。</p><p>配置镜像步骤如下：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建目录</span></span><br><span class="line"><span class="built_in">mkdir</span> -p /etc/docker</span><br><span class="line"></span><br><span class="line"><span class="comment"># 复制内容</span></span><br><span class="line"><span class="built_in">tee</span> /etc/docker/daemon.json &lt;&lt;-<span class="string">&#x27;EOF&#x27;</span></span><br><span class="line">&#123;</span><br><span class="line">    <span class="string">&quot;registry-mirrors&quot;</span>: [</span><br><span class="line">        <span class="string">&quot;http://hub-mirror.c.163.com&quot;</span>,</span><br><span class="line">        <span class="string">&quot;https://mirrors.tuna.tsinghua.edu.cn&quot;</span>,</span><br><span class="line">        <span class="string">&quot;http://mirrors.sohu.com&quot;</span>,</span><br><span class="line">        <span class="string">&quot;https://ustc-edu-cn.mirror.aliyuncs.com&quot;</span>,</span><br><span class="line">        <span class="string">&quot;https://ccr.ccs.tencentyun.com&quot;</span>,</span><br><span class="line">        <span class="string">&quot;https://docker.m.daocloud.io&quot;</span>,</span><br><span class="line">        <span class="string">&quot;https://docker.awsl9527.cn&quot;</span></span><br><span class="line">    ]</span><br><span class="line">&#125;</span><br><span class="line">EOF</span><br><span class="line"></span><br><span class="line"><span class="comment"># 重新加载配置</span></span><br><span class="line">systemctl daemon-reload</span><br><span class="line"></span><br><span class="line"><span class="comment"># 重启Docker</span></span><br><span class="line">systemctl restart docker</span><br></pre></td></tr></table></figure><h2 id="配置镜像加速-阿里云已停用"><s>配置镜像加速(阿里云已停用)</s></h2><p>这里以阿里云镜像加速为例。</p><h3 id="注册阿里云账号">注册阿里云账号</h3><p>首先访问阿里云网站:</p><p><a href="https://www.aliyun.com/">https://www.aliyun.com/</a></p><p>注册一个账号。</p><h3 id="开通镜像服务">开通镜像服务</h3><p>在首页的产品中，找到阿里云的<strong>容器镜像服务</strong>：</p><p><img src="https://img.777nx.cn/test/2a920bf4-4bea-4812-a3f4-eeee8b3639af.png" alt="2a920bf4-4bea-4812-a3f4-eeee8b3639af"></p><p>点击后进入控制台：</p><p><img src="https://img.777nx.cn/test/7e3529cb-d381-408e-91b1-a0bfa43bce55.png" alt="7e3529cb-d381-408e-91b1-a0bfa43bce55"></p><p>首次可能需要选择立刻开通，然后进入控制台。</p><h3 id="配置镜像加速-2">配置镜像加速</h3><p>找到<strong>镜像工具</strong>下的<strong>镜像加速器</strong>：</p><p><img src="https://img.777nx.cn/test/95541290-c223-4c0d-83bb-c2de9863153b.png" alt="95541290-c223-4c0d-83bb-c2de9863153b"></p><p>页面向下滚动，即可找到配置的文档说明：</p><p><img src="https://img.777nx.cn/test/41ad2788-d300-4cee-9806-cfa29643768e.png" alt="41ad2788-d300-4cee-9806-cfa29643768e"></p><p>具体命令如下：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建目录</span></span><br><span class="line"><span class="built_in">mkdir</span> -p /etc/docker</span><br><span class="line"></span><br><span class="line"><span class="comment"># 复制内容，注意把其中的镜像加速地址改成你自己的</span></span><br><span class="line"><span class="built_in">tee</span> /etc/docker/daemon.json &lt;&lt;-<span class="string">&#x27;EOF&#x27;</span></span><br><span class="line">&#123;</span><br><span class="line">  <span class="string">&quot;registry-mirrors&quot;</span>: [<span class="string">&quot;https://xxxx.mirror.aliyuncs.com&quot;</span>]</span><br><span class="line">&#125;</span><br><span class="line">EOF</span><br><span class="line"></span><br><span class="line"><span class="comment"># 重新加载配置</span></span><br><span class="line">systemctl daemon-reload</span><br><span class="line"></span><br><span class="line"><span class="comment"># 重启Docker</span></span><br><span class="line">systemctl restart docker</span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">Could not retrieve mirrorlist http://mirrorlist.centos.org 的解决方案</summary>
    
    
    
    <category term="Java" scheme="https://www.777nx.cn/categories/Java/"/>
    
    
    <category term="Docker" scheme="https://www.777nx.cn/tags/Docker/"/>
    
  </entry>
  
  <entry>
    <title>清理mstsc远程桌面连接的记录</title>
    <link href="https://www.777nx.cn/posts/19d120b2.html"/>
    <id>https://www.777nx.cn/posts/19d120b2.html</id>
    <published>2024-03-12T13:33:09.000Z</published>
    <updated>2026-10-15T06:19:20.361Z</updated>
    
    <content type="html"><![CDATA[<h2 id="场景">场景</h2><p>Windows自带mstsc远程桌面连接，用的时间长了后，记录会越来越多，有些服务器已经不在使用，或者IP已经变化，但是仍然还保留着记录，以至于添加新的服务器都无法记录IP</p><p><img src="https://img.777nx.cn/test/image-20240312212446388.png" alt="image-20240312212446388"></p><h2 id="解决方案">解决方案</h2><ol><li>先关闭所有的远程桌面连接</li><li>按Win+R键，调出运行窗口</li><li>输入regedit，调出注册表编辑器</li></ol><p><img src="https://img.777nx.cn/test/image-20240312212553318.png" alt="image-20240312212553318"></p><ol start="4"><li>在注册表管理器上方输入“计算机\HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default”，可以看到所有的远程记录</li></ol><p><img src="https://img.777nx.cn/test/image-20240312212715983.png" alt="image-20240312212715983"></p><ol start="5"><li>选择不需要保存的，右键删除即可</li></ol><p><img src="https://img.777nx.cn/test/image-20240312212910253.png" alt="image-20240312212910253"></p>]]></content>
    
    
    <summary type="html">怎么清除远程连接记录</summary>
    
    
    
    <category term="计算机基础" scheme="https://www.777nx.cn/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/"/>
    
    
    <category term="远程桌面" scheme="https://www.777nx.cn/tags/%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2/"/>
    
  </entry>
  
  <entry>
    <title>一键部署幻兽帕鲁服务器</title>
    <link href="https://www.777nx.cn/posts/c8a08c83.html"/>
    <id>https://www.777nx.cn/posts/c8a08c83.html</id>
    <published>2024-01-27T09:38:13.000Z</published>
    <updated>2026-10-15T06:19:20.361Z</updated>
    
    <content type="html"><![CDATA[<p>【腾讯云】热卖套餐配置低至32元/月起，助您一键开服，即刻畅玩，立享优惠！<a href="https://curl.qcloud.com/gDaKlZ8V">https://curl.qcloud.com/gDaKlZ8V</a></p><blockquote><p><a href="https://cloud.tencent.com/act/pro/bestselling?from_column=20421&amp;from=20421#YOUXI">【游戏联机服务器】专区产品（4H/8核/16核服务器）</a></p></blockquote><h2 id="一键自动化部署幻兽帕鲁">一键自动化部署幻兽帕鲁</h2><p>运行一键开服命令(会链接steam服务器 有概率会网络错误失败啥的 重试几次就好了或者重启系统后再重试)</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget -O - http://www.ninege.top:33333/file/file/download/322 |sh</span><br></pre></td></tr></table></figure><h2 id="配置更改-服务器密码-管理员密码-倍率等">配置更改(服务器密码 管理员密码 倍率等)</h2><p>修改配置文件(初次打开应该是空的)</p><p><code>/home/ubuntu/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini</code> 可以复制 <code>/home/ubuntu/Steam/steamapps/common/PalServer/DefaultPalWorldSettings.ini</code> 的内容修改后改名进去覆盖</p><p><img src="https://img.777nx.cn/test/image-20240127171746751.png" alt="image-20240127171746751"></p><p><img src="https://img.777nx.cn/test/image-20240127171949463.png" alt="image-20240127171949463"></p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cp /home/ubuntu/Steam/steamapps/common/PalServer/DefaultPalWorldSettings.ini /home/ubuntu/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini</span><br></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim /home/ubuntu/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini</span><br></pre></td></tr></table></figure><blockquote><p>注：<code>cp</code>用于拷贝文件，例如将<code>test1</code>目录复制到<code>test2</code>目录</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cp -r /mydata/tes1 /mydata/test2</span><br></pre></td></tr></table></figure></blockquote><p>配置文件内容</p><figure class="highlight jboss-cli"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[<span class="string">/Script/Pal.PalGameWorldSettings</span>]</span><br><span class="line">OptionSettings=<span class="params">(<span class="attr">Difficulty</span>=None,<span class="attr">DayTimeSpeedRate</span>=1.000000,<span class="attr">NightTimeSpeedRate</span>=1.000000,<span class="attr">ExpRate</span>=1.000000,<span class="attr">PalCaptureRate</span>=1.000000,<span class="attr">PalSpawnNumRate</span>=1.000000,<span class="attr">PalDamageRateAttack</span>=1.000000,<span class="attr">PalDamageRateDefense</span>=1.000000,<span class="attr">PlayerDamageRateAttack</span>=1.000000,<span class="attr">PlayerDamageRateDefense</span>=1.000000,<span class="attr">PlayerStomachDecreaceRate</span>=1.000000,<span class="attr">PlayerStaminaDecreaceRate</span>=1.000000,<span class="attr">PlayerAutoHPRegeneRate</span>=1.000000,<span class="attr">PlayerAutoHpRegeneRateInSleep</span>=1.000000,<span class="attr">PalStomachDecreaceRate</span>=1.000000,<span class="attr">PalStaminaDecreaceRate</span>=1.000000,<span class="attr">PalAutoHPRegeneRate</span>=1.000000,<span class="attr">PalAutoHpRegeneRateInSleep</span>=1.000000,<span class="attr">BuildObjectDamageRate</span>=1.000000,<span class="attr">BuildObjectDeteriorationDamageRate</span>=1.000000,<span class="attr">CollectionDropRate</span>=1.000000,<span class="attr">CollectionObjectHpRate</span>=1.000000,<span class="attr">CollectionObjectRespawnSpeedRate</span>=1.000000,<span class="attr">EnemyDropItemRate</span>=1.000000,<span class="attr">DeathPenalty</span>=All,<span class="attr">bEnablePlayerToPlayerDamage</span>=False,<span class="attr">bEnableFriendlyFire</span>=False,<span class="attr">bEnableInvaderEnemy</span>=True,<span class="attr">bActiveUNKO</span>=False,<span class="attr">bEnableAimAssistPad</span>=True,<span class="attr">bEnableAimAssistKeyboard</span>=False,<span class="attr">DropItemMaxNum</span>=3000,<span class="attr">DropItemMaxNum_UNKO</span>=100,<span class="attr">BaseCampMaxNum</span>=128,<span class="attr">BaseCampWorkerMaxNum</span>=15,<span class="attr">DropItemAliveMaxHours</span>=1.000000,<span class="attr">bAutoResetGuildNoOnlinePlayers</span>=False,<span class="attr">AutoResetGuildTimeNoOnlinePlayers</span>=72.000000,<span class="attr">GuildPlayerMaxNum</span>=20,<span class="attr">PalEggDefaultHatchingTime</span>=72.000000,<span class="attr">WorkSpeedRate</span>=1.000000,<span class="attr">bIsMultiplay</span>=False,<span class="attr">bIsPvP</span>=False,<span class="attr">bCanPickupOtherGuildDeathPenaltyDrop</span>=False,<span class="attr">bEnableNonLoginPenalty</span>=True,<span class="attr">bEnableFastTravel</span>=True,<span class="attr">bIsStartLocationSelectByMap</span>=True,<span class="attr">bExistPlayerAfterLogout</span>=False,<span class="attr">bEnableDefenseOtherGuildPlayer</span>=False,<span class="attr">CoopPlayerMaxNum</span>=4,<span class="attr">ServerPlayerMaxNum</span>=32,<span class="attr">ServerName</span>=&quot;Default Palworld Server&quot;,<span class="attr">ServerDescription</span>=&quot;&quot;,<span class="attr">AdminPassword</span>=&quot;&quot;,<span class="attr">ServerPassword</span>=&quot;&quot;,<span class="attr">PublicPort</span>=8211,<span class="attr">PublicIP</span>=&quot;&quot;,<span class="attr">RCONEnabled</span>=False,<span class="attr">RCONPort</span>=25575,<span class="attr">Region</span>=&quot;&quot;,<span class="attr">bUseAuth</span>=True,<span class="attr">BanListURL</span>=&quot;https://api.palworldgame.com/api/banlist.txt&quot;)</span></span><br></pre></td></tr></table></figure><p>官方配置说明</p><p><a href="https://tech.palworldgame.com/optimize-game-balance">https://tech.palworldgame.com/optimize-game-balance</a></p><p>配置文件中英文对照</p><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">; 该配置文件是默认服务器设置的示例。</span></span><br><span class="line"><span class="comment">; 对该文件的更改不会反映在服务器上。</span></span><br><span class="line"><span class="comment">; 要更改服务器设置，请修改 Pal/Saved/Config/WindowsServer/PalWorldSettings.ini。</span></span><br><span class="line"><span class="section">[/Script/Pal.PalGameWorldSettings]</span></span><br><span class="line"><span class="attr">OptionSettings</span>=(</span><br><span class="line"><span class="attr">Difficulty</span>=None,</span><br><span class="line"><span class="comment">; 难度None或Difficulty</span></span><br><span class="line"><span class="attr">DayTimeSpeedRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 白天流逝速度</span></span><br><span class="line"><span class="attr">NightTimeSpeedRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 夜晚流逝速度</span></span><br><span class="line"><span class="attr">ExpRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 经验值倍率</span></span><br><span class="line"><span class="attr">PalCaptureRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 捕捉概率倍率</span></span><br><span class="line"><span class="attr">PalSpawnNumRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 帕鲁出现数量倍率</span></span><br><span class="line"><span class="attr">PalDamageRateAttack</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 帕鲁攻击伤害倍率</span></span><br><span class="line"><span class="attr">PalDamageRateDefense</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 帕鲁承受伤害倍率</span></span><br><span class="line"><span class="attr">PlayerDamageRateAttack</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 玩家攻击伤害倍率</span></span><br><span class="line"><span class="attr">PlayerDamageRateDefense</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 玩家承受伤害倍率</span></span><br><span class="line"><span class="attr">PlayerStomachDecreaceRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 玩家饱食度降低倍率</span></span><br><span class="line"><span class="attr">PlayerStaminaDecreaceRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 玩家耐力倍率</span></span><br><span class="line"><span class="attr">PlayerAutoHPRegeneRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 玩家生命值恢复倍率</span></span><br><span class="line"><span class="attr">PlayerAutoHpRegeneRateInSleep</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 玩家睡眠时生命恢复倍率</span></span><br><span class="line"><span class="attr">PalStomachDecreaceRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 帕鲁饱食度降低倍率</span></span><br><span class="line"><span class="attr">PalStaminaDecreaceRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 帕鲁耐力降低倍率</span></span><br><span class="line"><span class="attr">PalAutoHPRegeneRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 帕鲁生命值自然恢复倍率</span></span><br><span class="line"><span class="attr">PalAutoHpRegeneRateInSleep</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 帕鲁睡眠时生命恢复倍率</span></span><br><span class="line"><span class="attr">BuildObjectDamageRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 对建筑物伤害倍率</span></span><br><span class="line"><span class="attr">BuildObjectDeteriorationDamageRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 建筑物劣化速度倍率</span></span><br><span class="line"><span class="attr">CollectionDropRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 可采集物品掉落倍率</span></span><br><span class="line"><span class="attr">CollectionObjectHpRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 可采集物品生命值倍率</span></span><br><span class="line"><span class="attr">CollectionObjectRespawnSpeedRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 可采集物品生成速率</span></span><br><span class="line"><span class="attr">EnemyDropItemRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 敌方掉落物品率</span></span><br><span class="line"><span class="attr">DeathPenalty</span>=All,</span><br><span class="line"><span class="comment">; 死亡惩罚None不掉落Item只掉物品不掉装备ItemAndEquipment掉物品和装备All全都掉</span></span><br><span class="line"><span class="attr">bEnablePlayerToPlayerDamage</span>=<span class="literal">False</span>,</span><br><span class="line"><span class="comment">; 启用玩家对玩家伤害功能</span></span><br><span class="line"><span class="attr">bEnableFriendlyFire</span>=<span class="literal">False</span>,</span><br><span class="line"><span class="comment">; 火焰伤害</span></span><br><span class="line"><span class="attr">bEnableInvaderEnemy</span>=<span class="literal">True</span>,</span><br><span class="line"><span class="comment">; 否会发生袭击事件</span></span><br><span class="line"><span class="attr">bActiveUNKO</span>=<span class="literal">False</span>,</span><br><span class="line"><span class="comment">; ？？</span></span><br><span class="line"><span class="attr">bEnableAimAssistPad</span>=<span class="literal">True</span>,</span><br><span class="line"><span class="comment">; 启用瞄准辅助手柄</span></span><br><span class="line"><span class="attr">bEnableAimAssistKeyboard</span>=<span class="literal">False</span>,</span><br><span class="line"><span class="comment">; 准星开启</span></span><br><span class="line"><span class="attr">DropItemMaxNum</span>=<span class="number">3000</span>,</span><br><span class="line"><span class="comment">; 掉落物品最大数量</span></span><br><span class="line"><span class="attr">DropItemMaxNum_UNKO</span>=<span class="number">100</span>,</span><br><span class="line"><span class="comment">; 掉落物品最大数量_UNKO</span></span><br><span class="line"><span class="attr">BaseCampMaxNum</span>=<span class="number">128</span>,</span><br><span class="line"><span class="comment">; 大本营最大数</span></span><br><span class="line"><span class="attr">BaseCampWorkerMaxNum</span>=<span class="number">15</span>,</span><br><span class="line"><span class="comment">; 大本营工人最多人数</span></span><br><span class="line"><span class="attr">DropItemAliveMaxHours</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 掉落物品存在最大时长</span></span><br><span class="line"><span class="attr">bAutoResetGuildNoOnlinePlayers</span>=<span class="literal">False</span>,</span><br><span class="line"><span class="comment">; 自动重置没有在线玩家的公会</span></span><br><span class="line"><span class="attr">AutoResetGuildTimeNoOnlinePlayers</span>=<span class="number">72.000000</span>,</span><br><span class="line"><span class="comment">; 无在线玩家时自动重置生成时间</span></span><br><span class="line"><span class="attr">GuildPlayerMaxNum</span>=<span class="number">20</span>,</span><br><span class="line"><span class="comment">; 公会玩家最大数量</span></span><br><span class="line"><span class="attr">PalEggDefaultHatchingTime</span>=<span class="number">72.000000</span>,</span><br><span class="line"><span class="comment">; 帕鲁蛋默认孵化时间</span></span><br><span class="line"><span class="attr">WorkSpeedRate</span>=<span class="number">1.000000</span>,</span><br><span class="line"><span class="comment">; 工作速率</span></span><br><span class="line"><span class="attr">bIsMultiplay</span>=<span class="literal">False</span>,</span><br><span class="line"><span class="comment">; 多人游戏</span></span><br><span class="line"><span class="attr">bIsPvP</span>=<span class="literal">False</span>,</span><br><span class="line"><span class="comment">; PvP</span></span><br><span class="line"><span class="attr">bCanPickupOtherGuildDeathPenaltyDrop</span>=<span class="literal">False</span>,</span><br><span class="line"><span class="comment">; 可拾取其他公会的死亡掉落物</span></span><br><span class="line"><span class="attr">bEnableNonLoginPenalty</span>=<span class="literal">True</span>,</span><br><span class="line"><span class="comment">; 启用不登录惩罚</span></span><br><span class="line"><span class="attr">bEnableFastTravel</span>=<span class="literal">True</span>,</span><br><span class="line"><span class="comment">; 启用快速旅行</span></span><br><span class="line"><span class="attr">bIsStartLocationSelectByMap</span>=<span class="literal">True</span>,</span><br><span class="line"><span class="comment">; 通过地图选择起始位置</span></span><br><span class="line"><span class="attr">bExistPlayerAfterLogout</span>=<span class="literal">False</span>,</span><br><span class="line"><span class="comment">; 注销后玩家仍然存在</span></span><br><span class="line"><span class="attr">bEnableDefenseOtherGuildPlayer</span>=<span class="literal">False</span>,</span><br><span class="line"><span class="comment">; 启用防御其他公会玩家功能</span></span><br><span class="line"><span class="attr">CoopPlayerMaxNum</span>=<span class="number">4</span>,</span><br><span class="line"><span class="comment">; 合作玩家最大人数</span></span><br><span class="line"><span class="attr">ServerPlayerMaxNum</span>=<span class="number">32</span>,</span><br><span class="line"><span class="comment">; 服务器玩家最大人数</span></span><br><span class="line"><span class="attr">ServerName</span>=<span class="string">&quot;Default Palworld Server&quot;</span>,</span><br><span class="line"><span class="comment">; 服务器名称</span></span><br><span class="line"><span class="attr">ServerDescription</span>=<span class="string">&quot;&quot;</span>,</span><br><span class="line"><span class="comment">; 服务器描述</span></span><br><span class="line"><span class="attr">AdminPassword</span>=<span class="string">&quot;&quot;</span>,</span><br><span class="line"><span class="comment">; 管理员密码</span></span><br><span class="line"><span class="attr">ServerPassword</span>=<span class="string">&quot;&quot;</span>,</span><br><span class="line"><span class="comment">; 服务器密码</span></span><br><span class="line"><span class="attr">PublicPort</span>=<span class="number">8211</span>,</span><br><span class="line"><span class="comment">; 服务器端口</span></span><br><span class="line"><span class="attr">PublicIP</span>=<span class="string">&quot;&quot;</span>,</span><br><span class="line"><span class="comment">; 服务器ip</span></span><br><span class="line"><span class="attr">RCONEnabled</span>=<span class="literal">False</span>,</span><br><span class="line"><span class="comment">; 启用 RCON</span></span><br><span class="line"><span class="attr">RCONPort</span>=<span class="number">25575</span>,</span><br><span class="line"><span class="comment">; RCON端口</span></span><br><span class="line"><span class="attr">Region</span>=<span class="string">&quot;&quot;</span>,</span><br><span class="line"><span class="comment">; 地区</span></span><br><span class="line"><span class="attr">bUseAuth</span>=<span class="literal">True</span>,</span><br><span class="line"><span class="comment">; 使用授权</span></span><br><span class="line"><span class="attr">BanListURL</span>=<span class="string">&quot;https://api.palworldgame.com/api/banlist.txt&quot;</span>)</span><br><span class="line"><span class="comment">; 封禁用户URL</span></span><br></pre></td></tr></table></figure><p>改完之后 运行命令重启服务器生效</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo systemctl restart pal-server</span><br></pre></td></tr></table></figure><h2 id="开服-重启-关服-查看服务器状态相关命令">开服 重启 关服 查看服务器状态相关命令</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">重启</span></span><br><span class="line">sudo systemctl restart pal-server</span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash">开服</span> </span><br><span class="line">sudo systemctl start pal-server</span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash">关服</span></span><br><span class="line">sudo systemctl stop pal-server</span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash">查看服务器状态 active是开启状态 绿色的 暗的是关闭状态</span></span><br><span class="line">sudo systemctl status pal-server</span><br></pre></td></tr></table></figure><h2 id="管理员指令">管理员指令</h2><p>回车后 在聊天框输入 以下指令发出去就行</p><figure class="highlight jboss-cli"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">/adminpassword</span> 密码</span><br><span class="line">认证为管理员</span><br><span class="line"></span><br><span class="line"><span class="string">/Shutdown</span> &#123;Seconds&#125; &#123;MessageText&#125;</span><br><span class="line"></span><br><span class="line">到达设定的时间后为所有人关闭服务器</span><br><span class="line"><span class="string">/DoExit</span></span><br><span class="line"></span><br><span class="line">停止服务器</span><br><span class="line"></span><br><span class="line"><span class="string">/KickPlayer</span> &#123;Steam ID&#125;</span><br><span class="line"></span><br><span class="line">将指定的玩家踢出服务器</span><br><span class="line"></span><br><span class="line"><span class="string">/BanPlayer</span> &#123;Steam ID&#125;</span><br><span class="line"></span><br><span class="line">禁止指定的玩家进入服务器</span><br><span class="line"></span><br><span class="line"><span class="string">/Broadcast</span> &#123;MessageText&#125;</span><br><span class="line"></span><br><span class="line">向服务器上的所有玩家显示消息（消息内容在&#123;&#125;中）</span><br><span class="line"></span><br><span class="line"><span class="string">/TeleportToPlayer</span> &#123;Steam ID&#125;</span><br><span class="line"></span><br><span class="line">立即传送自己到达指定玩家所在位置</span><br><span class="line"></span><br><span class="line"><span class="string">/TeleportToMe</span> &#123;Steam ID&#125;</span><br><span class="line"></span><br><span class="line">立即将指定的玩家传送到自己所在位置</span><br><span class="line"></span><br><span class="line"><span class="string">/ShowPlayers</span></span><br><span class="line"></span><br><span class="line">显示连接到服务器的所有玩家</span><br><span class="line"></span><br><span class="line"><span class="string">/Info</span></span><br><span class="line"></span><br><span class="line">显示服务器信息</span><br><span class="line"></span><br><span class="line"><span class="string">/Save</span></span><br><span class="line"></span><br><span class="line">保存世界数据（保存当前世界存档）</span><br></pre></td></tr></table></figure><h2 id="自动内存清理优化">自动内存清理优化</h2><p>说是清理 其实就是重启手动释放下快爆的内存 目前因为游戏代码有bug导致内存泄漏 只能玩一段时间重启释放下</p><p>重启存档都还在 不用担心重启啥都没了</p><p>如果使用我教程的一键部署的话 那么内存会在占用达到75%左右自动重启施放</p><p>可以通过修改服务器上 <code>/usr/lib/systemd/system/pal-server.service</code> 这个文件 的最大内存值来改变达到多少自动释放</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim /usr/lib/systemd/system/pal-server.service</span><br></pre></td></tr></table></figure><p>比如32g内存的机器推荐改为 28G左右 要不占用刚到12g就被杀掉了</p><p><img src="https://img.777nx.cn/test/image-20240127173051612.png" alt="image-20240127173051612"></p><p>修改后 运行命令重新加载配置</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo systemctl daemon-reload</span><br></pre></td></tr></table></figure><p>然后重启</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo systemctl restart pal-server</span><br></pre></td></tr></table></figure><p>也可以直接重启服务器释放</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo systemctl restart pal-server</span><br></pre></td></tr></table></figure><p>运行后几十秒后基本就重启完毕了</p><p>后面我提供一个定时自动清理的脚本</p>]]></content>
    
    
    <summary type="html">一键自动化部署幻兽帕鲁Linux服务器教程</summary>
    
    
    
    <category term="计算机基础" scheme="https://www.777nx.cn/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/"/>
    
    
    <category term="幻兽帕鲁" scheme="https://www.777nx.cn/tags/%E5%B9%BB%E5%85%BD%E5%B8%95%E9%B2%81/"/>
    
  </entry>
  
  <entry>
    <title>Tai-统计软件使用时长</title>
    <link href="https://www.777nx.cn/posts/8b11ea82.html"/>
    <id>https://www.777nx.cn/posts/8b11ea82.html</id>
    <published>2024-01-14T13:41:30.000Z</published>
    <updated>2026-10-15T06:19:20.361Z</updated>
    
    <content type="html"><![CDATA[<h2 id="Tai">Tai</h2><p>👻 在 Windows 上统计 <code>软件</code> 使用时长和 <code>网站</code> 浏览时长</p><p><img src="https://img.777nx.cn/test/tai.jpg!o" alt="👻 Tai - 统计 Windows 中：软件使用时长、网站浏览时长"></p><p><img src="https://img.777nx.cn/test/202301054.webp" alt="软件使用时间记录工具，Tai软件体验"></p><p>类似于 iPhone 的屏幕使用时长一样，Tai 负责统计你每一个软件的使用时长。需要注意的是，使用时长并不是软件的存活时间，而是软件从获得焦点时开始到失去焦点后这段时间</p><h2 id="开始使用">开始使用</h2><p>Tai下载之后，不用安装，解压出来即可使用，找到目录下那只吐着舌头的小幽灵启动即可，下面还有一只幽灵是处理 Bug 信息的，不要眼花点错了~</p><p><img src="https://img.777nx.cn/test/202301052.webp" alt="软件使用时间记录工具，Tai软件体验"></p><p>启动没有问题的话，你就会在状态栏的右下角看到软件的 Logo。</p><p><img src="https://img.777nx.cn/test/202301053.webp" alt="软件使用时间记录工具，Tai软件体验"></p><p>大多数电脑都能正常使用，如果你的电脑啥反应也没有，也不用担心。根据软件作者的提示：你的电脑可能需要安装 .NET Framework 4.6.1 或更高的版本。</p><h2 id="了解更多">了解更多</h2><h3 id="为什么使用-Tai">为什么使用 Tai</h3><p>帮助你了解自己把时间花在了什么地方，从而更好地做一些计划。或者，为了每周回顾自己的摸鱼成果。<s>工作只是换取薪酬，摸鱼才是赚钱。</s></p><h3 id="应用白名单">应用白名单</h3><p>支持仅统计白名单内的软件，在设置 &gt; 行为中可以启用此功能。</p><h3 id="关联进程">关联进程</h3><p>如果你希望在多屏工作时将其他屏幕所使用的软件同时记录使用时长，可以在设置中将相应的软件进程添加到一个关联列表中。添加完成后，只要使用了关联列表的其中一个软件，就会同步更新使用时长到列表里的其他软件上，但前提是其他软件需要正处于运行中（即使在后台或者没有焦点都行）。一个软件只能关联一次，不能重复与其他软件关联。</p><h3 id="过滤应用和网站">过滤应用和网站</h3><p>可以在设置 &gt; 行为中通过进程名称/URL或者正则表达式对不需要统计的软件/网站进行过滤。</p><h3 id="数据储存和导出">数据储存和导出</h3><p>Tai 使用不加密 <code>SQLite</code> 数据库将统计数据存储在本地 <code>运行目录\Data\data.db</code> 中。可以在设置中将统计的数据以 <code>.xlsx</code> 和 <code>.csv</code> 两种文件格式导出。</p><h3 id="睡眠监测">睡眠监测</h3><p>Tai 能够一定程度地发现用户离开电脑从而停止统计，也可以在设置 &gt; 行为中停用此功能以实现不间断统计。</p><h3 id="自动分类">自动分类</h3><p>可以根据运行目录自动归类，在分类管理中添加/编辑分类时可以启用或关闭目录匹配。比如在 <code>分类A</code> 中启用并添加了一个目录 <code>C:\</code> ，那么C盘下所有软件都会被自动归类到 <code>分类A</code> 中。</p><h3 id="联网和隐私">联网和隐私</h3><p>除了检查更新/升级软件时（需要主动在设置中检查更新）之外完全没有其他网络请求。Tai 并不会收集和上传你的任何信息。</p><h2 id="下载地址">下载地址</h2><p>Tai软件使用时间记录工具、发布地址：</p><p><a href="https://github.com/Planshit/Tai">https://github.com/Planshit/Tai</a></p><p>Tai软件使用时间记录工具、蓝奏云：</p><p><a href="https://777nx.lanzouu.com/iw6Fe1l4bzoh">https://777nx.lanzouu.com/iw6Fe1l4bzoh</a></p>]]></content>
    
    
    <summary type="html">👻 在Windows上统计软件使用时长和网站浏览时长</summary>
    
    
    
    <category term="计算机基础" scheme="https://www.777nx.cn/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/"/>
    
    
    <category term="时间" scheme="https://www.777nx.cn/tags/%E6%97%B6%E9%97%B4/"/>
    
  </entry>
  
  <entry>
    <title>Redis下载和安装（Windows系统）</title>
    <link href="https://www.777nx.cn/posts/ba26833c.html"/>
    <id>https://www.777nx.cn/posts/ba26833c.html</id>
    <published>2023-12-26T17:51:47.000Z</published>
    <updated>2026-10-15T06:19:20.359Z</updated>
    
    <content type="html"><![CDATA[<p>虽然 Redis 官方网站没有提供 Windows 版的安装包，但是，微软开发并维护了针对Win64的Windows版本。下载地址：<a href="https://github.com/MicrosoftArchive/redis/releases">点击前往</a>。</p><p>同时提供蓝奏云网盘下载地址：<a href="https://777nx.lanzouu.com/ikPVk1j2azoh">点击前往</a></p><p>在 Windows 系统下安装 Redis 要比 Linux 系统安装稍微复杂一些，本节详细介绍如何在 Windows 系统上如何安装 Redis。</p><p>打开上述的下载链接，Redis 支持 32 位和 64 位的 Window 系统，大家根据个人情况自行下载，如图所示：</p><p><img src="https://img.777nx.cn/test/image-20231227010909061.png" alt="image-20231227010909061"></p><p>下载完成后，打开相应的文件夹，您会看到如下图所示的文件目录：</p><p><img src="https://img.777nx.cn/test/image-20231227011529705.png" alt="image-20231227011529705"></p><h2 id="创建Redis临时服务">创建Redis临时服务</h2><h3 id="启动服务端程序">启动服务端程序</h3><p>打开 CMD 命令进入 Redis 目录，执行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">D:\software\Redis-x64-3.0.504&gt;redis-server.exe redis.windows.conf</span><br></pre></td></tr></table></figure><p>显示如下图所示，表示 Redis 服务已启动</p><p><img src="https://img.777nx.cn/test/image-20231227012517726.png" alt="image-20231227012517726"></p><p>上图中显示一些 Redis 的相关信息，比如 Redis 的版本号以及默认端口号(6379)。注意，为了实现后续操作，请您保持服务端开启状态，否则客户端无法正常工作。</p><h3 id="启动客户端程序">启动客户端程序</h3><p>启动服务端后，后台窗口不要关，新开一个 CMD 窗口，执行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">D:\software\Redis-x64-3.0.504&gt;redis-cli.exe</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/image-20231227012824451.png" alt="image-20231227012824451"></p><p>得到如上界面，说明 Redis 本地客户端与服务端连接成功。</p><h2 id="命令创建Redis服务">命令创建Redis服务</h2><p>上述方式虽然简单快捷，但是显然不是程序员的操作，下面介绍，通过命令启动 Redis 服务端，并将 Redis 服务添加到 Windows 资源管理器，实现开机后自动启动。</p><h3 id="注册Redis服务">注册Redis服务</h3><p>通过 CMD 命令行工具进入 Redis 安装目录，将 Redis 服务注册到 Windows 服务中，执行以下命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">redis-server.exe --service-install redis.windows.conf</span><br></pre></td></tr></table></figure><p>执行完后，得到以下输出，说明注册成功。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[1868] 07 Jan 15:00:08.223 <span class="comment"># Granting read/write access to &#x27;NT AUTHORITY\NetworkService&#x27; on: &quot;D:\software\Redis-x64-3.0.504&quot; &quot;D:\software\Redis-x64-3.0.504\&quot;</span></span><br><span class="line">[1868] 07 Jan 15:00:08.230 <span class="comment"># Redis successfully installed as a service.</span></span><br></pre></td></tr></table></figure><h3 id="启动Redis服务">启动Redis服务</h3><p>执行以下命令启动 Redis 服务，命令如下：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">redis-server --service-start</span><br></pre></td></tr></table></figure><p>如下图所示：</p><p><img src="https://img.777nx.cn/test/image-20231227014937687.png" alt="image-20231227014937687"></p><p>注意：此时 Redis 已经被添加到 Windows 服务中，因此不会再显示 Redis 服务端的相应的信息，如下图所示：</p><p><img src="https://img.777nx.cn/test/image-20231227013740690.png" alt="image-20231227013740690"></p><h3 id="启动Redis客户端">启动Redis客户端</h3><p>在 CMD 命令行输出 redis-cli 命令启动客户端，如下所示：</p><p><img src="https://img.777nx.cn/test/image-20231227013916687.png" alt="image-20231227013916687"></p><h3 id="检查是否连接成功">检查是否连接成功</h3><p>测试客户端和服务端是否成功连接。输出<code>PING</code>命令，若返回<code>PONG</code>则证明成功连接。如下所示：</p><p><img src="https://img.777nx.cn/test/image-20231227014031257.png" alt="image-20231227014031257"></p><p>通过上面的操作，我们完成了 Redis 的安装。当然，您也可以将 Redis 加入到环境变量中，如下所示：</p><p><img src="https://img.777nx.cn/test/image-20231227014226734.png" alt="image-20231227014226734"></p><blockquote><p>注意：根据自己的安装路径添加环境变量。</p></blockquote><h2 id="参考">参考</h2><ol><li><a href="https://c.biancheng.net/redis/windows-installer.html">Redis下载和安装（Windows系统）</a></li><li><a href="https://blog.csdn.net/antma/article/details/79225084">Redis安装（Windows环境下Redis安装）</a></li></ol><h2 id="总结">总结</h2><p>下面对安装过程中涉及到的命令进行总结，主要包括以下命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">安装服务：redis-server.exe --service-install</span><br><span class="line">卸载服务：redis-server.exe --service-uninstall</span><br><span class="line">开启服务：redis-server.exe --service-start</span><br><span class="line">停止服务：redis-server.exe --service-stop</span><br><span class="line">服务端启动时重命名：redis-server.exe --service-start --service-name Redis1</span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">Windows安装Redis数据库</summary>
    
    
    
    <category term="Java" scheme="https://www.777nx.cn/categories/Java/"/>
    
    
    <category term="Redis" scheme="https://www.777nx.cn/tags/Redis/"/>
    
  </entry>
  
  <entry>
    <title>JavaScript常用数组方法</title>
    <link href="https://www.777nx.cn/posts/d1397e67.html"/>
    <id>https://www.777nx.cn/posts/d1397e67.html</id>
    <published>2023-12-07T09:43:19.000Z</published>
    <updated>2026-10-15T06:19:20.360Z</updated>
    
    <content type="html"><![CDATA[<div class="note info flat"><p>参考：<a href="https://zhuanlan.zhihu.com/p/602781589">JavaScript 常用数组方法</a></p></div><h2 id="forEach">forEach</h2><blockquote><p>forEach()方法将为每个数组元素执行一次指定的函数<br>返回值：undefined</p></blockquote><p><img src="https://img.777nx.cn/test/v2-cebbb5dcc1a2dab5cfa68d3fbfd21053_720w.webp" alt="img"></p><h2 id="map">map</h2><blockquote><p>map()方法创建一个新数组，这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成<br>返回值：一个新数组，每个元素都是回调函数的返回值</p></blockquote><p><img src="https://img.777nx.cn/test/v2-d4a8f2fd1c28d6437fbffd8fecc0cb0c_720w.webp" alt="img"></p><h2 id="concat">concat</h2><blockquote><p>concat()方法用于合并两个或多个数组<br>此方法不会更改现有数组，而是返回一个新数组<br>返回值：新的Array实例</p></blockquote><p><img src="https://img.777nx.cn/test/v2-a86f2b5e69d723f548460a0c946bf0a6_720w.webp" alt="img"></p><h2 id="push">push</h2><blockquote><p><code>push()</code>方法将一个或多个元素添加到数组的末尾，并返回该数组的新长度<br>返回值：当调用该方法时，新的length属性值将被返回。</p></blockquote><p><img src="https://img.777nx.cn/test/v2-b029be8144f72515797646f478e00c17_720w.webp" alt="img"></p><h2 id="pop">pop</h2><blockquote><p><code>pop()</code>方法从数组中删除最后一个元素，并返回该元素的值。<br>此方法会更改数组的长度。<br>返回值：从数组中删除的元素（当数组为空时返回undefined）</p></blockquote><p><img src="https://img.777nx.cn/test/v2-42153fe9a707a01d96e5eef1f301c7f4_720w.webp" alt="img"></p><h2 id="splice">splice</h2><blockquote><p><code>splice()</code>方法通过删除或替换现有元素或者原地添加新的元素来修改数组，并以数组形式返回被修改的内容。<br>此方法会改变原数组。<br>返回值：由被删除的元素组成的一个数组。如果只删除了一个元素，则返回只包含一个元素的数组。如果没有删除元素，则返回空数组。</p></blockquote><p><img src="https://img.777nx.cn/test/v2-5aee83dfdc2b055f68c0e382fe075c0b_720w.webp" alt="img"></p><h2 id="slice">slice</h2><blockquote><p><code>slice()</code>方法返回一个新的数组对象，这一对象是一个由<code>begin</code>和<code>end</code>决定的原数组的<strong>浅拷贝</strong>（包括<code>begin</code>，不包括<code>end</code>）<br>原始数组不会被改变<br>返回值：一个含有被提取元素的新数组</p></blockquote><p><img src="https://img.777nx.cn/test/v2-65eeaf11e76c23777b0f4d7ec33ed541_720w.webp" alt="img"></p><h2 id="shift">shift</h2><blockquote><p><code>shift()</code>方法从数组中删除<strong>第一个</strong>元素，并返回该元素的值。<br>此方法更改数组的长度。<br>返回值：从数组中删除的元素; 如果数组为空则返回undefined</p></blockquote><p><img src="https://img.777nx.cn/test/v2-b3351f29f4caa4cd797bd4aecf594d78_720w.webp" alt="img"></p><h2 id="unshift">unshift</h2><blockquote><p><code>unshift()</code>方法将一个或多个元素添加到数组的<strong>开头</strong>，并返回该数组的<strong>新长度</strong>。<br>返回值：返回调用方法对象的新length属性值。</p></blockquote><p><img src="https://img.777nx.cn/test/v2-82ccb8d80da22dbe515f9a6d5f9f0cd5_720w.webp" alt="img"></p><h2 id="join">join</h2><blockquote><p><code>join()</code>方法将一个数组（或一个类数组对象）的所有元素连接成一个字符串并返回这个字符串，用逗号或指定的分隔符字符串分隔。<br>如果数组只有一个元素，那么将返回该元素而不使用分隔符。<br>返回值：一个所有数组元素连接的字符串。如果 <code>arr.length</code> 为 0，则返回空字符串。</p></blockquote><p><img src="https://img.777nx.cn/test/v2-443de77c189cc705730ed7e3dc7a4247_720w.webp" alt="img"></p><h2 id="every">every</h2><blockquote><p><code>every()</code>方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。<br>它返回一个布尔值。<br>返回值：如果回调函数的每一次返回都为真值，返回<code>true</code>，否则返回<code>false</code></p></blockquote><p><img src="https://img.777nx.cn/test/v2-4b96a801a80ac3fc01acae0242d17fcc_720w.webp" alt="img"></p><h2 id="filter">filter</h2><blockquote><p><code>filter()</code>方法创建给定数组一部分的<a href="https://developer.mozilla.org/zh-CN/docs/Glossary/Shallow_copy">浅拷贝</a>，其包含通过所提供函数实现的测试的所有元素。<br>返回值：一个新的、由通过测试的元素组成的数组，如果没有任何数组元素通过测试，则返回空数组。</p></blockquote><p><img src="https://img.777nx.cn/test/v2-6f84a86640c688f243413568df330279_720w.webp" alt="img"></p><h2 id="indexOf">indexOf</h2><blockquote><p><code>indexOf()</code>方法返回在数组中可以找到给定元素的第一个索引，如果不存在，则返回-1。<br>返回值：首个被找到的元素在数组中的索引位置; 若没有找到则返回**-1**。</p></blockquote><p><img src="https://img.777nx.cn/test/v2-46d22d31ded058d6df397f0bc43f4f4e_720w.webp" alt="img"></p><h2 id="reduce">reduce</h2><blockquote><p><code>reduce()</code>方法对数组中的每个元素按序执行一个由您提供的 <strong>reducer</strong> 函数，每一次运行 <strong>reducer</strong> 会将先前元素的计算结果作为参数传入，最后将其结果汇总为单个返回值。<br>第一次执行回调函数时，不存在“上一次的计算结果”。如果需要回调函数从数组索引为 0 的元素开始执行，则需要传递初始值。否则，数组索引为 0 的元素将被作为初始值 <em>initialValue</em>，迭代器将从第二个元素开始执行（索引为 1 而不是 0）。<br>返回值：使用“reducer”回调函数遍历整个数组后的结果。</p></blockquote><p><img src="https://img.777nx.cn/test/v2-c33f6bd5f718c0a98acf810316b2a064_720w.webp" alt="img"></p><h2 id="reverse">reverse</h2><blockquote><p><code>reverse()</code>方法将数组中元素的位置颠倒，并返回该数组。<br>数组的第一个元素会变成最后一个，数组的最后一个元素变成第一个。<br>该方法会改变原数组。<br>返回值：颠倒后的数组</p></blockquote><p><img src="https://img.777nx.cn/test/v2-3d2d4fd63d8b6c5325f58cefdc7f2c80_720w.webp" alt="img"></p><h2 id="sort">sort</h2><blockquote><p><code>sort()</code>方法用<a href="https://zh.wikipedia.org/wiki/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95">原地算法</a>对数组的元素进行排序，并返回数组。<br>默认排序顺序是在将元素转换为字符串，然后比较它们的 UTF-16 代码单元值序列时构建的<br>由于它取决于具体实现，因此无法保证排序的时间和空间复杂性。<br>返回值：排序后的数组。请注意，数组已原地排序，并且不进行复制。</p></blockquote><p><img src="https://img.777nx.cn/test/v2-8124a0352786d752dbee0803e0a963dc_720w.webp" alt="img"></p><h2 id="toString">toString</h2><blockquote><p><code>toString()</code>方法返回一个字符串，表示指定的数组及其元素。<br>返回值：一个表示数组所有元素的字符串。</p></blockquote><p><img src="https://img.777nx.cn/test/v2-1d454472280637cae6570630809654ef_720w.webp" alt="img"></p><h2 id="at">at</h2><blockquote><p><code>at()</code>方法接收一个整数值并返回该索引对应的元素，允许正数和负数。负整数从数组中的最后一个元素开始倒数。<br>返回值：匹配给定索引的数组中的元素。如果找不到指定的索引，则返回undefined。</p></blockquote><p><img src="https://img.777nx.cn/test/v2-990a543222d3c485e9032cbea11eaa10_720w.webp" alt="img"></p><h2 id="find">find</h2><blockquote><p><code>find()</code>方法返回数组中满足提供的测试函数的第一个元素的值。否则返回<code>undefined</code>。<br>返回值：数组中第一个满足所提供测试函数的元素的值，否则返回<code>undefined</code></p></blockquote><p><img src="https://img.777nx.cn/test/v2-2af854de7b49753b4cda6b82dab073ac_720w.webp" alt="img"></p><h2 id="some">some</h2><blockquote><p><code>some()</code>方法测试数组中是不是至少有 1 个元素通过了被提供的函数测试。<br>它返回的是一个 Boolean 类型的值。<br>返回值：数组中有至少一个元素通过回调函数的测试就会返回<code>true</code>；所有元素都没有通过回调函数的测试返回值才会为 false。</p></blockquote><p><img src="https://img.777nx.cn/test/v2-1aae7f74c3219f6b8362ccdde0d49685_720w.webp" alt="img"></p>]]></content>
    
    
    <summary type="html">分享20个Javascript中的数组方法</summary>
    
    
    
    <category term="前端" scheme="https://www.777nx.cn/categories/%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="数组" scheme="https://www.777nx.cn/tags/%E6%95%B0%E7%BB%84/"/>
    
  </entry>
  
  <entry>
    <title>Flex布局详解文档</title>
    <link href="https://www.777nx.cn/posts/c2ac5e09.html"/>
    <id>https://www.777nx.cn/posts/c2ac5e09.html</id>
    <published>2023-11-16T12:53:39.000Z</published>
    <updated>2026-10-15T06:19:20.360Z</updated>
    
    <content type="html"><![CDATA[<div class="note info flat"><p>参考：<a href="https://www.lovestu.com/cssflex.html">CSS3 Flex 布局详解文档</a></p></div><p>网页布局（layout）是 CSS 的一个重点应用。</p><p><img src="https://img.777nx.cn/test/1600863502-9679-bg2015071001.gif" alt="img"></p><p>布局的传统解决方案，基于<a href="https://www.lovestu.com/wp-content/plugins/cp-link-open/link.php?a=aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2JveF9tb2RlbA==">盒状模型</a>，依赖 <a href="https://www.lovestu.com/wp-content/plugins/cp-link-open/link.php?a=aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2Rpc3BsYXk="><code>display</code></a> 属性 + <a href="https://www.lovestu.com/wp-content/plugins/cp-link-open/link.php?a=aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3Bvc2l0aW9u"><code>position</code></a>属性 + <a href="https://www.lovestu.com/wp-content/plugins/cp-link-open/link.php?a=aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2Zsb2F0"><code>float</code></a>属性。它对于那些特殊布局非常不方便，比如，<a href="https://www.lovestu.com/wp-content/plugins/cp-link-open/link.php?a=aHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9jZW50ZXJpbmctY3NzLWNvbXBsZXRlLWd1aWRlLw==">垂直居中</a>就不容易实现。</p><p><img src="https://img.777nx.cn/test/1600863498-8001-bg2015071002.png" alt="img"></p><p>2009年，W3C 提出了一种新的方案----Flex 布局，可以简便、完整、响应式地实现各种页面布局。目前，它已经得到了所有浏览器的支持，这意味着，现在就能很安全地使用这项功能。</p><p><img src="https://img.777nx.cn/test/1600863499-3507-bg2015071003-300x106.jpg" alt="img"></p><p>Flex 布局将成为未来布局的首选方案。本文介绍它的语法</p><h2 id="Flex-布局是什么？">Flex 布局是什么？</h2><p>Flex 是 Flexible Box 的缩写，意为&quot;弹性布局&quot;，用来为盒状模型提供最大的灵活性。</p><p>任何一个容器都可以指定为 Flex 布局。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.box</span>&#123;</span><br><span class="line">  <span class="attribute">display</span>: flex;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>行内元素也可以使用 Flex 布局。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.box</span>&#123;</span><br><span class="line">  <span class="attribute">display</span>: inline-flex;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>Webkit 内核的浏览器，必须加上<code>-webkit</code>前缀。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.box</span>&#123;</span><br><span class="line">  <span class="attribute">display</span>: -webkit-flex; <span class="comment">/* Safari */</span></span><br><span class="line">  <span class="attribute">display</span>: flex;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>注意，设为 Flex 布局以后，子元素的<code>float</code>、<code>clear</code>和<code>vertical-align</code>属性将失效。</p><h2 id="基本概念">基本概念</h2><p>采用 Flex 布局的元素，称为 Flex 容器（flex container），简称&quot;容器&quot;。它的所有子元素自动成为容器成员，称为 Flex 项目（flex item），简称&quot;项目&quot;。</p><p><img src="https://img.777nx.cn/test/1600863498-2127-bg2015071004.png" alt="img"></p><p>容器默认存在两根轴：水平的主轴（main axis）和垂直的交叉轴（cross axis）。主轴的开始位置（与边框的交叉点）叫做<code>main start</code>，结束位置叫做<code>main end</code>；交叉轴的开始位置叫做<code>cross start</code>，结束位置叫做<code>cross end</code>。</p><p>项目默认沿主轴排列。单个项目占据的主轴空间叫做<code>main size</code>，占据的交叉轴空间叫做<code>cross size</code>。</p><h2 id="容器的属性">容器的属性</h2><p>以下6个属性设置在容器上。</p><ul><li>flex-direction</li><li>flex-wrap</li><li>flex-flow</li><li>justify-content</li><li>align-items</li><li>align-content</li></ul><h3 id="flex-direction属性">flex-direction属性</h3><p><code>flex-direction</code>属性决定主轴的方向（即项目的排列方向）。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.box</span> &#123;</span><br><span class="line">  <span class="attribute">flex-direction</span>: row | row-reverse | column | column-reverse;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/1600863498-2409-bg2015071005.png" alt="img"></p><p>它可能有4个值。</p><ul><li><code>row</code>（默认值）：主轴为水平方向，起点在左端。</li><li><code>row-reverse</code>：主轴为水平方向，起点在右端。</li><li><code>column</code>：主轴为垂直方向，起点在上沿。</li><li><code>column-reverse</code>：主轴为垂直方向，起点在下沿。</li></ul><h3 id="flex-wrap属性">flex-wrap属性</h3><p>默认情况下，项目都排在一条线（又称&quot;轴线&quot;）上。<code>flex-wrap</code>属性定义，如果一条轴线排不下，如何换行。</p><p><img src="https://img.777nx.cn/test/1600863500-1994-bg2015071006.png" alt="img"></p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.box</span>&#123;</span><br><span class="line">  <span class="attribute">flex-wrap</span>: nowrap | wrap | wrap-reverse;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>它可能取三个值。</p><p>（1）<code>nowrap</code>（默认）：不换行。</p><p><img src="https://img.777nx.cn/test/1600863498-5412-bg2015071007.png" alt="img"></p><p>（2）<code>wrap</code>：换行，第一行在上方。</p><p><img src="https://img.777nx.cn/test/1600863499-3376-bg2015071008.jpg" alt="img"></p><p>（3）<code>wrap-reverse</code>：换行，第一行在下方。</p><p><img src="https://img.777nx.cn/test/1600863499-2610-bg2015071009.jpg" alt="img"></p><h3 id="flex-flow">flex-flow</h3><p><code>flex-flow</code>属性是<code>flex-direction</code>属性和<code>flex-wrap</code>属性的简写形式，默认值为<code>row nowrap</code>。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.box</span> &#123;</span><br><span class="line">  <span class="attribute">flex-flow</span>: &lt;flex-direction&gt; || &lt;flex-wrap&gt;;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="justify-content属性">justify-content属性</h3><p><code>justify-content</code>属性定义了项目在主轴上的对齐方式。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.box</span> &#123;</span><br><span class="line">  <span class="attribute">justify-content</span>: flex-start | flex-end | center | space-between | space-around;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/1600863499-3601-bg2015071010.png" alt="img"></p><p>它可能取5个值，具体对齐方式与轴的方向有关。下面假设主轴为从左到右。</p><ul><li><code>flex-start</code>（默认值）：左对齐</li><li><code>flex-end</code>：右对齐</li><li><code>center</code>： 居中</li><li><code>space-between</code>：两端对齐，项目之间的间隔都相等。</li><li><code>space-around</code>：每个项目两侧的间隔相等。所以，项目之间的间隔比项目与边框的间隔大一倍。</li></ul><h3 id="align-items属性">align-items属性</h3><p><code>align-items</code>属性定义项目在交叉轴上如何对齐。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.box</span> &#123;</span><br><span class="line">  <span class="attribute">align-items</span>: flex-start | flex-end | center | baseline | stretch;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/1600863498-8573-bg2015071011.png" alt="img"></p><p>它可能取5个值。具体的对齐方式与交叉轴的方向有关，下面假设交叉轴从上到下。</p><ul><li><code>flex-start</code>：交叉轴的起点对齐。</li><li><code>flex-end</code>：交叉轴的终点对齐。</li><li><code>center</code>：交叉轴的中点对齐。</li><li><code>baseline</code>: 项目的第一行文字的基线对齐。</li><li><code>stretch</code>（默认值）：如果项目未设置高度或设为auto，将占满整个容器的高度。</li></ul><h3 id="align-content属性">align-content属性</h3><p><code>align-content</code>属性定义了多根轴线的对齐方式。如果项目只有一根轴线，该属性不起作用。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.box</span> &#123;</span><br><span class="line">  <span class="attribute">align-content</span>: flex-start | flex-end | center | space-between | space-around | stretch;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/1600863498-1122-bg2015071012.png" alt="img"></p><p>该属性可能取6个值。</p><ul><li><code>flex-start</code>：与交叉轴的起点对齐。</li><li><code>flex-end</code>：与交叉轴的终点对齐。</li><li><code>center</code>：与交叉轴的中点对齐。</li><li><code>space-between</code>：与交叉轴两端对齐，轴线之间的间隔平均分布。</li><li><code>space-around</code>：每根轴线两侧的间隔都相等。所以，轴线之间的间隔比轴线与边框的间隔大一倍。</li><li><code>stretch</code>（默认值）：轴线占满整个交叉轴。</li></ul><h2 id="项目的属性">项目的属性</h2><p>以下6个属性设置在项目上。</p><ul><li><code>order</code></li><li><code>flex-grow</code></li><li><code>flex-shrink</code></li><li><code>flex-basis</code></li><li><code>flex</code></li><li><code>align-self</code></li></ul><h3 id="order属性">order属性</h3><p><code>order</code>属性定义项目的排列顺序。数值越小，排列越靠前，默认为0。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.item</span> &#123;</span><br><span class="line">  <span class="attribute">order</span>: &lt;integer&gt;;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/1600863499-6340-bg2015071013.png" alt="img"></p><h3 id="flex-grow属性">flex-grow属性</h3><p><code>flex-grow</code>属性定义项目的放大比例，默认为<code>0</code>，即如果存在剩余空间，也不放大。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.item</span> &#123;</span><br><span class="line">  <span class="attribute">flex-grow</span>: &lt;number&gt;; <span class="comment">/* default 0 */</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/1600863500-5688-bg2015071014.png" alt="img"></p><p>如果所有项目的<code>flex-grow</code>属性都为1，则它们将等分剩余空间（如果有的话）。如果一个项目的<code>flex-grow</code>属性为2，其他项目都为1，则前者占据的剩余空间将比其他项多一倍。</p><h3 id="flex-shrink属性">flex-shrink属性</h3><p><code>flex-shrink</code>属性定义了项目的缩小比例，默认为1，即如果空间不足，该项目将缩小。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.item</span> &#123;</span><br><span class="line">  <span class="attribute">flex-shrink</span>: &lt;number&gt;; <span class="comment">/* default 1 */</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/1600863500-8638-bg2015071015.jpg" alt="img"></p><p>如果所有项目的<code>flex-shrink</code>属性都为1，当空间不足时，都将等比例缩小。如果一个项目的<code>flex-shrink</code>属性为0，其他项目都为1，则空间不足时，前者不缩小。</p><p>负值对该属性无效。</p><h3 id="flex-basis属性">flex-basis属性</h3><p><code>flex-basis</code>属性定义了在分配多余空间之前，项目占据的主轴空间（main size）。浏览器根据这个属性，计算主轴是否有多余空间。它的默认值为<code>auto</code>，即项目的本来大小。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.item</span> &#123;</span><br><span class="line">  <span class="attribute">flex-basis</span>: &lt;length&gt; | auto; <span class="comment">/* default auto */</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>它可以设为跟<code>width</code>或<code>height</code>属性一样的值（比如350px），则项目将占据固定空间。</p><h3 id="flex属性">flex属性</h3><p><code>flex</code>属性是<code>flex-grow</code>, <code>flex-shrink</code> 和 <code>flex-basis</code>的简写，默认值为<code>0 1 auto</code>。后两个属性可选。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.item</span> &#123;</span><br><span class="line">  <span class="attribute">flex</span>: none | [ &lt;<span class="string">&#x27;flex-grow&#x27;</span>&gt; &lt;<span class="string">&#x27;flex-shrink&#x27;</span>&gt;? || &lt;<span class="string">&#x27;flex-basis&#x27;</span>&gt; ]</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>该属性有两个快捷值：<code>auto</code> (<code>1 1 auto</code>) 和 none (<code>0 0 auto</code>)。</p><p>建议优先使用这个属性，而不是单独写三个分离的属性，因为浏览器会推算相关值。</p><h3 id="align-self属性">align-self属性</h3><p><code>align-self</code>属性允许单个项目有与其他项目不一样的对齐方式，可覆盖<code>align-items</code>属性。默认值为<code>auto</code>，表示继承父元素的<code>align-items</code>属性，如果没有父元素，则等同于<code>stretch</code>。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.item</span> &#123;</span><br><span class="line">  <span class="attribute">align-self</span>: auto | flex-start | flex-end | center | baseline | stretch;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.777nx.cn/test/1600863501-2594-bg2015071016.png" alt="img"></p><p>该属性可能取6个值，除了auto，其他都与align-items属性完全一致。</p>]]></content>
    
    
    <summary type="html">详细讲解flex布局</summary>
    
    
    
    <category term="前端" scheme="https://www.777nx.cn/categories/%E5%89%8D%E7%AB%AF/"/>
    
    
    <category term="Flex" scheme="https://www.777nx.cn/tags/Flex/"/>
    
  </entry>
  
</feed>
