<?xml version="1.0" encoding="utf-8"?>
<search> 
  
  
    
    <entry>
      <title>javascript的原型与高阶技巧</title>
      <link href="/2023/11/07/javascript%E5%8E%9F%E5%9E%8B%E4%B8%8E%E9%AB%98%E9%98%B6%E6%8A%80%E5%B7%A7/"/>
      <url>/2023/11/07/javascript%E5%8E%9F%E5%9E%8B%E4%B8%8E%E9%AB%98%E9%98%B6%E6%8A%80%E5%B7%A7/</url>
      
        <content type="html"><![CDATA[<h1 id=""><a href="#" class="headerlink" title=""></a></h1>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> javascript </category>
          
          <category> 学习笔记 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> 函数 </tag>
            
            <tag> 原型 </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>javascript深入对象和内置构造方法</title>
      <link href="/2023/11/02/javascript%E6%B7%B1%E5%85%A5%E5%AF%B9%E8%B1%A1%E4%B8%8E%E5%86%85%E7%BD%AE%E6%9E%84%E9%80%A0%E6%96%B9%E6%B3%95/"/>
      <url>/2023/11/02/javascript%E6%B7%B1%E5%85%A5%E5%AF%B9%E8%B1%A1%E4%B8%8E%E5%86%85%E7%BD%AE%E6%9E%84%E9%80%A0%E6%96%B9%E6%B3%95/</url>
      
        <content type="html"><![CDATA[        <h1 id="深入对象"   >          <a href="#深入对象" class="heading-link"><i class="fas fa-link"></i></a><a href="#深入对象" class="headerlink" title="深入对象"></a>深入对象</h1>              <h2 id="构造函数高级"   >          <a href="#构造函数高级" class="heading-link"><i class="fas fa-link"></i></a><a href="#构造函数高级" class="headerlink" title="构造函数高级"></a>构造函数高级</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">构造函数可以用来创建多个类似的对象</span><br><span class="line">3.利用构造函数创建对象</span><br><span class="line">function  构造函数名 ( )&#123;</span><br><span class="line">this.属性=值;</span><br><span class="line">this.方法=function( )&#123; &#125;</span><br><span class="line">&#125;</span><br><span class="line">调用   new.构造函数名( );</span><br><span class="line">构造函数首字母大写</span><br></pre></td></tr></table></div></figure>        <h2 id="实例化过程"   >          <a href="#实例化过程" class="heading-link"><i class="fas fa-link"></i></a><a href="#实例化过程" class="headerlink" title="实例化过程"></a>实例化过程</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">1.创建新的空对象</span><br><span class="line">2.构造函数this指向新对象</span><br><span class="line">3.执行构造函数代码,修改this,添加新的属性</span><br><span class="line">4.返回新对象</span><br></pre></td></tr></table></div></figure>        <h2 id="实例成员和静态成员"   >          <a href="#实例成员和静态成员" class="heading-link"><i class="fas fa-link"></i></a><a href="#实例成员和静态成员" class="headerlink" title="实例成员和静态成员"></a>实例成员和静态成员</h2>      <figure class="highlight plaintext"><div class="table-container"><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">1.实例成员:实例对象上的属性和方法都属于实例成员例如</span><br><span class="line">const one =new Pig(&#x27;佩奇&#x27;)</span><br><span class="line">one.name=&#x27;小猪&#x27; //实例属性相互独立不影响其他</span><br><span class="line">2.静态成员:构造函数上的属性和方法称为静态成员</span><br><span class="line">function Pig(uname)&#123;</span><br><span class="line">            this.uname=uname</span><br><span class="line">        &#125;</span><br><span class="line">Pig.eyes=2  //静态属性</span><br></pre></td></tr></table></div></figure>        <h1 id="内置构造函数方法"   >          <a href="#内置构造函数方法" class="heading-link"><i class="fas fa-link"></i></a><a href="#内置构造函数方法" class="headerlink" title="内置构造函数方法"></a>内置构造函数方法</h1>              <h2 id="Object"   >          <a href="#Object" class="heading-link"><i class="fas fa-link"></i></a><a href="#Object" class="headerlink" title="Object"></a>Object</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">静态方法</span><br><span class="line">1.Object.keys(value)                                      // 用于获取自身所有属性</span><br><span class="line">传入对象           返回对对象属性值</span><br><span class="line">传入字符串         返回有多少个字符个数索引                </span><br><span class="line">传入数组           返回索引</span><br><span class="line">2.Objet.assign(拷贝对象,被拷贝对象)                          //拷贝对象</span><br><span class="line">3.Object.defineProperty(obj,prop,descriptor,...)          //定义新属性或修改原有属性</span><br><span class="line">obj :   必须  目标对象</span><br><span class="line">prop:   必须    定义或者是修改的属性名字</span><br><span class="line">descriptor:  必须 以对象&#123;  &#125;书写</span><br><span class="line">value:     设置属性值  默认undefined</span><br><span class="line">writable:   是否可以重写  true/false  默认false不能重写</span><br><span class="line">enumerable:   是否可以遍历出现 true/false  默认false</span><br><span class="line">configurable:   是否可以被删除或者再次修改第三个里面特性 true/false默认false</span><br><span class="line">4.Object.values()                                         //返回属性值数组</span><br></pre></td></tr></table></div></figure>        <h2 id="Array"   >          <a href="#Array" class="heading-link"><i class="fas fa-link"></i></a><a href="#Array" class="headerlink" title="Array"></a>Array</h2>      <figure class="highlight plaintext"><div class="table-container"><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">2.Array                                                                        </span><br><span class="line">1.arr.forEach(function(currenValue,index,arr))               // 遍历数组(无返回值)</span><br><span class="line">currenValur         数组当前项的值(必填)</span><br><span class="line">index               数组当前的索引</span><br><span class="line">arr                 数组对象本身</span><br><span class="line">2.arr.map((valur,index)=&gt;&#123;&#125;)                                  //遍历数组(有返回值)</span><br><span class="line">3.arr.filter(function(currenValue,index,arr)&#123;  return 判断条件&#125;)      //筛选数组 </span><br><span class="line">注意返回一个新数组得赋值 (判断条件return 条件 赋值后就是满足条件的新数组)</span><br><span class="line">4.arr.some(function(currenValue,index,arr&#123;return 条件&#125;)       // 判断数组 </span><br><span class="line">有就停止不会往下执行返回布尔值</span><br><span class="line">5.arr.reduce(function(上一次值,当前值)&#123;return 上一次值+当前值&#125;,初始值)    //累计方法</span><br><span class="line">(累加数组中数,有初始值就会加初始值)</span><br><span class="line">如果没初始值,则上一次的值以数组的第一个元素的值</span><br><span class="line">每一次循环,都会把返回值作为下一次循环的上一次值</span><br><span class="line">如果有起始值,则起始值作为上一次值</span><br><span class="line">6.arr.join()                                          //数组元素拼接为字符串</span><br><span class="line">7.arr.find(()=&gt;&#123;&#125;)                                    //返回满足测试函数的值</span><br><span class="line">8.arr.every(()=&gt;&#123;&#125;)                                   //检测数组是否全部满足条件</span><br><span class="line">9.arr.some(()=&gt;&#123;&#125;)                                    //检测是否有一个满足 (有true无false)</span><br><span class="line">静态方法</span><br><span class="line">Array.from(伪数组)                                    //伪数组转化为真数组</span><br></pre></td></tr></table></div></figure>        <h2 id="String"   >          <a href="#String" class="heading-link"><i class="fas fa-link"></i></a><a href="#String" class="headerlink" title="String"></a>String</h2>      <figure class="highlight plaintext"><div class="table-container"><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">1.length                                 //获取字符串长度</span><br><span class="line">2.split(&#x27;分隔符&#x27;)                        // 字符串以分隔符形式创建数组</span><br><span class="line">3.substring(&#x27;起始位置&#x27;,&#x27;截取数量&#x27;)        // 截取字符串</span><br><span class="line">4.startsWith(检测字符串[,起始位置])       //检测是否以某字符开头</span><br><span class="line">5.includes搜索字符串[,起始位置])          //判断是否含有被检测字符串(区分大小写)</span><br><span class="line">6.toUpperCase()                          //用于转化大写</span><br><span class="line">7.toLowerCase()                          //转化小写</span><br><span class="line">8.indexof()                              //检测是否包含某字符</span><br><span class="line">9.replace()                              //替换字符串</span><br><span class="line">10.JSON.perse()                            实现json字符串转化为js对象(反序列化)</span><br><span class="line">11.json.stringify()                          js对象转化为json字符串 (序列化)</span><br></pre></td></tr></table></div></figure>        <h2 id="Number"   >          <a href="#Number" class="heading-link"><i class="fas fa-link"></i></a><a href="#Number" class="headerlink" title="Number"></a>Number</h2>      <figure class="highlight plaintext"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">toFixed(数字)                            //保留多少位四舍五入</span><br></pre></td></tr></table></div></figure>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> javascript </category>
          
          <category> 学习笔记 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> javascript </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>单片机cc2530的日常学习笔记</title>
      <link href="/2023/09/25/%E5%8D%95%E7%89%87%E6%9C%BA%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95/"/>
      <url>/2023/09/25/%E5%8D%95%E7%89%87%E6%9C%BA%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95/</url>
      
        <content type="html"><![CDATA[        <h1 id="将寄存器的某些位清零或置1"   >          <a href="#将寄存器的某些位清零或置1" class="heading-link"><i class="fas fa-link"></i></a><a href="#将寄存器的某些位清零或置1" class="headerlink" title="将寄存器的某些位清零或置1"></a>将寄存器的某些位清零或置1</h1>              <h2 id="置1操作"   >          <a href="#置1操作" class="heading-link"><i class="fas fa-link"></i></a><a href="#置1操作" class="headerlink" title="置1操作"></a>置1操作</h2>      <p><strong>使用或操作:任何值与0相或,保持原值;</strong>          </p><p>​                    <strong>任何值与1相或,结果都为1</strong></p><p>注意:寄存机从右往左开始计算从0位开始,实际计算是直接将要置1位置,进行置然后计算出16进制</p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20230925094712329.png"  alt="image-20230925094712329">      </p><hr>        <h2 id="清0操作"   >          <a href="#清0操作" class="heading-link"><i class="fas fa-link"></i></a><a href="#清0操作" class="headerlink" title="清0操作"></a>清0操作</h2>      <p><strong>使用与操作:任何值与1相与,保持原值;</strong></p><p>​                    <strong>任何值与0相与,结果为0</strong></p><p>注意:为了方便记忆 我们通常使用取反进行操作   先将要清0的位置进行置1操作然后进行取反</p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20230925100637355.png"  alt="image-20230925100637355">      </p><hr>        <h1 id="通用I-0及其相关寄存器"   >          <a href="#通用I-0及其相关寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#通用I-0及其相关寄存器" class="headerlink" title="通用I&#x2F;0及其相关寄存器"></a>通用I&#x2F;0及其相关寄存器</h1>              <h2 id="I-O-引脚概述"   >          <a href="#I-O-引脚概述" class="heading-link"><i class="fas fa-link"></i></a><a href="#I-O-引脚概述" class="headerlink" title="I&#x2F;O 引脚概述"></a>I&#x2F;O 引脚概述</h2>      <p>共有 40 个引脚，</p><p>其中 21 个为可编程数字 I&#x2F;O 引脚，</p><p>分为 3 个端口组。</p><p>P0 端口 8 个引脚，</p><p>P1 端口 8 个引脚，</p><p>P2 端口 5 个引脚。</p><p>其中，P1_0 和 P1_1 引 脚没有上拉&#x2F;下拉能力</p><p>但具有 20mA 的高驱动输出能力，其余的 I&#x2F;O 引脚具有 4mA 的输出驱 动能力。在 P2 端口的 5 个引脚中，其中 2 个用于仿真器接口，2 个引脚用于外部 32KHz 晶 振，在应用中，我们能够使用的数字 I&#x2F;O</p>        <h2 id="相关寄存器"   >          <a href="#相关寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#相关寄存器" class="headerlink" title="相关寄存器"></a>相关寄存器</h2>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20230926203431493.png"  alt="image-20230926203431493">      </p>        <h3 id="PXSEL"   >          <a href="#PXSEL" class="heading-link"><i class="fas fa-link"></i></a><a href="#PXSEL" class="headerlink" title="PXSEL"></a>PXSEL</h3>      <figure class="highlight plaintext"><div class="table-container"><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">PXSEL:端口功能能选择,谁知端口是通用端口还是外设功能端口</span><br><span class="line">0：对应端口被设置为通用 I/O 功能。 </span><br><span class="line">1：对应端口被设置为外设功能</span><br><span class="line">例子:</span><br><span class="line">P1SEL &amp;= ～0x13;      //将 P1_4、P1_1 和 P1_0 设置成通用 I/O 功能， 0001 0011。</span><br><span class="line">P0SEL |= 0x45;      //将 P0_6、P0_2 和 P0_0 设置成外设功能， 0100 0101</span><br></pre></td></tr></table></div></figure>        <h3 id="PXDIR"   >          <a href="#PXDIR" class="heading-link"><i class="fas fa-link"></i></a><a href="#PXDIR" class="headerlink" title="PXDIR"></a>PXDIR</h3>      <figure class="highlight plaintext"><div class="table-container"><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">PXDIR:作为通用i/o时用来选择传输方向</span><br><span class="line">0：输入</span><br><span class="line">1：输出</span><br><span class="line">例子:</span><br><span class="line">P0DIR &amp;= ～0x14;        //将 P0_4 和 P0_2 设置输入方向， 0001 0100。</span><br><span class="line">P1DIR |= 0x26;         //将 P1_5、P1_2 和 P1_1 设置输出方向， 0010 011</span><br></pre></td></tr></table></div></figure>        <h3 id="PXINP"   >          <a href="#PXINP" class="heading-link"><i class="fas fa-link"></i></a><a href="#PXINP" class="headerlink" title="PXINP"></a>PXINP</h3>      <figure class="highlight plaintext"><div class="table-container"><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">PXINP:作为输入端口时,选择模式是上拉/下拉还是三态</span><br><span class="line"></span><br><span class="line">P0INP 端口输入配置寄存器</span><br><span class="line">设置 P0_7 到 P0_0端口的输入模式</span><br><span class="line">0：上拉/下拉（需要结合 P2INP 联合配置）。</span><br><span class="line">1：三态0INP 端口输入配置寄存</span><br><span class="line"></span><br><span class="line">P1INP 端口输入配置寄存器</span><br><span class="line">设置 P1_7 到 P1_2 端口的输入模式。</span><br><span class="line">0：上拉/下拉（需要结合 P2INP 联合配置）。</span><br><span class="line">1：三态</span><br><span class="line"></span><br><span class="line">P2INP 端口输入配置寄存器</span><br><span class="line">第七位:为 P2 端口所有引脚选择上拉或下拉。    0：上拉。 1：下拉</span><br><span class="line">第六位:为 P1 端口所有引脚选择上拉或下拉     0：上拉。 1：下拉。</span><br><span class="line">第五位: 为 P0 端口所有引脚选择上拉或下拉    0：上拉。 1：下拉。</span><br><span class="line">0到4位: 设置 P2_4 到 P2_0 端口的输入模式。 0：上拉/下拉。 1：三态</span><br><span class="line">例子:</span><br><span class="line">将 P0_1 和 P0_3 端口设置成上拉模式</span><br><span class="line">P0INP &amp;= ～0x0A; //先将 P0_3 和 P0_1 端口设置成上拉/下拉。</span><br><span class="line">P2INP &amp;= ～0x20; //再将 P0 端口的所有引脚设置上拉模式</span><br><span class="line"></span><br></pre></td></tr></table></div></figure>        <h3 id="PX"   >          <a href="#PX" class="heading-link"><i class="fas fa-link"></i></a><a href="#PX" class="headerlink" title="PX"></a>PX</h3>      <figure class="highlight plaintext"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">PX:数据端口,用来控制端口的输出或获取端口的输入</span><br></pre></td></tr></table></div></figure>        <h1 id="外部中断及相关寄存器"   >          <a href="#外部中断及相关寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#外部中断及相关寄存器" class="headerlink" title="外部中断及相关寄存器"></a>外部中断及相关寄存器</h1>      <p>简介:</p><p>cc2530的P0,P1,P2端口的每个引脚都具有外部中断输入功能,要使得某些引脚具有中断功能进行设置</p>        <h2 id="IENx中断使能寄存器"   >          <a href="#IENx中断使能寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#IENx中断使能寄存器" class="headerlink" title="IENx中断使能寄存器"></a>IENx中断使能寄存器</h2>      <p>用于设置中断使能</p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231010161216503.png"  alt="image-20231010161216503">      </p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231010161234231.png"  alt="image-20231010161234231">      </p><p>CC2530中定时器1~定时器4的中断使能位分别是IEN1寄存器中的T1IE、T2IE、T3IE、T4IE  可用于设置定时器中断</p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231010161250319.png"  alt="image-20231010161250319">      </p><figure class="highlight plaintext"><div class="table-container"><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">IEN1 |= 0x20;//开P0端口组中断    //IEN1可位寻址也可使用 P0IE=1 (IEN0也可以位寻址)</span><br><span class="line">IEN2 |= 0x10;//开P1端口组中断</span><br><span class="line">IEN2 |= 0x02;//开P2端口组中断</span><br></pre></td></tr></table></div></figure>        <h2 id="PXIEN端口触发寄存器"   >          <a href="#PXIEN端口触发寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#PXIEN端口触发寄存器" class="headerlink" title="PXIEN端口触发寄存器"></a>PXIEN端口触发寄存器</h2>      <p>设置那个端口触发中断使能</p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231010161841838.png"  alt="image-20231010161841838">      </p>        <h2 id="PICTL寄存器-设置中断触发方式"   >          <a href="#PICTL寄存器-设置中断触发方式" class="heading-link"><i class="fas fa-link"></i></a><a href="#PICTL寄存器-设置中断触发方式" class="headerlink" title="PICTL寄存器   设置中断触发方式"></a>PICTL寄存器   设置中断触发方式</h2>      <p>D0到D3设置各个端口的中断触发方式 0为上升沿触发,1为下降沿触发</p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231010162303585.png"  alt="image-20231010162303585">      </p>        <h2 id="PXIFG端口状态标志寄存器"   >          <a href="#PXIFG端口状态标志寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#PXIFG端口状态标志寄存器" class="headerlink" title="PXIFG端口状态标志寄存器"></a>PXIFG端口状态标志寄存器</h2>      <p>必须再中断函数中进行清除操作否则cpu会反复进入中断</p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231011091118576.png"  alt="image-20231011091118576">      </p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231011091140561.png"  alt="image-20231011091140561">      </p>        <h2 id="PXIF中断标志位"   >          <a href="#PXIF中断标志位" class="heading-link"><i class="fas fa-link"></i></a><a href="#PXIF中断标志位" class="headerlink" title="PXIF中断标志位"></a>PXIF中断标志位</h2>      <p>分别对应三个端口位的状态标志寄存器,当某引脚触发特定 这个端口组就会自动置<strong>1</strong> 当在中断服务函数中<strong>必须手动清除</strong></p><p>注意:先清除 PXIFN 再清除PXIF</p><figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">  P1IFG &amp;= ~ 0x04;        //软件清除P1_2引脚的标志位  </span><br><span class="line">  P1IF = 0;               //软件清除P1端口组的标志位</span><br></pre></td></tr></table></div></figure>        <h2 id="总结"   >          <a href="#总结" class="heading-link"><i class="fas fa-link"></i></a><a href="#总结" class="headerlink" title="总结"></a>总结</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">void Init_INTP() //中断初始化函数</span><br><span class="line">&#123;</span><br><span class="line">EA = 1; //开总中断</span><br><span class="line">IENx = ? ; //要用哪一个端口组？P0，P1还是P2？</span><br><span class="line">/*</span><br><span class="line">IEN1 |= 0x20;开P0端口组中断</span><br><span class="line">IEN2 |= 0x10;开P1端口组中断</span><br><span class="line">IEN2 |= 0x01;开P2端口组中断</span><br><span class="line">以上都为固定开各个端口组中断的写法，至于为什么是这样子才能开P0，P1，或P2端口组的中断，翻看手册就知道了</span><br><span class="line">*/</span><br><span class="line">PxIEN = ? ; //开端口组中断之后，要选择用哪一个引脚？</span><br><span class="line">PICTL = ? ; //开引脚中断之后，选择沿触发方式，上升沿还是下降沿？</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"> </span><br></pre></td></tr></table></div></figure><hr>        <h1 id="定时器相关"   >          <a href="#定时器相关" class="heading-link"><i class="fas fa-link"></i></a><a href="#定时器相关" class="headerlink" title="定时器相关"></a>定时器相关</h1>              <h2 id="定时器-计数"   >          <a href="#定时器-计数" class="heading-link"><i class="fas fa-link"></i></a><a href="#定时器-计数" class="headerlink" title="定时器&#x2F;计数"></a>定时器&#x2F;计数</h2>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231013105638296.png"  alt="image-20231013105638296">      </p>        <h3 id="自由运行模式"   >          <a href="#自由运行模式" class="heading-link"><i class="fas fa-link"></i></a><a href="#自由运行模式" class="headerlink" title="自由运行模式"></a>自由运行模式</h3>      <figure class="highlight plaintext"><div class="table-container"><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">计数器从0x0000开始,在每个活动时钟边沿加1,当计数器大道0xffff是就会溢出,计数器重新载入0x0000并开始新的一轮计数</span><br><span class="line">计数周期是固定值0xffff 可用于产生独立的时间间隔,输出信号频率</span><br></pre></td></tr></table></div></figure>        <h3 id="模模式"   >          <a href="#模模式" class="heading-link"><i class="fas fa-link"></i></a><a href="#模模式" class="headerlink" title="模模式"></a>模模式</h3>      <figure class="highlight plaintext"><div class="table-container"><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">计数器从0x0000开始在每个活动时钟边沿加1 当计数器到达T1CC0寄存器保存值时溢出,计数器又将从0x0000开始新的一轮计数</span><br><span class="line">计数周期可由用户设定 T1CC0</span><br><span class="line">注意: 使用模模式，需要开启通道0的输出比较模式</span><br><span class="line">定时器1通道0的输出比较功能通过T1CCTL0寄存器来设置</span><br></pre></td></tr></table></div></figure>        <h3 id="正计数-倒计数模式"   >          <a href="#正计数-倒计数模式" class="heading-link"><i class="fas fa-link"></i></a><a href="#正计数-倒计数模式" class="headerlink" title="正计数&#x2F;倒计数模式"></a>正计数&#x2F;倒计数模式</h3>      <figure class="highlight plaintext"><div class="table-container"><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">计数器反复从0x0000开始 正计数到 T1CC0 保存的最终计数值.然后再倒计数回到0x0000 </span><br><span class="line">可用于中心对齐的pwm信号输出</span><br></pre></td></tr></table></div></figure><hr>        <h2 id="定时器产生中断请求的三种情况"   >          <a href="#定时器产生中断请求的三种情况" class="heading-link"><i class="fas fa-link"></i></a><a href="#定时器产生中断请求的三种情况" class="headerlink" title="定时器产生中断请求的三种情况"></a>定时器产生中断请求的三种情况</h2>      <figure class="highlight plaintext"><div class="table-container"><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">1. 计数器达到最终计数值（溢出或回到0）</span><br><span class="line">2. 输入捕获事件</span><br><span class="line">3. 输出比较事件（模模式时使用）</span><br><span class="line">注意： 使用模模式，需要开启通道0的输出比较模式，否则计数器的值达到T1CC0后，不会产生溢出中断</span><br><span class="line">CC2530中定时器1~定时器4的中断使能位分别是IEN1寄存器中的T1IE、T2IE、T3IE、T4IE</span><br><span class="line">CC2530中定时器1~定时器4分别有一个计数溢出中断屏蔽位：TxOVFIM（可位寻址）。一般不需要对TxOVFIM进行置1操作，因为上电复位时其初始值就是1</span><br></pre></td></tr></table></div></figure>        <h2 id="定时器1的最大计数值和计算与设置"   >          <a href="#定时器1的最大计数值和计算与设置" class="heading-link"><i class="fas fa-link"></i></a><a href="#定时器1的最大计数值和计算与设置" class="headerlink" title="定时器1的最大计数值和计算与设置"></a>定时器1的最大计数值和计算与设置</h2>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231014214751516.png"  alt="image-20231014214751516">      </p>        <h2 id="定时器1相关寄存器"   >          <a href="#定时器1相关寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#定时器1相关寄存器" class="headerlink" title="定时器1相关寄存器"></a>定时器1相关寄存器</h2>              <h3 id="T1CCX-五对T1CCX与T1CCXL"   >          <a href="#T1CCX-五对T1CCX与T1CCXL" class="heading-link"><i class="fas fa-link"></i></a><a href="#T1CCX-五对T1CCX与T1CCXL" class="headerlink" title="T1CCX(五对T1CCX与T1CCXL)"></a>T1CCX(五对T1CCX与T1CCXL)</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231014215316117.png"  alt="image-20231014215316117">      </p>        <h3 id="T1CNTH与T1CNTL-读取16位计数器值"   >          <a href="#T1CNTH与T1CNTL-读取16位计数器值" class="heading-link"><i class="fas fa-link"></i></a><a href="#T1CNTH与T1CNTL-读取16位计数器值" class="headerlink" title="T1CNTH与T1CNTL(读取16位计数器值)"></a>T1CNTH与T1CNTL(读取16位计数器值)</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231014215454350.png"  alt="image-20231014215454350">      </p>        <h3 id="T1CTL-定时器1的控制寄存器"   >          <a href="#T1CTL-定时器1的控制寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#T1CTL-定时器1的控制寄存器" class="headerlink" title="T1CTL (定时器1的控制寄存器)"></a>T1CTL (定时器1的控制寄存器)</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231014215721720.png"  alt="image-20231014215721720">      </p><p>注意一旦设置了这个值之后 定时器立刻开始了计数工作</p><p>将定时器 1 通道 0 的模式选择为比较模式 T1CCTL0 |&#x3D; 0x04;   &#x2F;&#x2F;模模式定时，需开启通道 0 的比较模式</p><hr>        <h2 id="定时器3和定时器4"   >          <a href="#定时器3和定时器4" class="heading-link"><i class="fas fa-link"></i></a><a href="#定时器3和定时器4" class="headerlink" title="定时器3和定时器4"></a>定时器3和定时器4</h2>      <p>CC2530 的定时器 3 和定时器 4 是两个 8 位计数器，在每个时钟边沿递增或递减。每个 定时器有两个独立的比较通道，每个通道使用一个 I&#x2F;O 引脚。这两个定时器有四种工作模式， 分别是：自由运行模式，倒计数模式，模模式和正计数&#x2F;倒计数模式。 在倒计数模式中，定时器启动后，计数器载入 TxCC0 的内容，然后计数器倒计数，直到 其值为 0x00。当达到 0x00 时，设置 TIMIF.TxOVFIF 标志位，如果设置了相应的中断屏蔽位 TxCTL.OVFIM，就会产生一个中断请求。需要注意的是，倒计数模式中，定时器只运行一次， 一般用于需要事件超时间隔的应用。</p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231016161036481.png"  alt="image-20231016161036481">      </p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231016161048378.png"  alt="image-20231016161048378">      </p>        <h2 id="看门狗定时器"   >          <a href="#看门狗定时器" class="heading-link"><i class="fas fa-link"></i></a><a href="#看门狗定时器" class="headerlink" title="看门狗定时器"></a>看门狗定时器</h2>      <p>看门狗中断标志位 WDTIF需要手动清除</p><p> WDTIF&#x3D;0;  &#x2F;&#x2F;手动清除寄存器</p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231017145442357.png"  alt="image-20231017145442357">      </p>        <h3 id="WDCTL-看门狗控制寄存器"   >          <a href="#WDCTL-看门狗控制寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#WDCTL-看门狗控制寄存器" class="headerlink" title="WDCTL 看门狗控制寄存器"></a>WDCTL 看门狗控制寄存器</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231017145704336.png"  alt="image-20231017145704336">      </p>        <h1 id="系统时钟设置"   >          <a href="#系统时钟设置" class="heading-link"><i class="fas fa-link"></i></a><a href="#系统时钟设置" class="headerlink" title="系统时钟设置"></a>系统时钟设置</h1>      <p>系统时钟是从所选的主时钟源获得的</p><p>CC2530的主时钟源,可以用16MHz的内部RC震荡器,也可以用32MHz的外部晶振</p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231017191242206.png"  alt="image-20231017191242206">      </p>        <h2 id="时钟控制命令寄存器CLKCONCMD"   >          <a href="#时钟控制命令寄存器CLKCONCMD" class="heading-link"><i class="fas fa-link"></i></a><a href="#时钟控制命令寄存器CLKCONCMD" class="headerlink" title="时钟控制命令寄存器CLKCONCMD"></a>时钟控制命令寄存器CLKCONCMD</h2>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231017191336117.png"  alt="image-20231017191336117">      </p><p>CLKCONCMD.OSC位选择主系统的时钟源。<br>改变CLKCONCMD.OSC位不会立即改变系统的时钟。<br>时钟源的改变首先在CLKCONSTA.OSC位与CLKCONCMD.OSC位相等的时候生效。因为在实际改变时钟源之前需要有稳定的时钟。</p><p>意思就是要先检测是否稳定在改变值:</p>        <h2 id="时钟控制状态寄存器-只读-CLKCONSTA"   >          <a href="#时钟控制状态寄存器-只读-CLKCONSTA" class="heading-link"><i class="fas fa-link"></i></a><a href="#时钟控制状态寄存器-只读-CLKCONSTA" class="headerlink" title="时钟控制状态寄存器(只读) CLKCONSTA"></a>时钟控制状态寄存器(只读) CLKCONSTA</h2>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231017192603814.png"  alt="image-20231017192603814">      </p><figure class="highlight c"><div class="table-container"><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">将CC2530的系统时钟源从 <span class="number">16</span>MHz 的内部RC振荡器切换成<span class="number">32</span>MHz的外部品报。</span><br><span class="line">CLKCONCMD &amp;= ~<span class="number">0x40</span>;        <span class="comment">//0SC位清0，选择系统时钟源为 32MHz    第六位置0</span></span><br><span class="line"><span class="keyword">while</span>(CLKCONSTA &amp; <span class="number">0x40</span>);    <span class="comment">//等待外部晶振稳定</span></span><br><span class="line">CLKCONCMD &amp;= ~<span class="number">0x07</span>;        <span class="comment">//设置当前系统时钟的速度为 32MHz   前三位都清零</span></span><br></pre></td></tr></table></div></figure><hr>        <h1 id="串口"   >          <a href="#串口" class="heading-link"><i class="fas fa-link"></i></a><a href="#串口" class="headerlink" title="串口"></a>串口</h1>              <h3 id="串行通信接口概述"   >          <a href="#串行通信接口概述" class="heading-link"><i class="fas fa-link"></i></a><a href="#串行通信接口概述" class="headerlink" title="串行通信接口概述"></a>串行通信接口概述</h3>      <p> CC2530 有 2 路功能完成相同的串行通信接口 USART0 和 USATT1，它们能够分别运行于异 步 UART 模式或者同步 SPI 模式。在 UART 模式中，有 2 个独立的中断向量：发送中断和接 收完成中断。当数据缓冲寄存器就绪，准备接受新的发送数据时，就产生一个中断请求。该 中断在传送开始后立刻发生，也就是，当字节正在发送时，新的字节能够装入数据缓冲器。</p>        <h3 id="PERCFG-外设控制寄存器（结合串口外设-I-O-引脚映射"   >          <a href="#PERCFG-外设控制寄存器（结合串口外设-I-O-引脚映射" class="heading-link"><i class="fas fa-link"></i></a><a href="#PERCFG-外设控制寄存器（结合串口外设-I-O-引脚映射" class="headerlink" title="PERCFG 外设控制寄存器（结合串口外设 I&#x2F;O 引脚映射)"></a>PERCFG 外设控制寄存器（结合串口外设 I&#x2F;O 引脚映射)</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231018094357627.png"  alt="image-20231018094357627">      </p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231018094442831.png"  alt="image-20231018094442831">      </p>        <h3 id="波特率的设置"   >          <a href="#波特率的设置" class="heading-link"><i class="fas fa-link"></i></a><a href="#波特率的设置" class="headerlink" title="波特率的设置"></a>波特率的设置</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231018095320686.png"  alt="image-20231018095320686">      </p>        <h3 id="UxBAUD-波特率控制寄存器"   >          <a href="#UxBAUD-波特率控制寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#UxBAUD-波特率控制寄存器" class="headerlink" title="UxBAUD 波特率控制寄存器"></a>UxBAUD 波特率控制寄存器</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231018100333537.png"  alt="image-20231018100333537">      </p>        <h3 id="UxGCR-通用控制寄存器"   >          <a href="#UxGCR-通用控制寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#UxGCR-通用控制寄存器" class="headerlink" title="UxGCR 通用控制寄存器"></a>UxGCR 通用控制寄存器</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231018100430225.png"  alt="image-20231018100430225">      </p>        <h3 id="UxDBUF-接收-发送数据缓存寄存器"   >          <a href="#UxDBUF-接收-发送数据缓存寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#UxDBUF-接收-发送数据缓存寄存器" class="headerlink" title="UxDBUF 接收&#x2F;发送数据缓存寄存器"></a>UxDBUF 接收&#x2F;发送数据缓存寄存器</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231018100519279.png"  alt="image-20231018100519279">      </p>        <h3 id="UxUCR-UART-控制寄存器"   >          <a href="#UxUCR-UART-控制寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#UxUCR-UART-控制寄存器" class="headerlink" title="UxUCR  UART 控制寄存器"></a>UxUCR  UART 控制寄存器</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231018100616109.png"  alt="image-20231018100616109">      </p>        <h3 id="UxCSR-控制和状态寄存器"   >          <a href="#UxCSR-控制和状态寄存器" class="heading-link"><i class="fas fa-link"></i></a><a href="#UxCSR-控制和状态寄存器" class="headerlink" title="UxCSR 控制和状态寄存器"></a>UxCSR 控制和状态寄存器</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231018100700227.png"  alt="image-20231018100700227">      </p>]]></content>
      
      
      <categories>
          
          <category> 学习笔记 </category>
          
          <category> 单片机 </category>
          
          <category> cc2530 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 单片机 </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>javascript的作用域与函数进阶和解构</title>
      <link href="/2023/09/21/JavaScript%E4%BD%9C%E7%94%A8%E5%9F%9F%E4%B8%8E%E5%87%BD%E6%95%B0%E8%BF%9B%E9%98%B6/"/>
      <url>/2023/09/21/JavaScript%E4%BD%9C%E7%94%A8%E5%9F%9F%E4%B8%8E%E5%87%BD%E6%95%B0%E8%BF%9B%E9%98%B6/</url>
      
        <content type="html"><![CDATA[        <h1 id="作用域"   >          <a href="#作用域" class="heading-link"><i class="fas fa-link"></i></a><a href="#作用域" class="headerlink" title="作用域"></a>作用域</h1>              <h2 id="作用域-1"   >          <a href="#作用域-1" class="heading-link"><i class="fas fa-link"></i></a><a href="#作用域-1" class="headerlink" title="作用域"></a>作用域</h2>      <figure class="highlight javascript"><div class="table-container"><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="keyword">let</span>                                      <span class="comment">//声明变量(可以块级作用域)无变量提升</span></span><br><span class="line"><span class="keyword">const</span>                                   <span class="comment">// 声明常量(内存地址)声明必须赋值赋值后不能修改</span></span><br><span class="line">symbol                                  <span class="comment">//新增数据类型无法被更改的数据类型(独一无二的)</span></span><br><span class="line"><span class="keyword">let</span> 名=<span class="title function_">symbol</span>()                     </span><br><span class="line">全局作用域                   写在script标签最外层的</span><br><span class="line">块级作用域                   被&#123;&#125;包裹的作用域使用<span class="keyword">let</span>或<span class="keyword">const</span>声明可形成块级作用域</span><br><span class="line">函数作用域                   函数<span class="keyword">function</span>(<span class="params"></span>)&#123;&#125;中声明变量生成作用域</span><br><span class="line">尽量减少使用全局变量防止全局污染</span><br><span class="line">作用域链</span><br><span class="line">函数执行时会优先查找当前函数作用域中查找变量</span><br><span class="line">如果当前作用域查找不到则会逐级查找父级作用域</span><br></pre></td></tr></table></div></figure>        <h2 id="垃圾回收机制"   >          <a href="#垃圾回收机制" class="heading-link"><i class="fas fa-link"></i></a><a href="#垃圾回收机制" class="headerlink" title="垃圾回收机制"></a>垃圾回收机制</h2>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line">js环境分配的内存是如下生命周期</span><br><span class="line"><span class="number">1.</span>内存分配:变量声明.函数.对象系统自动分配内存  </span><br><span class="line"><span class="number">2.</span>内存使用:使用变量,函数等</span><br><span class="line"><span class="number">3.</span>内存回收:使用完毕,自动垃圾回收</span><br><span class="line">全局变量一般不会回收(关闭页面回收)</span><br><span class="line">局部变量值不用了会被自动回收掉</span><br><span class="line">内存泄漏:分配的内存由于某些原因未释放或无法释放叫内存泄漏</span><br><span class="line">标记清除法(现用)和引用计数法</span><br></pre></td></tr></table></div></figure>        <h2 id="闭包"   >          <a href="#闭包" class="heading-link"><i class="fas fa-link"></i></a><a href="#闭包" class="headerlink" title="闭包"></a>闭包</h2>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line">作用:封闭数据,提供操作,外部也可以访问函数内部的变量(保证数据的私密性)</span><br><span class="line">问题:可能会引起内存泄漏</span><br><span class="line">基本格式:</span><br><span class="line"><span class="keyword">function</span> <span class="title function_">outer</span>(<span class="params"></span>) &#123;</span><br><span class="line">  <span class="keyword">let</span> i =<span class="number">1</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">fn</span>(<span class="params"></span>)&#123;</span><br><span class="line">  <span class="title function_">log</span>(i)</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> fn</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">const</span> fun =<span class="title function_">outer</span>()</span><br><span class="line"><span class="title function_">fun</span>()</span><br></pre></td></tr></table></div></figure>        <h2 id="变量提升"   >          <a href="#变量提升" class="heading-link"><i class="fas fa-link"></i></a><a href="#变量提升" class="headerlink" title="变量提升"></a>变量提升</h2>      <figure class="highlight javascript"><div class="table-container"><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="keyword">var</span>中才有变量提升</span><br><span class="line"><span class="number">1.</span>把所有<span class="keyword">var</span>声明变量提升到当前作用域最前面</span><br><span class="line"><span class="number">2.</span>只提升,不赋值</span><br></pre></td></tr></table></div></figure><hr>        <h1 id="函数进阶"   >          <a href="#函数进阶" class="heading-link"><i class="fas fa-link"></i></a><a href="#函数进阶" class="headerlink" title="函数进阶"></a>函数进阶</h1>              <h2 id="函数提升"   >          <a href="#函数提升" class="heading-link"><i class="fas fa-link"></i></a><a href="#函数提升" class="headerlink" title="函数提升"></a>函数提升</h2>      <figure class="highlight javascript"><div class="table-container"><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="number">1.</span>会把所有函数声明提升到当前作用域的最前面</span><br><span class="line"><span class="number">2.</span> 只会提升函数声明,不提升函数调用</span><br><span class="line">函数表达式必须先声明和赋值后调用</span><br></pre></td></tr></table></div></figure>        <h2 id="函数参数"   >          <a href="#函数参数" class="heading-link"><i class="fas fa-link"></i></a><a href="#函数参数" class="headerlink" title="函数参数"></a>函数参数</h2>      <figure class="highlight javascript"><div class="table-container"><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="number">1.</span>动态参数</span><br><span class="line"><span class="variable language_">arguments</span> 是函数内部内置伪数组变量它包含了调用函数时传入的所有实参</span><br><span class="line"><span class="number">2.</span>剩余参数</span><br><span class="line"><span class="keyword">function</span> <span class="title function_">getSum</span>(<span class="params">a,b,...arr</span>)&#123;&#125;</span><br><span class="line">使用三个...接收传进来的剩余参数形成数组(真数组)多使用剩余参数</span><br></pre></td></tr></table></div></figure>        <h2 id="展开运算符"   >          <a href="#展开运算符" class="heading-link"><i class="fas fa-link"></i></a><a href="#展开运算符" class="headerlink" title="展开运算符"></a>展开运算符</h2>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line">将数组数据进行展开如数组[<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>] 展开后就是<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span></span><br><span class="line">使用场景</span><br><span class="line"><span class="number">1.</span>计算数组最大最小值</span><br><span class="line"><span class="number">2.</span>合并数组</span><br></pre></td></tr></table></div></figure>        <h2 id="箭头函数"   >          <a href="#箭头函数" class="heading-link"><i class="fas fa-link"></i></a><a href="#箭头函数" class="headerlink" title="箭头函数"></a>箭头函数</h2>      <figure class="highlight javascript"><div class="table-container"><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">()=&gt;&#123;&#125;                         <span class="comment">//箭头函数</span></span><br><span class="line">当只传递一个参数时可省略小括号 a=&gt;&#123;&#125;</span><br><span class="line">只有一行代码可以省略大括号 也可以省略<span class="keyword">return</span></span><br><span class="line">返回一个对象字面量要加括号</span><br><span class="line"><span class="keyword">const</span> fn=&gt;(&#123;<span class="attr">uname</span>:uame&#125;)</span><br><span class="line"><span class="title function_">fn</span>(<span class="string">&#x27;zjm&#x27;</span>)</span><br><span class="line">箭头函数参数</span><br><span class="line">箭头函数没有<span class="variable language_">arguments</span>动态参数</span><br><span class="line">有剩余参数...arr</span><br><span class="line">箭头函数的<span class="variable language_">this</span>指向</span><br><span class="line">箭头函数<span class="variable language_">this</span> 是上一层作用域<span class="variable language_">this</span>指向</span><br></pre></td></tr></table></div></figure><hr>        <h1 id="解构赋值"   >          <a href="#解构赋值" class="heading-link"><i class="fas fa-link"></i></a><a href="#解构赋值" class="headerlink" title="解构赋值"></a>解构赋值</h1>              <h2 id="数组解构"   >          <a href="#数组解构" class="heading-link"><i class="fas fa-link"></i></a><a href="#数组解构" class="headerlink" title="数组解构"></a>数组解构</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">基本语法 const [a,b,c]=[100,60,80] 右侧数组的单元值将被赋值给左侧变量</span><br><span class="line">变量的顺序对应单元值位置依次进行赋值操作</span><br><span class="line">js必须前面加分号的情况有两种</span><br><span class="line">1.立即执行函数必须加分号结束</span><br><span class="line">2.使用数组的时候前面必须加分号</span><br><span class="line">传参问题</span><br><span class="line">1.变量多单元格值少多戳的变量为undefined</span><br><span class="line">2.变量少,单元值多可以利用剩余参数接收不然会报错</span><br><span class="line">3.防止undefined传递可以直接个变量赋值</span><br><span class="line">4.按需导入,忽略某些值如 const [a,b,,d]=[1,2,3,4]    d=4</span><br></pre></td></tr></table></div></figure>        <h2 id="对象解构"   >          <a href="#对象解构" class="heading-link"><i class="fas fa-link"></i></a><a href="#对象解构" class="headerlink" title="对象解构"></a>对象解构</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">赋值运算符 = 左侧的&#123;&#125;用于批量声明变量  const &#123; &#125; = obj</span><br><span class="line">对象属性的值将被赋值个与属性名相同的变量</span><br><span class="line">注意解构的变量名不要和外面的变量名冲突否则报错</span><br><span class="line">对象中找不到与变量名一致的属性值为undefined</span><br><span class="line">1.为解构属性的改名</span><br><span class="line">const &#123;uname:name,age&#125;=&#123;uname:&#x27;zjm&#x27;,age:21&#125; 这样就可以直接使用name</span><br><span class="line">2.解构数组对象</span><br><span class="line">const [&#123;uname:p,age:sum&#125;]=&#123;uname:&#x27;pig&#x27;,age:21&#125;</span><br><span class="line">3.多级对象解构</span><br><span class="line">const &#123;uname,family:&#123;mother,...&#125;&#125; =&#123;uname:&#x27;pig&#x27;,family&#123;mother:&#x27;猪妈妈&#x27;&#125;&#125;</span><br></pre></td></tr></table></div></figure>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> javascript </category>
          
          <category> 学习笔记 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> 函数 </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>javascript的Bom与特效</title>
      <link href="/2023/09/14/javascriptBom%E4%B8%8E%E5%9F%BA%E7%A1%80%E7%89%B9%E6%95%88/"/>
      <url>/2023/09/14/javascriptBom%E4%B8%8E%E5%9F%BA%E7%A1%80%E7%89%B9%E6%95%88/</url>
      
        <content type="html"><![CDATA[        <h1 id="BOM"   >          <a href="#BOM" class="heading-link"><i class="fas fa-link"></i></a><a href="#BOM" class="headerlink" title="BOM"></a>BOM</h1>              <h2 id="navigator-location-history"   >          <a href="#navigator-location-history" class="heading-link"><i class="fas fa-link"></i></a><a href="#navigator-location-history" class="headerlink" title="navigator location history"></a>navigator location history</h2>      <figure class="highlight javascript"><div class="table-container"><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">navigator对象 包含有关浏览器的信息 最常用的是userAgent可用来判断</span><br><span class="line">手机端和电脑端显示不同界面</span><br><span class="line">location对象                                         </span><br><span class="line">location.<span class="property">href</span>               <span class="comment">// 获取设置整个url</span></span><br><span class="line">location.<span class="property">host</span>               <span class="comment">// 返回主机域名</span></span><br><span class="line">location.<span class="property">port</span>               <span class="comment">// 返回端口号</span></span><br><span class="line">location.<span class="property">pathname</span>          <span class="comment">// 返回路径</span></span><br><span class="line">location.<span class="property">search</span>           <span class="comment">// 返回参数</span></span><br><span class="line">location.<span class="property">hash</span>              <span class="comment">// 返回片段#后面内容常见锚点</span></span><br><span class="line">location.<span class="title function_">reload</span>()           <span class="comment">//刷新界面</span></span><br><span class="line">history对象                                                    </span><br><span class="line">history.<span class="title function_">back</span>( )              <span class="comment">//可以后退功能</span></span><br><span class="line">history.<span class="property">forward</span>         <span class="comment">// 前进功能</span></span><br><span class="line">history.<span class="title function_">go</span>(参数)         <span class="comment">// 前进后退功能参数如果是1  前进一个界面  -1后退一个界面</span></span><br></pre></td></tr></table></div></figure>        <h2 id="本地存储"   >          <a href="#本地存储" class="heading-link"><i class="fas fa-link"></i></a><a href="#本地存储" class="headerlink" title="本地存储"></a>本地存储</h2>      <figure class="highlight javascript"><div class="table-container"><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="variable language_">window</span>.<span class="property">sessionStorage</span>                                        </span><br><span class="line"><span class="number">1.</span>生命周期为关闭浏览器窗口</span><br><span class="line"><span class="number">2.</span>在同一个窗口(页面)下数据可以共享</span><br><span class="line"><span class="number">3.</span>以键值对的形式储存使用</span><br><span class="line"><span class="variable language_">sessionStorage</span>.<span class="title function_">setltem</span>(名称key,value)                   <span class="comment">// 存储数据</span></span><br><span class="line"><span class="variable language_">sessionStorage</span>.<span class="title function_">getltem</span>(key)                              <span class="comment">// 获取数据</span></span><br><span class="line"><span class="variable language_">sessionStorage</span>.<span class="title function_">removeltem</span>(key)                           <span class="comment">// 删除数据</span></span><br><span class="line"><span class="variable language_">sessionStorage</span>.<span class="title function_">clear</span>( )                                   <span class="comment">// 删除所有数据</span></span><br><span class="line"><span class="variable language_">window</span>.<span class="property">localStorage</span>                                             </span><br><span class="line"><span class="number">1.</span>永久有效 ,除非手动删除 否则关闭界面也会存在</span><br><span class="line"><span class="number">2.</span>可多窗口共享 同一浏览器</span><br><span class="line"><span class="number">3.</span>以键值队的形式储存使用</span><br><span class="line"><span class="variable language_">localStorage</span>.<span class="title function_">setltem</span>(名称key,value)                    <span class="comment">//存储数据</span></span><br><span class="line"><span class="variable language_">localStorage</span>.<span class="title function_">getltem</span>(key)                               <span class="comment">// 获取数据</span></span><br><span class="line"><span class="variable language_">localStorage</span>.<span class="title function_">removeltem</span>(key)                           <span class="comment">//  删除数据</span></span><br><span class="line"><span class="variable language_">localStorage</span>.<span class="title function_">clear</span>( )                                     <span class="comment">// 删除所有数据</span></span><br><span class="line"></span><br><span class="line">本地储存只能存储字符串数据格式 我们把对象转化为字符串格式  <span class="title class_">JSON</span>.<span class="title function_">stringify</span>()</span><br><span class="line">使用<span class="title class_">JSON</span>.<span class="title function_">parse</span>()转化为对象格式</span><br></pre></td></tr></table></div></figure><hr>        <h1 id="网页特效"   >          <a href="#网页特效" class="heading-link"><i class="fas fa-link"></i></a><a href="#网页特效" class="headerlink" title="网页特效"></a>网页特效</h1>              <h2 id="offset系列"   >          <a href="#offset系列" class="heading-link"><i class="fas fa-link"></i></a><a href="#offset系列" class="headerlink" title="offset系列"></a>offset系列</h2>      <figure class="highlight javascript"><div class="table-container"><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">element.<span class="property">offsetTop</span>                    <span class="comment">// 返回元素带有定位父元素上方偏移</span></span><br><span class="line">element.<span class="property">offsetLeft</span>                  <span class="comment">// 返回元素相对带有定位的父元素左边偏移  (没有定位以body为准)</span></span><br><span class="line">element.<span class="property">offsetWidth</span>                 <span class="comment">// 返回元素大小高度包含  padding+border+width</span></span><br><span class="line">element.<span class="property">offsetHeight</span>                <span class="comment">//返回元素大小高度包含  padding+border+height</span></span><br><span class="line">element.<span class="property">offsetParent</span>              <span class="comment">// 返回该元素带有定位的父级元素  如果没有定位返回body</span></span><br></pre></td></tr></table></div></figure>        <h2 id="client-系列"   >          <a href="#client-系列" class="heading-link"><i class="fas fa-link"></i></a><a href="#client-系列" class="headerlink" title="client 系列"></a>client 系列</h2>      <figure class="highlight javascript"><div class="table-container"><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">element.<span class="property">clientTop</span>                         <span class="comment">//返回元素上边框大小</span></span><br><span class="line">element.<span class="property">clientLeft</span>                        <span class="comment">//返回左边框大小</span></span><br><span class="line">element.<span class="property">clientWidth</span>                      <span class="comment">//返回自身包括padding 内容宽度不含边框</span></span><br><span class="line">element.<span class="property">clientHeight</span>                     <span class="comment">//返回自身包括padding 内容高度 不含边框</span></span><br></pre></td></tr></table></div></figure>        <h2 id="scroll-系列"   >          <a href="#scroll-系列" class="heading-link"><i class="fas fa-link"></i></a><a href="#scroll-系列" class="headerlink" title="scroll 系列"></a>scroll 系列</h2>      <figure class="highlight javascript"><div class="table-container"><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">element.<span class="property">scrollTop</span>                        <span class="comment">//返回被卷上去的上册距离</span></span><br><span class="line">elenmnt.<span class="property">scrollLeft</span>                       <span class="comment">// 返回被卷去的左侧距离</span></span><br><span class="line">element.<span class="property">scrollWidth</span>               <span class="comment">//返回自身实际宽度  不含边框包含padding  滚动所有宽度</span></span><br><span class="line">element.<span class="property">scrollHeight</span>              <span class="comment">//返回自身实际高度  不含边框包含padding  滚动所有高度</span></span><br><span class="line">页面被卷去的头部     是      <span class="variable language_">window</span>.<span class="property">pageYoffset</span></span><br><span class="line"><span class="variable language_">document</span>.<span class="property">documentElement</span>.<span class="property">scrollTop</span></span><br><span class="line">mousever  鼠标经过自身盒子会触发 经过子盒子还会触发  mouseentre 只会经过自身盒子触发</span><br><span class="line">之所以这样mouseenter不会冒泡    缓动动画公式  :(目标值-现在位置)/<span class="number">10</span></span><br></pre></td></tr></table></div></figure>        <h2 id="移动端知识"   >          <a href="#移动端知识" class="heading-link"><i class="fas fa-link"></i></a><a href="#移动端知识" class="headerlink" title="移动端知识"></a>移动端知识</h2>      <figure class="highlight javascript"><div class="table-container"><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">touchstart                                  <span class="comment">// 手指触摸到</span></span><br><span class="line">touchmove                                   <span class="comment">//元素上滑动</span></span><br><span class="line">touchend                                   <span class="comment">//  从元素上移开触发</span></span><br><span class="line">transitionend                              <span class="comment">//  过渡结束事件</span></span><br><span class="line">触摸事件对象</span><br><span class="line">touches                                <span class="comment">//  正在触摸屏幕所有手指的列表</span></span><br><span class="line">targetTouches                             <span class="comment">// 正在触摸当前dom元素手指列表</span></span><br><span class="line">changedTouches                          <span class="comment">// 手指状态发生改变的列表 从无到有或者 从有到无</span></span><br><span class="line"></span><br><span class="line">click延时解决(因为移动端双击会缩放页面所有延时300ms)</span><br><span class="line"><span class="number">1.</span>禁用缩放</span><br><span class="line">&lt;meta name=<span class="string">&quot;viewport&quot;</span> content=<span class="string">&quot;user-scalable=no&quot;</span>&gt;</span><br><span class="line"><span class="number">2.</span>fastclick 插件解决300ms延时问题</span><br><span class="line">先引入文件然后</span><br><span class="line"><span class="keyword">if</span> (<span class="string">&#x27;addEventListener&#x27;</span> <span class="keyword">in</span> <span class="variable language_">document</span>) &#123;</span><br><span class="line"><span class="variable language_">document</span>.<span class="title function_">addEventListener</span>(<span class="string">&#x27;DOMContentLoaded&#x27;</span>, <span class="keyword">function</span>(<span class="params"></span>) &#123;</span><br><span class="line"><span class="title class_">FastClick</span>.<span class="title function_">attach</span>(<span class="variable language_">document</span>.<span class="property">body</span>);</span><br><span class="line">&#125;, <span class="literal">false</span>);</span><br><span class="line">&#125;</span><br><span class="line">轮播图插件</span><br><span class="line"><span class="title class_">Swiper</span>插件使用</span><br><span class="line">视频插件   zy.<span class="property">media</span>,js插件设置视频样式</span><br></pre></td></tr></table></div></figure><hr>        <h1 id="正则表达式"   >          <a href="#正则表达式" class="heading-link"><i class="fas fa-link"></i></a><a href="#正则表达式" class="headerlink" title="正则表达式"></a>正则表达式</h1>              <h2 id="语法"   >          <a href="#语法" class="heading-link"><i class="fas fa-link"></i></a><a href="#语法" class="headerlink" title="语法"></a>语法</h2>      <figure class="highlight javascript"><div class="table-container"><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">正则表达式:是用于匹配字符串中字符的组合模式  js中也是对象</span><br><span class="line">创建正则表达式</span><br><span class="line"><span class="keyword">let</span> 名 = <span class="keyword">new</span> <span class="title class_">RegExp</span>(<span class="regexp">/表达式/</span>)</span><br><span class="line"><span class="keyword">let</span> 名 = <span class="regexp">/表达式/</span></span><br><span class="line">使用方法</span><br><span class="line">名.<span class="title function_">test</span>(检测字符串)                 <span class="comment">//符合返回true否则返回false</span></span><br><span class="line">名.<span class="title function_">exec</span>(检测字符串)                 <span class="comment">//检测是否含有返回数组得知位置的索引无返回就是null</span></span><br><span class="line"><span class="keyword">let</span> 名 = <span class="regexp">/ 表达式/</span>修饰符(swith)</span><br><span class="line">swith匹配模式三种:</span><br><span class="line">g                             <span class="comment">//全局匹配</span></span><br><span class="line">i                             <span class="comment">//忽略大小写</span></span><br><span class="line">gi                            <span class="comment">//全局匹配+忽略大小写</span></span><br><span class="line"></span><br><span class="line">替换</span><br><span class="line">字符串.<span class="title function_">replace</span>(<span class="string">&#x27;被替换&#x27;</span>,<span class="string">&#x27;替换成&#x27;</span>)       <span class="comment">//常用忽略敏感词汇replace(&#x27;/敏感词/&#x27;,&#x27;替换词&#x27;)</span></span><br></pre></td></tr></table></div></figure>        <h2 id="元字符-特殊字符"   >          <a href="#元字符-特殊字符" class="heading-link"><i class="fas fa-link"></i></a><a href="#元字符-特殊字符" class="headerlink" title="元字符(特殊字符)"></a>元字符(特殊字符)</h2>      <figure class="highlight javascript"><div class="table-container"><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="number">1.</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="number">2.</span>量词                           </span><br><span class="line">用来设定某个模式出现次数</span><br><span class="line">*                              <span class="comment">//0或者更多词</span></span><br><span class="line">+                              <span class="comment">//重复一次或者是更多</span></span><br><span class="line">?                              <span class="comment">// 重复0或者一次</span></span><br><span class="line">&#123;n&#125;                            <span class="comment">//重复n次</span></span><br><span class="line">&#123;n,&#125;                           <span class="comment">// n次或更多次</span></span><br><span class="line">&#123;n,m&#125;                          <span class="comment">// n到m次</span></span><br><span class="line"><span class="number">3.</span>字符类</span><br><span class="line">[匹配词]                       <span class="comment">//只要包含匹配里面的任何一个就是true</span></span><br><span class="line">[a-z]      (a到z <span class="number">26</span>个英文字母)</span><br><span class="line">[a-zA-Z]   (a到z <span class="number">26</span>个英文字母大小写都可以)</span><br><span class="line">[<span class="number">0</span>-<span class="number">9</span>]      (<span class="number">0</span>到<span class="number">9</span>数字都可以)</span><br><span class="line">[^a-z]     取反除了a-z</span><br></pre></td></tr></table></div></figure>        <h2 id="预定义类"   >          <a href="#预定义类" class="heading-link"><i class="fas fa-link"></i></a><a href="#预定义类" class="headerlink" title="预定义类"></a>预定义类</h2>      <div class="table-container"><table><thead><tr><th align="center"><strong>预定义类</strong></th><th align="center">说明</th></tr></thead><tbody><tr><td align="center">\d</td><td align="center">匹配0-9之间任意一个数字，相当于[0-9]</td></tr><tr><td align="center">\D</td><td align="center">匹配除0-9之外任意字符，相当于[^0-9]</td></tr><tr><td align="center">\w</td><td align="center">匹配任意字母，数字和下划线，相当于[A-Za-z0-9_]</td></tr><tr><td align="center">\W</td><td align="center">匹配任意除字母，数字和下划线之外任意字符，相当于[^A-Za-z0-9_]</td></tr><tr><td align="center">\s</td><td align="center">匹配空格（换行符，制表符，空格符等），相当于[\t\r\n\v\f]</td></tr><tr><td align="center">\S</td><td align="center">匹配除空格之外任意字符，相当于[^\t\r\n\v\f]</td></tr></tbody></table></div>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> javascript </category>
          
          <category> 学习笔记 </category>
          
          <category> 本地存储 </category>
          
          <category> 正则 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> Bom </tag>
            
            <tag> 本地存储 </tag>
            
            <tag> 正则 </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>前端经典面试题</title>
      <link href="/2023/09/10/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98/"/>
      <url>/2023/09/10/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98/</url>
      
        <content type="html"><![CDATA[<hr>        <h1 id="基础知识"   >          <a href="#基础知识" class="heading-link"><i class="fas fa-link"></i></a><a href="#基础知识" class="headerlink" title="基础知识"></a>基础知识</h1>              <h2 id="说一下-http与https"   >          <a href="#说一下-http与https" class="heading-link"><i class="fas fa-link"></i></a><a href="#说一下-http与https" class="headerlink" title="说一下 http与https"></a>说一下 http与https</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">HTTP是用于在Web浏览器和Web服务器之间传输信息的协议，而HTTPS是HTTP协议的安全版本，</span><br><span class="line">通过加密和身份验证确保数据的安全性和真实性。HTTPS使用SSL / TLS协议加密数据传输，并常用于处理敏感信息和保护用户隐私。</span><br><span class="line"></span><br></pre></td></tr></table></div></figure><ul><li><p>知识点:<br>当谈到HTTP（Hypertext Transfer Protocol）和HTTPS（Hypertext Transfer Protocol Secure）时，这两者都是用于在计算机网络上传输数据的协议。<br>HTTP 是一种无状态的协议，它使用TCP作为传输层协议，用于在Web浏览器和Web服务器之间传输信息，常用于页面请求和响应。HTTP的常见端口号是80。<br>然而，HTTPS是在HTTP上加密和身份验证的安全版本。它使用公钥加密算法（如SSL &#x2F; TLS）来保护数据的传输，并确保通信的机密性和完整性。HTTPS的常见端口号是443。<br>HTTP和HTTPS的主要区别在于安全性。HTTPS通过加密和数字证书验证确保了数据的安全性和真实性。在HTTPS中，服务器和浏览器之间的通信是通过使用SSL &#x2F; TLS协议来进行加密和保护的。<br>对于前端开发而言，了解HTTP和HTTPS的基本概念非常重要。当我们在开发网站时，需要考虑使用HTTPS来加强对数据的保护，特别是在进行用户登录、交易或传输敏感信息时。同时，还要了解如何在前端页面中正确地处理HTTP和HTTPS请求，以确保数据的安全性和正确性。</p><p>https 协议的缺点 </p><ol><li><p>https 握手阶段比较费时，</p></li><li><p>会使页面加载时间延长 50%，增加 10%~20%的耗电。</p></li><li><p>https 缓存不如 http 高效，会增加数据开销。 SSL 证书也需要钱，功能越强大的证书费用越高。</p></li><li><p>SSL 证书需要绑定 IP，不能再同一个 ip 上绑定多个域名，ipv4 资源支持不了这种消耗</p></li></ol></li></ul><hr>        <h2 id="TCP的三次握手四次挥手"   >          <a href="#TCP的三次握手四次挥手" class="heading-link"><i class="fas fa-link"></i></a><a href="#TCP的三次握手四次挥手" class="headerlink" title="TCP的三次握手四次挥手"></a>TCP的三次握手四次挥手</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">TCP三次握手是建立TCP连接的一种过程。</span><br><span class="line">首先，客户端发送一个请求连接的SYN报文给服务器。</span><br><span class="line">然后服务器收到并确认客户端的请求，发送一个带有自己SYN和确认号的报文作为回应。</span><br><span class="line">最后，客户端收到服务器的确认后，再发送一个确认报文给服务器。</span><br><span class="line">这样，双方都知道彼此准备好进行数据传输，TCP连接便建立成功。这个过程确保了通信双方的可靠性和同步性，</span><br><span class="line">以保证后续的数据传输的正常进行。</span><br></pre></td></tr></table></div></figure><figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">不能直接一次性断开连接(双方知晓), 万一还有什么数据没有传完, 造成数据的丢失!</span><br><span class="line"> 这和有礼貌的好友道别一样：（a：客户端 b:服务端）</span><br><span class="line">1、一开始A想要回家离开，但是呢？怕B还有事情要交代，那么呢？只好先向B打招呼，我要走了，请求停止交谈(请求断开连接)</span><br><span class="line">(此时，a到B的连接没有断开，依旧可以进行通信）；</span><br><span class="line">2、同意A的请求，说好的，但是我这里可能还有一些话（数据）没说完。我检查看看,  你等等,  等我说完你再走。</span><br><span class="line">3、B确实没啥要补充的了，就告知你我可以撤了</span><br><span class="line">4、A说好的，知道了，88；（B得知A走开了，关闭了自己的连接 )</span><br></pre></td></tr></table></div></figure><ul><li><p>知识点:TCP三次握手是在建立TCP连接时的一种握手过程。它确保了通信双方的可靠性和同步性。以下是TCP三次握手的步骤：</p><ol><li>第一次握手（SYN）：客户端向服务器发送一个SYN报文，请求建立连接。报文中包含随机生成的初始序列号（ISN）。</li><li>第二次握手（SYN + ACK）：服务器收到客户端的SYN报文后，确认接收，并发送一个带有自己的SYN和确认号（ACK）的报文作为回应。服务器还会生成自己的初始序列号（ISN）并发送给客户端。</li><li>第三次握手（ACK）：客户端收到服务器的确认后，发送一个ACK报文作为回应。该报文中的确认号是服务器发送的SYN + ACK报文的序列号加1。</li></ol><p>通过这个三次握手过程，两个端点（客户端和服务器）可以确认彼此都已准备好进行数据传输。在握手完成后，TCP连接就建立起来了，双方可以开始传输数据。</p></li></ul><hr>        <h2 id="TCP-和-UDP-的区别"   >          <a href="#TCP-和-UDP-的区别" class="heading-link"><i class="fas fa-link"></i></a><a href="#TCP-和-UDP-的区别" class="headerlink" title="TCP 和 UDP 的区别"></a>TCP 和 UDP 的区别</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">（1）TCP 是面向连接的，udp 是无连接的即发送数据前不需要先建立链接。</span><br><span class="line">（2）TCP 提供可靠的服务。也就是说，通过 TCP 连接传送的数据，无差错，不丢失，不重复，且按序到达;UDP 尽最大努力交付，</span><br><span class="line">     即不保证可靠交付。 并且因为 tcp 可靠， 面向连接，不会丢失数据因此适合大数据量的交换。</span><br><span class="line">（3）TCP 是面向字节流，UDP 面向报文，并且网络出现拥塞不会使得发送速率降低（因此会出现丢包）。</span><br><span class="line">（4）TCP 只能是 1 对 1 的，UDP 支持 1 对 1,1 对多。</span><br><span class="line">（5）TCP 的首部较大为 20 字节，而 UDP 只有 8 字节。</span><br><span class="line">（6）TCP 是面向连接的可靠性传输，而 UDP 是不可靠的。</span><br></pre></td></tr></table></div></figure><hr>        <h2 id="https常见状态码"   >          <a href="#https常见状态码" class="heading-link"><i class="fas fa-link"></i></a><a href="#https常见状态码" class="headerlink" title="https常见状态码"></a>https常见状态码</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">    200 OK：请求成功。服务器成功处理了请求并返回了请求的资源。</span><br><span class="line">    301 Moved Permanently：永久重定向。请求的资源被永久移动到其他位置。</span><br><span class="line">    302 Found：临时重定向。请求的资源临时移动到其他位置。</span><br><span class="line">    400 Bad Request：请求错误。服务器无法理解请求的语法或参数。</span><br><span class="line">    401 Unauthorized：未授权。需要身份验证或认证才能访问请求的资源。</span><br><span class="line">    403 Forbidden：禁止访问。服务器拒绝请求访问所请求的资源。</span><br><span class="line">    404 Not Found：未找到。服务器找不到请求的资源。</span><br><span class="line">    500 Internal Server Error：内部服务器错误。服务器在处理请求时遇到了错误。</span><br><span class="line">    502 Bad Gateway：网关错误。作为代理或网关的服务器从上游服务器接收到无效的响应。</span><br><span class="line">    503 Service Unavailable：服务不可用。服务器暂时无法处理请求，通常是由于过载或维护。</span><br><span class="line"></span><br></pre></td></tr></table></div></figure><hr>        <h2 id="输入URL解析过程"   >          <a href="#输入URL解析过程" class="heading-link"><i class="fas fa-link"></i></a><a href="#输入URL解析过程" class="headerlink" title="输入URL解析过程"></a>输入URL解析过程</h2>      <figure class="highlight plaintext"><div class="table-container"><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">1.DNS解析：将URL中的域名解析为对应的IP地址。</span><br><span class="line">2.建立TCP连接：使用解析得到的IP地址，浏览器与服务器建立TCP连接。</span><br><span class="line">3.发送HTTP请求：浏览器向服务器发送HTTP请求，包括请求的方法、URI和请求头信息。</span><br><span class="line">4.服务器处理请求：服务器接收到请求后，根据请求的URI和方法，处理请求并准备响应。</span><br><span class="line">5.响应HTTP请求：服务器生成HTTP响应，包括状态码、响应头和响应体，并发送回浏览器。</span><br><span class="line">接收并渲染页面：浏览器接收到服务器的响应后，解析响应体中的HTML代码，并构建DOM树。</span><br><span class="line">然后，根据CSS样式和JavaScript代码对页面进行渲染，最终将渲染结果呈现在用户的屏幕上。</span><br><span class="line"></span><br></pre></td></tr></table></div></figure><hr>        <h2 id="GET-和-POST-的区别"   >          <a href="#GET-和-POST-的区别" class="heading-link"><i class="fas fa-link"></i></a><a href="#GET-和-POST-的区别" class="headerlink" title="GET 和 POST 的区别"></a>GET 和 POST 的区别</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">GET是通过URL传递数据，参数暴露在URL上，适合传输少量数据，不安全，可被缓存，幂等性。</span><br><span class="line">POST是通过请求体传递数据，参数不暴露在URL上，适合传输大量数据，安全，不可缓存，不一定具有幂等性</span><br></pre></td></tr></table></div></figure><ul><li>知识点:</li></ul><ol><li>数据传递方式：GET请求将数据通过URL的查询参数进行传递，数据会附加在URL的后面，例如：<span class="exturl"><a class="exturl__link"   href="http://example.com/path?key1=value1&key2=value2%E3%80%82%E8%80%8CPOST%E8%AF%B7%E6%B1%82%E5%B0%86%E6%95%B0%E6%8D%AE%E5%8C%85%E5%90%AB%E5%9C%A8%E8%AF%B7%E6%B1%82%E4%BD%93%E4%B8%AD%EF%BC%8C%E4%B8%8D%E4%BC%9A%E7%9B%B4%E6%8E%A5%E6%9A%B4%E9%9C%B2%E5%9C%A8URL%E4%B8%AD%E3%80%82" >http://example.com/path?key1=value1&amp;key2=value2。而POST请求将数据包含在请求体中，不会直接暴露在URL中。</a><span class="exturl__icon"><i class="fas fa-external-link-alt"></i></span></span></li><li>数据长度限制：GET请求的传输数据长度有限制，通常在几千个字符左右。而POST请求没有严格的长度限制，可以传输较大的数据。</li><li>数据安全性：GET请求的参数会暴露在URL中，可能被浏览器历史记录、服务器日志记录等所记录，不适合传输敏感信息。POST请求的参数不会直接暴露在URL中，因此相对来说更安全。</li><li>缓存：GET请求通常可以被浏览器缓存，因为GET请求无副作用，多次请求同一URL可以从缓存中获取响应。POST请求默认是不可缓存的，因为POST请求可能对服务器端产生副作用。</li><li>幂等性：GET请求是幂等的，多次重复请求对服务器产生的结果是一样的，不会产生副作用。而POST请求一般不是幂等的，多次请求可能会产生不同的结果，可能对服务器产生副作用。</li></ol><hr>        <h2 id="浏览器常见存储方式"   >          <a href="#浏览器常见存储方式" class="heading-link"><i class="fas fa-link"></i></a><a href="#浏览器常见存储方式" class="headerlink" title="浏览器常见存储方式"></a>浏览器常见存储方式</h2>      <figure class="highlight plaintext"><div class="table-container"><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></pre></td><td class="code"><pre><span class="line">回答:</span><br><span class="line">cookie、sessionStorage和localStorage是在客户端存储数据的三种常见方式，它们之间有一些区别：</span><br><span class="line">    存储位置：</span><br><span class="line">        cookie: 存储在客户端浏览器中，并在每次HTTP请求时都会自动发送到服务器。</span><br><span class="line">        sessionStorage: 存储在浏览器的会话存储空间中，仅在当前会话期间有效，浏览器关闭后会被清除。</span><br><span class="line">        localStorage: 存储在浏览器的持久化存储空间中，除非手动清除，否则会一直保留。</span><br><span class="line">    容量限制：</span><br><span class="line">        cookie: 大小限制为4KB，每个域名下的cookie总数也有限制。</span><br><span class="line">        sessionStorage和localStorage: 大小限制一般为5MB或更大，可以存储较大数量的数据。</span><br><span class="line">    数据生命周期：</span><br><span class="line">        cookie: 可以设置过期时间，存储在客户端并在过期时间之前有效。</span><br><span class="line">        sessionStorage: 仅在当前会话期间有效，即浏览器关闭或标签页关闭后会被清除。</span><br><span class="line">        localStorage: 永久有效，除非手动清除或代码删除。</span><br><span class="line">    数据访问权限：</span><br><span class="line">        cookie: 具有域名访问权限，可以在不同页面、不同标签间共享。</span><br><span class="line">        sessionStorage: 仅对创建数据的页面及其后续页面有效，不同标签页之间数据不共享。</span><br><span class="line">        localStorage: 对创建数据的页面及其后续页面有效，不同标签页之间数据共享。</span><br><span class="line"></span><br></pre></td></tr></table></div></figure><hr><hr><hr>        <h1 id="HTML基础"   >          <a href="#HTML基础" class="heading-link"><i class="fas fa-link"></i></a><a href="#HTML基础" class="headerlink" title="HTML基础"></a>HTML基础</h1>              <h2 id="对-HTML-语义化标签的理解"   >          <a href="#对-HTML-语义化标签的理解" class="heading-link"><i class="fas fa-link"></i></a><a href="#对-HTML-语义化标签的理解" class="headerlink" title="对 HTML 语义化标签的理解"></a>对 HTML 语义化标签的理解</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">    语义化的HTML是一种合理使用具有适当语义的HTML元素的编码方式。</span><br><span class="line">    使用正确的标签描述内容，使代码具有良好的结构和可读性。</span><br><span class="line">    语义化的HTML有助于提高可访问性、SEO友好以及代码的可维护性。</span><br><span class="line"></span><br></pre></td></tr></table></div></figure><ul><li><p>常见语义化标签:</p><figure class="highlight plaintext"><div class="table-container"><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">&lt;header&gt;：定义文档或节的页眉，通常包含网站的logo、导航栏和页面的标题。</span><br><span class="line">&lt;nav&gt;：用于定义页面的导航部分，包含页面的主要导航链接。</span><br><span class="line">&lt;main&gt;：定义文档的主要内容，每个文档只能有一个&lt;main&gt;标签。</span><br><span class="line">&lt;article&gt;：用于定义独立的文章或内容块，如博客文章、新闻报道等。</span><br><span class="line">&lt;section&gt;：用于将相关内容组织在一起，如页面的不同章节、主题内容等。</span><br><span class="line">&lt;aside&gt;：定义页面的附属内容，通常是侧边栏、辅助栏或广告等。</span><br><span class="line">&lt;footer&gt;：定义文档或节的页脚，通常包含版权信息、联系方式等。</span><br><span class="line">&lt;figure&gt;和&lt;figcaption&gt;：&lt;figure&gt;用于包含媒体内容（如图片、音频、视频等），而&lt;figcaption&gt;则用于给媒体内容添加标题或说明。</span><br><span class="line">&lt;time&gt;：用于标记时间，可以表示具体的日期、时间或日期时间。</span><br><span class="line">&lt;mark&gt;：用于标记文本中的突出部分，通常用黄色背景突出显示。</span><br></pre></td></tr></table></div></figure></li></ul><hr>        <h2 id="Doctype-的作用是什么"   >          <a href="#Doctype-的作用是什么" class="heading-link"><i class="fas fa-link"></i></a><a href="#Doctype-的作用是什么" class="headerlink" title="Doctype 的作用是什么"></a>Doctype 的作用是什么</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">    Doctype（文档类型声明）指示浏览器使用哪种HTML规范解析文档。</span><br><span class="line">    它告诉浏览器如何处理页面的渲染模式和布局。</span><br><span class="line">    Doctype声明必须在HTML文档的开头进行指定，否则浏览器可能会以混杂模式解析页面。</span><br><span class="line">    混杂模式，向后兼容，模拟老式浏览器，防止浏览器无法兼容页面</span><br></pre></td></tr></table></div></figure><hr>        <h2 id="如何优化网页的加载性能"   >          <a href="#如何优化网页的加载性能" class="heading-link"><i class="fas fa-link"></i></a><a href="#如何优化网页的加载性能" class="headerlink" title="如何优化网页的加载性能"></a>如何优化网页的加载性能</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">   </span><br><span class="line">    使用合适的Doctype声明，以避免浏览器进入混杂模式。</span><br><span class="line">    将CSS样式表放在页面的 &lt;head&gt; 标签中，并进行合理的压缩和合并。</span><br><span class="line">    将JavaScript脚本放在页面底部，或使用异步加载或延迟加载。</span><br><span class="line">    优化图片，使用适当的格式、压缩和懒加载等。</span><br><span class="line">    使用浏览器缓存和CDN来加速资源加载。</span><br><span class="line"></span><br></pre></td></tr></table></div></figure><hr>        <h2 id="meta标签的作用"   >          <a href="#meta标签的作用" class="heading-link"><i class="fas fa-link"></i></a><a href="#meta标签的作用" class="headerlink" title="meta标签的作用"></a>meta标签的作用</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">   &lt;meta&gt; 标签是HTML中的元数据标签，用于提供关于网页的元数据信息。</span><br><span class="line">   它通常位于文档的 &lt;head&gt; 部分，提供关于网页的描述、字符编码、视口设置等</span><br></pre></td></tr></table></div></figure><ul><li><p>知识点:</p><figure class="highlight plaintext"><div class="table-container"><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">charset：  指定文档的字符编码，如 &lt;meta charset=&quot;UTF-8&quot;&gt;。</span><br><span class="line">name 和 content：   用于指定元数据的名称和值，如 &lt;meta name=&quot;description&quot; content=&quot;网页描述&quot;&gt;。</span><br><span class="line">http-equiv 和 content：用于提供与HTTP相关的元数据，如&lt;meta http-equiv=&quot;refresh&quot; content=&quot;5;url=example.com&quot;&gt; </span><br><span class="line">                       用于设置页面的自动刷新。</span><br><span class="line">viewport：用于定义可视区域的设置，特别用于响应式设计，如 &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;</span><br><span class="line">          用于确保适应不同设备的屏幕宽度。</span><br><span class="line">name=&quot;robots&quot;：用于控制搜索引擎爬虫的行为，如&lt;meta name=&quot;robots&quot; content=&quot;index,follow&quot;&gt; 用于指示允许搜索引擎索引页面并跟踪链接。</span><br><span class="line">name=&quot;author&quot;：用于指定网页作者。</span><br><span class="line">name=&quot;keywords&quot;：用于指定网页关键词。</span><br><span class="line">http-equiv=&quot;X-UA-Compatible&quot;：用于控制浏览器的兼容性模式，如 &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt; </span><br><span class="line">                              用于告诉IE使用最新版本的渲染引擎。</span><br></pre></td></tr></table></div></figure></li></ul><hr>        <h2 id="a-标签的-href-属性和-target-属性"   >          <a href="#a-标签的-href-属性和-target-属性" class="heading-link"><i class="fas fa-link"></i></a><a href="#a-标签的-href-属性和-target-属性" class="headerlink" title="a 标签的 href 属性和 target 属性"></a>a 标签的 href 属性和 target 属性</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">  href 属性是 &lt;a&gt; 标签中最重要的属性之一。它指定了链接的目标URL，可以是其他网页、文件、锚点或电子邮件地址等</span><br><span class="line">  target 属性用于指定链接在何处打开。常见的取值有:</span><br><span class="line">  _blank：在新的浏览器窗口或标签页中打开链接。</span><br><span class="line">  _self：在当前窗口或标签页中打开链接（默认值）。</span><br><span class="line">  </span><br></pre></td></tr></table></div></figure><hr>        <h2 id="img标签的常用属性及其作用"   >          <a href="#img标签的常用属性及其作用" class="heading-link"><i class="fas fa-link"></i></a><a href="#img标签的常用属性及其作用" class="headerlink" title="img标签的常用属性及其作用"></a>img标签的常用属性及其作用</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">   src：用于指定图像文件的URL，必填属性。</span><br><span class="line">   alt：用于提供图像的替代文本，用于在图像无法显示时展示给用户。建议提供有意义的描述</span><br><span class="line">   title：用于提供图像的额外提示信息，通常在鼠标悬停时显示</span><br><span class="line"></span><br></pre></td></tr></table></div></figure><hr>        <h2 id="HTML5-对比-4-有哪些不同之处？"   >          <a href="#HTML5-对比-4-有哪些不同之处？" class="heading-link"><i class="fas fa-link"></i></a><a href="#HTML5-对比-4-有哪些不同之处？" class="headerlink" title="HTML5 对比 4 有哪些不同之处？"></a>HTML5 对比 4 有哪些不同之处？</h2>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231009094913211.png"  alt="image-20231009094913211">      </p><p>contenteditable添加这个属性后可以直接进行修改标签内容选项</p><p>draggable这个属性必须写全等于true 使用后的标签可以进行拖拽</p><p>hidden属性相当于display:none进行隐藏使用</p>        <h1 id="CSS基础"   >          <a href="#CSS基础" class="heading-link"><i class="fas fa-link"></i></a><a href="#CSS基础" class="headerlink" title="CSS基础"></a>CSS基础</h1>              <h2 id="CSS选择器优先级"   >          <a href="#CSS选择器优先级" class="heading-link"><i class="fas fa-link"></i></a><a href="#CSS选择器优先级" class="headerlink" title="CSS选择器优先级"></a>CSS选择器优先级</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">ID选择器：100。</span><br><span class="line">类选择器、属性选择器和伪类选择器：10。</span><br><span class="line">元素选择器和伪元素选择器：1。</span><br><span class="line">行内样式拥有比选择器优先级更高的优先级(css层叠是用同为相加)</span><br><span class="line">还有一些特殊情况，例如使用 !important 关键字或者内联样式表会影响选择器的优先级。!important 关键字会使规则具有最高的优先级</span><br></pre></td></tr></table></div></figure>        <h2 id="隐藏元素方法"   >          <a href="#隐藏元素方法" class="heading-link"><i class="fas fa-link"></i></a><a href="#隐藏元素方法" class="headerlink" title="隐藏元素方法"></a>隐藏元素方法</h2>      <figure class="highlight plaintext"><div class="table-container"><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">display: none;：这是最常见的一种隐藏元素的方法。通过将元素的显示属性设置为 none，</span><br><span class="line">可以完全隐藏该元素，并且不会在页面中占据任何空间。</span><br><span class="line">visibility: hidden;：通过将元素的可见性属性设置为 hidden，可以隐藏元素，但该元素仍然占据页面中的空间。</span><br><span class="line">opacity: 0;：通过将元素的透明度属性设置为 0，可以使元素变得完全透明，从而达到隐藏的效果。</span><br><span class="line">与 display: none; 不同，该方法仍然保留元素在文档流中的位置。</span><br><span class="line">position: absolute; 或 position: fixed;：通过将元素的定位属性设置为 absolute 或 fixed，</span><br><span class="line">并设置 left 或 top 属性将元素移出屏幕之外，实现元素的隐藏效果。这种方法可以用于隐藏某个特定区域或元素。</span><br><span class="line">transform: scale(0);属性可以用来改变元素的大小，并且也可以通过设置缩放值来实现隐藏效果。</span><br><span class="line">但需要注意的是，使用缩放来隐藏元素可能会导致元素仍然占据页面中的空间。</span><br></pre></td></tr></table></div></figure>        <h2 id="让元素居中的方式"   >          <a href="#让元素居中的方式" class="heading-link"><i class="fas fa-link"></i></a><a href="#让元素居中的方式" class="headerlink" title="让元素居中的方式"></a>让元素居中的方式</h2>      <figure class="highlight plaintext"><div class="table-container"><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">1.水平垂直居中（Flexbox）：使用 Flexbox 布局可以很方便地实现元素的水平和垂直居中。</span><br><span class="line">.container &#123;</span><br><span class="line">  display: flex;</span><br><span class="line">  justify-content: center; /* 水平居中 */</span><br><span class="line">  align-items: center; /* 垂直居中 */</span><br><span class="line">&#125;</span><br><span class="line">2.水平垂直居中（Grid）：使用 CSS Grid 布局也可以实现元素的水平和垂直居中。</span><br><span class="line">.container &#123;</span><br><span class="line">  display: grid;</span><br><span class="line">  place-items: center; /* 水平垂直居中 */</span><br><span class="line">&#125;</span><br><span class="line">3.水平居中（块级元素）：对于块级元素，可以使用 margin 属性将左右外边距设置为 &quot;auto&quot; 来实现水平居中。</span><br><span class="line">.element &#123;</span><br><span class="line">  margin-left: auto;</span><br><span class="line">  margin-right: auto;</span><br><span class="line">&#125;</span><br><span class="line">4.水平居中（行内元素）：对于行内元素，可以使用父容器的 text-align 属性来实现水平居中。</span><br><span class="line">.container &#123;</span><br><span class="line">  text-align: center;</span><br><span class="line">&#125;</span><br><span class="line">5.水平垂直居中（绝对定位）：使用绝对定位结合 transform 属性可以实现元素的水平和垂直居中。</span><br><span class="line">.element &#123;</span><br><span class="line">  position: absolute;</span><br><span class="line">  top: 50%;</span><br><span class="line">  left: 50%;</span><br><span class="line">  transform: translate(-50%, -50%);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>        <h2 id="定位"   >          <a href="#定位" class="heading-link"><i class="fas fa-link"></i></a><a href="#定位" class="headerlink" title="定位"></a>定位</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line"></span><br><span class="line">静态定位（Static Positioning）：这是元素默认的定位方式。静态定位的元素根据正常文档流进行布局，不受其他定位方式的影响。</span><br><span class="line"></span><br><span class="line">相对定位（Relative Positioning）：通过设置position: relative;</span><br><span class="line">可以将元素相对于其原始位置进行定位。相对定位时，可以使用top、right、bottom和left属性来指定元素相对于其原始位置的偏移量。</span><br><span class="line"></span><br><span class="line">绝对定位（Absolute Positioning）：通过设置position: absolute;</span><br><span class="line">可以将元素相对于最近的已定位祖先元素进行定位，如果没有已定位的祖先元素，则相对于文档的初始坐标进行定位。绝对定位时，可以使用top、right、bottom和left属性来指定元素相对于其定位参考点的偏移量。</span><br><span class="line"></span><br><span class="line">固定定位（Fixed Positioning）：通过设置position: fixed;</span><br><span class="line">可以将元素相对于浏览器窗口进行定位，即使页面滚动，元素也会保持在固定的位置。固定定位时，</span><br><span class="line">可以使用top、right、bottom和left属性来指定元素相对于浏览器窗口的偏移量。</span><br><span class="line"></span><br><span class="line">粘性定位（Sticky Positioning）：通过设置position: sticky;</span><br><span class="line">可以将元素相对于其父元素或视口进行定位。粘性定位的元素在滚动到特定位置时会变为固定定位，否则按照正常文档流进行布局</span><br></pre></td></tr></table></div></figure>        <h2 id="css中的大小单位"   >          <a href="#css中的大小单位" class="heading-link"><i class="fas fa-link"></i></a><a href="#css中的大小单位" class="headerlink" title="css中的大小单位"></a>css中的大小单位</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line"></span><br><span class="line">px（像素）：px是绝对长度单位，表示相对于显示设备的物理像素。它是最常用的单位，通常用于制定具体的尺寸。</span><br><span class="line"></span><br><span class="line">em：em是相对长度单位，它相对于父元素的字体大小来计算。如果一个元素的字体大小是16px，那么设置为1em，就相当于16px。</span><br><span class="line">如果嵌套在另一个元素中，其父元素的字体大小为20px，那么1em就相当于20px。通常用于调整字体大小。</span><br><span class="line"></span><br><span class="line">rem：rem也是相对长度单位，但它相对于根元素（即html元素）的字体大小来计算。与em不同，rem是相对于根元素的字体大小而不是父元素的字体大小。</span><br><span class="line">它通常用于制作响应式布局。例如，如果根元素的字体大小是16px，那么设置为1rem就等于16px，而无论嵌套在任何元素中。</span><br><span class="line"></span><br><span class="line">vw（视窗宽度）和vh（视窗高度）：vw和vh是相对于视口宽度和视口高度的单位。1vw等于视口宽度的1%，1vh等于视口高度的1%。</span><br><span class="line">它们通常用于制作响应式布局，并可以根据视口大小自动调整元素的尺寸。</span><br><span class="line"></span><br></pre></td></tr></table></div></figure>        <h2 id="css清除浮动"   >          <a href="#css清除浮动" class="heading-link"><i class="fas fa-link"></i></a><a href="#css清除浮动" class="headerlink" title="css清除浮动"></a>css清除浮动</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">解决方法</span><br><span class="line">1.定高法:直接给父亲写固定高度</span><br><span class="line">2.添加一个盒子给盒子一个(clear:both;)</span><br><span class="line">3.overflow:hidden; 溢出隐藏,出发了BFC,解决了浮动影响</span><br><span class="line">4.利用伪元素的方法  并将其应用于父元素。</span><br><span class="line">.clearfix::after &#123;</span><br><span class="line">  content: &quot;&quot;;</span><br><span class="line">  display: table;</span><br><span class="line">  clear: both;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>        <h2 id="谈谈你对BFC的理解"   >          <a href="#谈谈你对BFC的理解" class="heading-link"><i class="fas fa-link"></i></a><a href="#谈谈你对BFC的理解" class="headerlink" title="谈谈你对BFC的理解"></a>谈谈你对BFC的理解</h2>      <figure class="highlight plaintext"><div class="table-container"><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">BFC，即块级格式化上下文（Block Formatting Context），是CSS中一个非常重要的概念。BFC是页面上一个独立的渲染区域，决定了其中元素的布局及相互影响。</span><br><span class="line"></span><br><span class="line">BFC的形成：一个元素会成为一个BFC，如果满足以下条件之一：</span><br><span class="line">    根元素（&lt;html&gt;）</span><br><span class="line">    浮动元素（float属性不为none）</span><br><span class="line">    绝对定位元素（position为absolute或fixed）</span><br><span class="line">    行内块元素（display为inline-block）</span><br><span class="line">    overflow值不为visible的块级元素</span><br><span class="line">BFC应用:</span><br><span class="line">1.处理块级元素的上下合并问题</span><br><span class="line">2.处理margin塌陷</span><br><span class="line">3.清除浮动</span><br><span class="line">4.实现自适应布局</span><br><span class="line"> 左边固定,右边自适应</span><br><span class="line"> flex==&gt;display:flex,左边定宽,右边flex:1</span><br><span class="line"> 浮动 ==&gt; 先浮动占位置,再中间盒子overflow:hidden</span><br><span class="line"> 定位 ==&gt; 先定位,再设置padding即可</span><br></pre></td></tr></table></div></figure>        <h2 id="什么是CSS-Sprites以及它的好处"   >          <a href="#什么是CSS-Sprites以及它的好处" class="heading-link"><i class="fas fa-link"></i></a><a href="#什么是CSS-Sprites以及它的好处" class="headerlink" title="什么是CSS Sprites以及它的好处"></a>什么是CSS Sprites以及它的好处</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">是一种优化网页加载性能的技术，它将多个小的图像合并成一个大的图像，并通过CSS的background-position属性来显示所需部分的图像</span><br><span class="line"></span><br><span class="line">减少HTTP请求数量：在使用CSS Sprites之前，每个小图像都需要发送一个HTTP请求。</span><br><span class="line">而使用CSS Sprites后，只需要发送一个HTTP请求来加载合并后的大图像，从而减少了页面加载时的HTTP请求数量。</span><br><span class="line">这可以有效降低加载时间，提升网页性能。</span><br><span class="line"></span><br><span class="line">减小图像文件大小：合并后的大图像通常会比原始的小图像文件大小更小。</span><br><span class="line">这是因为合并后的图像可以更好地利用图像压缩算法，从而减小文件大小。较小的文件大小也有助于减少网络传输的时间和成本。</span><br><span class="line"></span><br><span class="line">提高渲染速度：浏览器在下载完毕CSS Sprites图像后，只需要渲染一次该图像，</span><br><span class="line">然后使用不同的background-position来显示需要的部分。相比多次渲染多个小图像，这种方式可以显著提高渲染速度，尤其是在含有大量图像的页面上。</span><br><span class="line"></span><br><span class="line">更好的用户体验：由于CSS Sprites能够减少页面加载时间和渲染时间，</span><br><span class="line">网页的响应速度会更快，用户可以更快地浏览和交互。这可以提供更好的用户体验，减少用户的等待时间和流失率。</span><br><span class="line"></span><br><span class="line">注意:CSS Sprites适用于小图标、按钮、背景图等多个小图像的场景。对于大型图像或者需要动态修改的图像，不适合使用CSS Sprites。</span><br></pre></td></tr></table></div></figure>        <h2 id="你对盒子模型的理解"   >          <a href="#你对盒子模型的理解" class="heading-link"><i class="fas fa-link"></i></a><a href="#你对盒子模型的理解" class="headerlink" title="你对盒子模型的理解"></a>你对盒子模型的理解</h2>      <figure class="highlight plaintext"><div class="table-container"><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">所有元素都表示为一个个矩形的盒子，再用 CSS 去决定这些盒子的大小尺寸、显示位置、以及其他属性（如颜色、背景、边框等）。</span><br><span class="line">盒模型它由以下几部分组成</span><br><span class="line">内容 content</span><br><span class="line">内边距 padding</span><br><span class="line">边框 border</span><br><span class="line">外边距 margin</span><br><span class="line"></span><br><span class="line">盒子模型分为两种类型:</span><br><span class="line">在CSS3中，我们可以通过设置 box-sizing 的值来决定具体使用何种盒模型：</span><br><span class="line">content-box 标准盒模型</span><br><span class="line">border-box 怪异盒模型</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">标准盒模型计算大小 content+padding +margin+border   </span><br><span class="line">怪异盒模型计算大小  </span><br><span class="line">在怪异盒模型下，元素的 width 和 height 值却不是 content 的实际宽高，而是去除 margin 后剩下的元素占用区域的宽高</span><br><span class="line">盒子占据页面宽度 = margin + width + margin</span><br><span class="line"></span><br><span class="line"></span><br></pre></td></tr></table></div></figure>        <h2 id="你对Flex布局的理解"   >          <a href="#你对Flex布局的理解" class="heading-link"><i class="fas fa-link"></i></a><a href="#你对Flex布局的理解" class="headerlink" title="你对Flex布局的理解"></a>你对Flex布局的理解</h2>      <p><span class="exturl"><a class="exturl__link"   href="https://zjm2001.gitee.io/2023/08/25/%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%B8%83%E5%B1%80/" >链接地址</a><span class="exturl__icon"><i class="fas fa-external-link-alt"></i></span></span></p><figure class="highlight plaintext"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">可查看我的专题  移动端布局   查看flex具体理解</span><br></pre></td></tr></table></div></figure><hr>        <h1 id="javaScript基础"   >          <a href="#javaScript基础" class="heading-link"><i class="fas fa-link"></i></a><a href="#javaScript基础" class="headerlink" title="javaScript基础"></a>javaScript基础</h1>              <h2 id="解释下什么是变量声明提升"   >          <a href="#解释下什么是变量声明提升" class="heading-link"><i class="fas fa-link"></i></a><a href="#解释下什么是变量声明提升" class="headerlink" title="解释下什么是变量声明提升"></a>解释下什么是变量声明提升</h2>      <figure class="highlight plaintext"><div class="table-container"><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">变量提升（hoisting），是负责解析执行代码的 JavaScript 引擎的工作方式产生的一个特性。</span><br><span class="line">JS引擎在运行一份代码的时候，会按照下面的步骤进行工作：</span><br><span class="line">1. 首先，对代码进行预解析，并获取声明的所有变量</span><br><span class="line">2. 然后，将这些变量的声明语句统一放到代码的最前面</span><br><span class="line">3. 最后，开始一行一行运行代码</span><br><span class="line">例如:</span><br><span class="line">console.log(a) </span><br><span class="line">var a = 1 </span><br><span class="line">function b() &#123; </span><br><span class="line">  console.log(a)           </span><br><span class="line">&#125;</span><br><span class="line">b() // 1</span><br><span class="line">执行的步骤</span><br><span class="line">1. JS引擎将 `var a = 1` 分解为两个部分：变量声明语句 `var a = undefined` 和变量赋值语句 `a = 1` </span><br><span class="line">2. JS引擎将 `var a = undefined` 放到代码的最前面，而 `a = 1` 保留在原地 </span><br><span class="line">变量的这一转换过程，就被称为变量的声明提升。</span><br><span class="line">而这是不规范, 不合理的, 我们用的  let 就没有这个变量提升的问题</span><br></pre></td></tr></table></div></figure>        <h2 id="JS-的参数是以什么方式进行传递的"   >          <a href="#JS-的参数是以什么方式进行传递的" class="heading-link"><i class="fas fa-link"></i></a><a href="#JS-的参数是以什么方式进行传递的" class="headerlink" title="JS 的参数是以什么方式进行传递的"></a>JS 的参数是以什么方式进行传递的</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">基本类型：是值传递</span><br><span class="line">基本类型的传递方式比较简单，是按照 `值传递` 进行的。</span><br><span class="line">复杂类型: 传递的是地址! (变量中存的就是地址)</span><br></pre></td></tr></table></div></figure>        <h2 id="JS垃圾回收是怎么做的"   >          <a href="#JS垃圾回收是怎么做的" class="heading-link"><i class="fas fa-link"></i></a><a href="#JS垃圾回收是怎么做的" class="headerlink" title="JS垃圾回收是怎么做的"></a>JS垃圾回收是怎么做的</h2>      <p>JS中内存的分配和回收都是自动完成的，内存在不使用的时候会被垃圾回收器自动回收。</p><p>正因为垃圾回收器的存在，许多人认为JS不用太关心内存管理的问题，</p><p>但如果不了解JS的内存管理机制，我们同样非常容易成内存泄漏（内存无法被回收）的情况。</p>        <h3 id="内存的生命周期"   >          <a href="#内存的生命周期" class="heading-link"><i class="fas fa-link"></i></a><a href="#内存的生命周期" class="headerlink" title="内存的生命周期"></a>内存的生命周期</h3>      <ol><li><p>内存分配：当我们声明变量、函数、对象的时候，系统会自动为他们分配内存</p></li><li><p>内存使用：即读写内存，也就是使用变量、函数等</p></li><li><p>内存回收：使用完毕，由垃圾回收自动回收不再使用的内存</p><p>全局变量一般不会回收, 一般局部变量的的值, 不用了, 会被自动回收掉</p></li></ol>        <h3 id="垃圾回收算法说明"   >          <a href="#垃圾回收算法说明" class="heading-link"><i class="fas fa-link"></i></a><a href="#垃圾回收算法说明" class="headerlink" title="垃圾回收算法说明"></a>垃圾回收算法说明</h3>      <p>所谓垃圾回收, 核心思想就是如何判断内存是否已经不再会被使用了, 如果是, 就视为垃圾, 释放掉</p><p>下面介绍两种常见的浏览器垃圾回收算法: 引用计数 和 标记清除法</p>        <h4 id="引用计数"   >          <a href="#引用计数" class="heading-link"><i class="fas fa-link"></i></a><a href="#引用计数" class="headerlink" title="引用计数"></a>引用计数</h4>      <p>IE采用的引用计数算法, 定义“内存不再使用”的标准很简单，就是看一个对象是否有指向它的引用。</p><p>如果没有任何变量指向它了，说明该对象已经不再需要了。</p><p><strong>但它却存在一个致命的问题：循环引用。</strong></p><p>如果两个对象相互引用，尽管他们已不再使用，垃圾回收器不会进行回收，导致内存泄露。</p>        <h4 id="标记清除算法"   >          <a href="#标记清除算法" class="heading-link"><i class="fas fa-link"></i></a><a href="#标记清除算法" class="headerlink" title="标记清除算法"></a>标记清除算法</h4>      <p>现代的浏览器已经不再使用引用计数算法了。</p><p>现代浏览器通用的大多是基于标记清除算法的某些改进算法，总体思想都是一致的。</p><p>标记清除法:</p><ul><li><p>标记清除算法将“不再使用的对象”定义为“无法达到的对象”。 </p></li><li><p>简单来说，就是从根部（在JS中就是全局对象）出发定时扫描内存中的对象。</p></li><li><p>凡是能从根部到达的对象，都是还需要使用的。那些无法由根部出发触及到的对象被标记为不再使用，稍后进行回收。</p></li></ul><p>从这个概念可以看出，无法触及的对象包含了没有引用的对象这个概念（没有任何引用的对象也是无法触及的对象）。</p><p>参考文章:<span class="exturl"><a class="exturl__link"   href="https://www.jianshu.com/p/84a8fd5fa0ee" >JavaScript内存管理</a><span class="exturl__icon"><i class="fas fa-external-link-alt"></i></span></span></p><hr>        <h2 id="谈谈你对-JS作用域链的理解"   >          <a href="#谈谈你对-JS作用域链的理解" class="heading-link"><i class="fas fa-link"></i></a><a href="#谈谈你对-JS作用域链的理解" class="headerlink" title="谈谈你对 JS作用域链的理解"></a>谈谈你对 JS作用域链的理解</h2>      <p>JavaScript 在执⾏过程中会创建一个个的<strong>可执⾏上下⽂</strong>。 (每个函数执行都会创建这么一个可执行上下文)</p><p>每个可执⾏上下⽂的词法环境中包含了对外部词法环境的引⽤，可通过该引⽤来获取外部词法环境中的变量和声明等。</p><p>这些引⽤串联起来，⼀直指向全局的词法环境，形成一个链式结构，被称为作⽤域链。</p><p>简而言之: 函数内部 可以访问到 函数外部作用域的变量,  而外部函数还可以访问到全局作用域的变量,</p><p>这样的变量作用域访问的链式结构, 被称之为作用域链</p><p>js全局有全局可执行上下文, 每个函数调用时, 有着函数的可执行上下文, 会入js调用栈</p><p>每个可执行上下文, 都有者对于外部上下文词法作用域的引用, 外部上下文也有着对于再外部的上下文词法作用域的引用 </p><p><strong>&#x3D;&gt; 就形成了作用域链</strong></p>        <h2 id="谈谈你对闭包的理解"   >          <a href="#谈谈你对闭包的理解" class="heading-link"><i class="fas fa-link"></i></a><a href="#谈谈你对闭包的理解" class="headerlink" title="谈谈你对闭包的理解"></a>谈谈你对闭包的理解</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">作用:封闭数据,提供操作,外部也可以访问函数内部的变量(保证数据的私密性)</span><br><span class="line">问题:可能会引起内存泄漏</span><br><span class="line">基本格式:</span><br><span class="line">function outer() &#123;</span><br><span class="line">  let i =1</span><br><span class="line">function fn()&#123;</span><br><span class="line">  log(i)</span><br><span class="line">&#125;</span><br><span class="line">return fn</span><br><span class="line">&#125;</span><br><span class="line">const fun =outer()</span><br><span class="line">fun()</span><br></pre></td></tr></table></div></figure>        <h2 id="谈谈你对原型链的理解"   >          <a href="#谈谈你对原型链的理解" class="heading-link"><i class="fas fa-link"></i></a><a href="#谈谈你对原型链的理解" class="headerlink" title="谈谈你对原型链的理解"></a>谈谈你对原型链的理解</h2>      <p>要讲清楚这个问题，主要着重这几个方面：</p><ul><li><p>什么是原型对象</p></li><li><p>构造函数, 原型对象, 实例的三角关系图</p></li><li><p>原型链如何形成</p></li></ul><p>利用原型解决构造函数方法内存浪费问题<br>1.prototype  原型对象   每一个构造函数都有一个prototype属性  指向另一个对象<br>我们可以吧不变的方法直接定义再prototype对象上 这样所有对象实例就可以共享<br>2.原型对象里面的函数this指向还是实例对象<br>3.prototype中的constructor用来指向是哪一个函数<br>如果我们修改了原来的原型对象,给原型对象赋值的是一个对象<br>则必须手动利用constructor指回原来的构造函数<br>4.对象原型__proto__指向构造函数的prototype原型对象<br>注意__proto__非js标准[[prototype]]意义相同 只读属性 也有一个指向创建该实例的counstructor</p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231127104741195.png"  alt="image-20231127104741195">      </p>        <h2 id="谈谈对于继承的理解"   >          <a href="#谈谈对于继承的理解" class="heading-link"><i class="fas fa-link"></i></a><a href="#谈谈对于继承的理解" class="headerlink" title="谈谈对于继承的理解"></a>谈谈对于继承的理解</h2>              <h3 id="原型继承"   >          <a href="#原型继承" class="heading-link"><i class="fas fa-link"></i></a><a href="#原型继承" class="headerlink" title="原型继承"></a>原型继承</h3>      <p>原型继承: 通过改造原型链, 利用原型链的语法, 实现继承方法!定义Person构造函数<br>定义Student构造函数<br>原型继承: 利用原型链, 继承于父级构造函数, 继承原型上的方法<br>语法: 子构造函数.prototype &#x3D; new 父构造函数()</p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231127191556841.png"  alt="image-20231127191556841">      </p>        <h3 id="组合继承"   >          <a href="#组合继承" class="heading-link"><i class="fas fa-link"></i></a><a href="#组合继承" class="headerlink" title="组合继承"></a>组合继承</h3>      <p>组合继承有时候也叫伪经典继承，指的是将原型链 和 借用构造函数 call 技术组合到一块，</p><p>从而发挥二者之长的一种继承模式，其背后的思路: <strong>是使用原型链实现对原型属性和方法的继承 (主要是方法)，</strong></p><p><strong>而通过借用构造函数来实现对实例属性构造的继承</strong>。这样既通过在原型上定义方法实现了函数复用，又能保证每个实例都有它的自己的属性。</p><figure class="highlight plaintext"><div class="table-container"><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></pre></td><td class="code"><pre><span class="line">// 1. 定义Person构造函数</span><br><span class="line">function Person (name, age) &#123;</span><br><span class="line">  this.name = name</span><br><span class="line">  this.age = age</span><br><span class="line">&#125;</span><br><span class="line">Person.prototype.say = function () &#123;</span><br><span class="line">  console.log(&#x27;人类会说话&#x27;)</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">// 2. 定义Student构造函数</span><br><span class="line">function Student (name, age, className) &#123;</span><br><span class="line">  Person.call(this, name, age) // 实现构造属性的继承</span><br><span class="line">  this.className = className</span><br><span class="line">&#125;</span><br><span class="line">// 3. 原型继承: 利用原型链, 继承于父级构造函数, 继承原型上的方法</span><br><span class="line">// 语法: 子构造函数.prototype = new 父构造函数()</span><br><span class="line">Student.prototype = new Person()</span><br><span class="line">Student.prototype.study = function() &#123;</span><br><span class="line">  console.log(&#x27;学生在学习&#x27;)</span><br><span class="line">&#125;</span><br><span class="line">let stu = new Student(&#x27;张三&#x27;, 18, &#x27;80期&#x27;)</span><br><span class="line">stu.say()</span><br><span class="line">console.log(stu)</span><br><span class="line">// 方法通过 原型继承</span><br><span class="line">// 属性通过 父构造函数的.call(this, name, age)</span><br></pre></td></tr></table></div></figure>        <h3 id="寄生组合继承"   >          <a href="#寄生组合继承" class="heading-link"><i class="fas fa-link"></i></a><a href="#寄生组合继承" class="headerlink" title="寄生组合继承"></a>寄生组合继承</h3>      <p>student实例上有 name age,  而原型 <code>__proto__</code>上不需要再有这些属性, 所以利用 Object.create 改装下</p><p>Object.create(参数对象),  </p><ol><li>Object.create 会创建一个新对象,</li><li>并且这个新对象的<code>__proto__</code> 会指向传入的参数对象</li></ol><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231127191824970.png"  alt="image-20231127191824970">      </p>        <h3 id="es6-class-实现继承-extends"   >          <a href="#es6-class-实现继承-extends" class="heading-link"><i class="fas fa-link"></i></a><a href="#es6-class-实现继承-extends" class="headerlink" title="es6 - class 实现继承 extends"></a>es6 - class 实现继承 extends</h3>      <figure class="highlight plaintext"><div class="table-container"><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">// 继承关键字 =&gt; extends</span><br><span class="line">class Person &#123;</span><br><span class="line">  constructor (name, age) &#123;</span><br><span class="line">    this.name = name</span><br><span class="line">    this.age = age</span><br><span class="line">  &#125;</span><br><span class="line">  jump () &#123;</span><br><span class="line">    console.log(&#x27;会跳&#x27;)</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">class Teacher extends Person &#123;</span><br><span class="line">  constructor (name, age, lesson) &#123;</span><br><span class="line">    super(name, age) // extends 中, 必须调用 super(), 会触发执行父类的构造函数</span><br><span class="line">    this.lesson = lesson</span><br><span class="line">    console.log(&#x27;构造函数执行了&#x27;)</span><br><span class="line">  &#125;</span><br><span class="line">  sayHello () &#123;</span><br><span class="line">    console.log(&#x27;会打招呼&#x27;)</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">let teacher1 = new Teacher(&#x27;zs&#x27;, 18, &#x27;体育&#x27;)</span><br><span class="line">console.log(teacher1)</span><br></pre></td></tr></table></div></figure><hr>        <h2 id="如何判断是否是数组？"   >          <a href="#如何判断是否是数组？" class="heading-link"><i class="fas fa-link"></i></a><a href="#如何判断是否是数组？" class="headerlink" title="如何判断是否是数组？"></a>如何判断是否是数组？</h2>      <p>方法一：使用 <code>toString</code> 方法</p><figure class="highlight plaintext"><div class="table-container"><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">function isArray(arg) &#123;</span><br><span class="line">return Object.prototype.toString.call(arg) === &#x27;[object Array]&#x27;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">let arr = [1,2,3]</span><br><span class="line">isArray(arr)  // true</span><br></pre></td></tr></table></div></figure><p>方法二：使用 ES6 新增的 <code>Array.isArray</code> 方法</p><figure class="highlight plaintext"><div class="table-container"><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">let arr = [1,2,3]</span><br><span class="line">Array.isArray(arr) // true</span><br></pre></td></tr></table></div></figure>        <h2 id="谈谈你对this的理解"   >          <a href="#谈谈你对this的理解" class="heading-link"><i class="fas fa-link"></i></a><a href="#谈谈你对this的理解" class="headerlink" title="谈谈你对this的理解"></a>谈谈你对this的理解</h2>      <p><strong>this</strong> 是一个在运行时才进行绑定的引用，在不同的情况下它可能会被绑定不同的对象。</p>        <h3 id="默认绑定"   >          <a href="#默认绑定" class="heading-link"><i class="fas fa-link"></i></a><a href="#默认绑定" class="headerlink" title="默认绑定"></a>默认绑定</h3>      <p><strong>默认绑定</strong> (指向window的情况)  (函数调用模式 fn() )</p><p>默认情况下，<code>this</code> 会被绑定到全局对象上，比如在浏览器环境中就为<code>window</code>对象，在node.js环境下为<code>global</code>对象。</p>        <h3 id="隐式绑定"   >          <a href="#隐式绑定" class="heading-link"><i class="fas fa-link"></i></a><a href="#隐式绑定" class="headerlink" title="隐式绑定"></a>隐式绑定</h3>      <p><strong>隐式绑定</strong> (谁调用, this指向谁) (方法调用模式 obj.fn() )</p><p>如果函数的调用是从对象上发起时，则该函数中的 <code>this</code> 会被自动隐式绑定为对象</p>        <h3 id="显式绑定"   >          <a href="#显式绑定" class="heading-link"><i class="fas fa-link"></i></a><a href="#显式绑定" class="headerlink" title="显式绑定"></a>显式绑定</h3>      <p><strong>显式绑定</strong> (又叫做硬绑定)  (上下文调用模式, 想让this指向谁, this就指向谁)</p><p>硬绑定 &#x3D;&gt; call  apply  bind</p><figure class="highlight plaintext"><div class="table-container"><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">改变this指向</span><br><span class="line">1.fun.call(指向谁,实参...)                                 //调用函数改变this指向</span><br><span class="line">2.fun.apply(指向谁,[数组传实参])                           //调用函数改变this指向</span><br><span class="line">Math,max.apple(max,数组)  用来计算数组最大值</span><br><span class="line">3.fun.bind(指向,实参...)                               //不调用函数有返回值要重新调</span><br></pre></td></tr></table></div></figure>        <h3 id="new-绑定"   >          <a href="#new-绑定" class="heading-link"><i class="fas fa-link"></i></a><a href="#new-绑定" class="headerlink" title="new 绑定"></a>new 绑定</h3>      <p><strong>new 绑定</strong> (构造函数模式)</p><p>另外，在使用 <code>new</code> 创建对象时也会进行 <code>this</code> 绑定</p><p>当使用 <code>new</code> 调用构造函数时，会创建一个新的对象并将该对象绑定到构造函数的 <code>this</code> 上</p><hr>        <h2 id="箭头函数中的this指向什么"   >          <a href="#箭头函数中的this指向什么" class="heading-link"><i class="fas fa-link"></i></a><a href="#箭头函数中的this指向什么" class="headerlink" title="箭头函数中的this指向什么"></a>箭头函数中的this指向什么</h2>      <p>箭头函数不同于传统函数，它其实没有属于⾃⼰的 <code>this</code>，</p><p>它所谓的 <code>this</code> 是, 捕获其外层  上下⽂的 <code>this</code> 值作为⾃⼰的 <code>this</code> 值。</p><p>并且由于箭头函数没有属于⾃⼰的 <code>this</code> ，它是不能被 <code>new</code> 调⽤的。</p><hr>        <h2 id="Promise-的静态方法"   >          <a href="#Promise-的静态方法" class="heading-link"><i class="fas fa-link"></i></a><a href="#Promise-的静态方法" class="headerlink" title="Promise 的静态方法"></a>Promise 的静态方法</h2>      <p>promise的三个状态: pending(默认)   fulfilled(成功)   rejected(失败)</p><ol><li>resolve函数被执行时, 会将promise的状态从 pending 改成 fulfilled 成功</li><li>reject函数被执行时, 会将promise的状态从pending 改成 rejected 失败</li></ol><p>Promise.reject()</p><figure class="highlight js"><div class="table-container"><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="keyword">new</span> <span class="title class_">Promise</span>(<span class="function">(<span class="params">resolve, reject</span>) =&gt;</span> &#123;</span><br><span class="line"><span class="title function_">reject</span>()</span><br><span class="line">&#125;)</span><br></pre></td></tr></table></div></figure><p>Promise.resolve()</p><figure class="highlight jsx"><div class="table-container"><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="keyword">new</span> <span class="title class_">Promise</span>(<span class="function">(<span class="params">resolve, reject</span>) =&gt;</span> &#123;</span><br><span class="line"><span class="title function_">resolve</span>()</span><br><span class="line">&#125;)</span><br></pre></td></tr></table></div></figure><p><strong>Promise.all([promise1, promise2, promise3])</strong>  等待原则, 是在所有promise都完成后执行, 可以用于处理一些<code>并发的任务</code></p><figure class="highlight jsx"><div class="table-container"><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="comment">// 后面的.then中配置的函数, 是在前面的所有promise都完成后执行, 可以用于处理一些并发的任务</span></span><br><span class="line"><span class="title class_">Promise</span>.<span class="title function_">all</span>([promise1, promise2, promise3]).<span class="title function_">then</span>(<span class="function">(<span class="params">values</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="comment">// values 是一个数组, 会收集前面promise的结果 values[0] =&gt; promise1的成功的结果</span></span><br><span class="line">&#125;)</span><br></pre></td></tr></table></div></figure><p>Promise.race([promise1, promise2, promise3]) 赛跑, 竞速原则, 只要三个promise中有一个满足条件, 就会执行.then(用的较少)</p>        <h2 id="宏任务-微任务-是什么"   >          <a href="#宏任务-微任务-是什么" class="heading-link"><i class="fas fa-link"></i></a><a href="#宏任务-微任务-是什么" class="headerlink" title="宏任务 微任务 是什么"></a>宏任务 微任务 是什么</h2>              <h3 id="EventLoop事件循环队列"   >          <a href="#EventLoop事件循环队列" class="heading-link"><i class="fas fa-link"></i></a><a href="#EventLoop事件循环队列" class="headerlink" title="EventLoop事件循环队列"></a>EventLoop事件循环队列</h3>      <p>javascript是一门单线程执行的编程语言(同时只能做一件事) 同步任务和异步任务 </p><p><strong>同步任务</strong>:非耗时任务值的是在主线程上排队执行的任务 </p><p><strong>异步任务</strong>:耗时任务,异步任务由javascript委托给宿主环境进行执行 当异步任务执行完成后,会通知javascript主线程执行异步回调函数</p>        <h3 id="宏任务和微任务"   >          <a href="#宏任务和微任务" class="heading-link"><i class="fas fa-link"></i></a><a href="#宏任务和微任务" class="headerlink" title="宏任务和微任务"></a>宏任务和微任务</h3>      <p><strong>宏任务</strong>: 主线程代码, setTimeout 等属于宏任务,  上一个宏任务执行完, 才会考虑执行下一个宏任务</p><p><strong>微任务</strong>: promise .then .catch的需要执行的内容, 属于微任务, 满足条件的微任务, 会被添加到当前宏任务的最后去执行</p><p><strong>注意</strong>:async 函数只有从 await 往下才是异步的开始</p>        <h2 id="async-await是什么？"   >          <a href="#async-await是什么？" class="heading-link"><i class="fas fa-link"></i></a><a href="#async-await是什么？" class="headerlink" title="async&#x2F;await是什么？"></a>async&#x2F;await是什么？</h2>      <p>ES7 标准中新增的 <code>async</code> 函数，从目前的内部实现来说其实就是 <code>Generator</code> 函数的语法糖。</p><p>它基于 Promise，并与所有现存的基于Promise 的 API 兼容。 </p><p><strong>async 关键字</strong></p><ol><li><p><code>async</code> 关键字用于声明⼀个异步函数（如 <code>async function asyncTask1() &#123;...&#125;</code>） </p></li><li><p><code>async</code> 会⾃动将常规函数转换成 Promise，返回值也是⼀个 Promise 对象 </p></li><li><p><code>async</code> 函数内部可以使⽤ <code>await</code></p></li></ol><p><strong>await 关键字</strong></p><ol><li><p><code>await</code> 用于等待异步的功能执⾏完毕 <code>var result = await someAsyncCall()</code> </p></li><li><p><code>await</code> 放置在 Promise 调⽤之前，会强制async函数中其他代码等待，直到 Promise 完成并返回结果 </p></li><li><p><code>await</code> 只能与 Promise ⼀起使⽤</p></li><li><p><code>await</code> 只能在 <code>async</code> 函数内部使⽤</p></li></ol>        <h2 id="相较于-Promise，async-await有何优势？"   >          <a href="#相较于-Promise，async-await有何优势？" class="heading-link"><i class="fas fa-link"></i></a><a href="#相较于-Promise，async-await有何优势？" class="headerlink" title="相较于 Promise，async&#x2F;await有何优势？"></a>相较于 Promise，async&#x2F;await有何优势？</h2>      <ol><li>同步化代码的阅读体验（Promise 虽然摆脱了回调地狱，但 then 链式调⽤的阅读负担还是存在的）</li><li>和同步代码更一致的错误处理方式（ async&#x2F;await 可以⽤成熟的 try&#x2F;catch 做处理，比 Promise 的错误捕获更简洁直观） </li><li>调试时的阅读性, 也相对更友好</li></ol>        <h2 id="深拷贝-浅拷贝"   >          <a href="#深拷贝-浅拷贝" class="heading-link"><i class="fas fa-link"></i></a><a href="#深拷贝-浅拷贝" class="headerlink" title="深拷贝 浅拷贝"></a>深拷贝 浅拷贝</h2>      <p>直接复制对象时应为复杂数据类型复制的是地址指向所以修改直接将原先的也修改了进而衍生出来的拷贝</p><p><strong>浅拷贝</strong></p><p>拷贝对象 Object.assgin() &#x2F; 展开运算符{…obj} </p><p>拷贝数组 Array.protoype.concat()  &#x2F;  […arr]</p><p><strong>深拷贝</strong></p><p>1.递归实现深拷贝</p><figure class="highlight plaintext"><div class="table-container"><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">function deepCopy(newObj, oldObj) &#123;</span><br><span class="line">          for (let k in oldObj) &#123;</span><br><span class="line">               //处理数组  必须先处理数组因为数组也是对象</span><br><span class="line">              if (oldObj[k] instanceof Array) &#123;</span><br><span class="line">                  newObj[k]=[]</span><br><span class="line">                  // newObj[k] 就是一个[]hobby  // oldObj[k] 是 [&#x27;唱&#x27;, &#x27;跳&#x27;]</span><br><span class="line">                  deepCopy(newObj[k],oldObj[k])</span><br><span class="line">              &#125; else if(oldObj[k] instanceof Object)&#123;</span><br><span class="line">                  newObj[k]=&#123;&#125;</span><br><span class="line">                  deepCopy(newObj[k],oldObj[k])</span><br><span class="line">              &#125; else &#123;</span><br><span class="line">                  // k属性名 oldObj[k] 属性值  // newObj&#123;k&#125;===o.uname   进行添加属性</span><br><span class="line">                  newObj[k] = oldObj[k]</span><br><span class="line">              &#125;</span><br><span class="line">          &#125;</span><br><span class="line">      &#125;</span><br></pre></td></tr></table></div></figure><p>2.lodash&#x2F;cloneDeep 使用库</p><figure class="highlight plaintext"><div class="table-container"><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">引入js库实现深拷贝</span><br><span class="line">&lt;script src=&quot;https://lib.baomitu.com/lodash.js/3.10.1/lodash.js&quot;&gt;&lt;/script&gt;</span><br><span class="line">const o =  _.cloneDeep(obj)</span><br></pre></td></tr></table></div></figure><p>3.通过JSON.stringify()实现  </p><figure class="highlight plaintext"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">const o= JSON.parse(JSON.stringify(obj))</span><br></pre></td></tr></table></div></figure>        <h1 id="DOM"   >          <a href="#DOM" class="heading-link"><i class="fas fa-link"></i></a><a href="#DOM" class="headerlink" title="DOM"></a>DOM</h1>              <h2 id="DOM的事件流是什么"   >          <a href="#DOM的事件流是什么" class="heading-link"><i class="fas fa-link"></i></a><a href="#DOM的事件流是什么" class="headerlink" title="DOM的事件流是什么"></a>DOM的事件流是什么</h2>              <h3 id="事件流"   >          <a href="#事件流" class="heading-link"><i class="fas fa-link"></i></a><a href="#事件流" class="headerlink" title="事件流"></a><strong>事件流</strong></h3>      <p>⼜称为事件传播，是⻚⾯中接收事件的顺序。DOM2级事件规定的事件流包括了3个阶段：</p><ul><li>事件捕获阶段（capture phase）</li><li>处于⽬标阶段（target phase）</li><li>事件冒泡阶段（bubbling phase）</li></ul><ol><li>事件捕获阶段，为截获事件提供了机会 </li><li>实际的⽬标元素接收到事件</li><li>事件冒泡阶段，可在这个阶段对事件做出响应</li></ol>        <h2 id="说说什么是事件委托"   >          <a href="#说说什么是事件委托" class="heading-link"><i class="fas fa-link"></i></a><a href="#说说什么是事件委托" class="headerlink" title="说说什么是事件委托"></a>说说什么是事件委托</h2>      <p>事件委托，就是利用了事件冒泡的机制，在较上层位置的元素上添加一个事件监听函数，</p><p>来管理该元素及其所有子孙元素上的某一类的所有事件。</p><figure class="highlight plaintext"><div class="table-container"><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">&lt;ul id=&quot;list&quot;&gt;</span><br><span class="line">    &lt;li&gt;111&lt;/li&gt;</span><br><span class="line">    &lt;li&gt;222&lt;/li&gt;</span><br><span class="line">    &lt;li&gt;333&lt;/li&gt;</span><br><span class="line">&lt;/ul&gt;</span><br><span class="line"></span><br><span class="line">&lt;script type=&quot;text/javascript&quot;&gt;</span><br><span class="line">    // ⽗元素 </span><br><span class="line">    var list = document.getElementById(&#x27;list&#x27;);</span><br><span class="line">    // 为⽗元素绑定事件，委托管理它的所有⼦元素li的点击事件 </span><br><span class="line">    list.onclick = function (event) &#123;</span><br><span class="line">        var currentTarget = event.target;</span><br><span class="line">        if (currentTarget.tagName.toLowerCase() === &#x27;li&#x27;) &#123;</span><br><span class="line">            alert(currentTarget.innerText)</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&lt;/script&gt;</span><br></pre></td></tr></table></div></figure><p>在绑定大量事件的时候，可以选择事件委托</p><p><strong>优点</strong></p><ul><li>事件委托可以减少事件注册数量，节省内存占⽤!</li><li>当新增⼦元素时，⽆需再次做事件绑定，因此非常适合动态添加元素   (vue解析模板时, 会对新创建的元素, 额外进行绑定的)</li></ul>        <h1 id="浏览器底层原理"   >          <a href="#浏览器底层原理" class="heading-link"><i class="fas fa-link"></i></a><a href="#浏览器底层原理" class="headerlink" title="浏览器底层原理"></a>浏览器底层原理</h1>              <h2 id="浏览器是如何解析CSS选择器的"   >          <a href="#浏览器是如何解析CSS选择器的" class="heading-link"><i class="fas fa-link"></i></a><a href="#浏览器是如何解析CSS选择器的" class="headerlink" title="浏览器是如何解析CSS选择器的"></a>浏览器是如何解析CSS选择器的</h2>      <p>在生成渲染树的过程中，渲染引擎会根据选择器提供的信息来遍历 DOM 树，找到对应的 DOM 节点后将样式规则附加到上面。</p><p><strong>从左往右：<code>.mod-nav  =&gt;   h3  =&gt;    span</code></strong></p><ol><li><p>遍历所有的元素, 找有 .mod-nav 类的节点</p></li><li><p>从 <code>.mod-nav</code> 开始遍历所有的⼦孙节点 <code>header</code>、<code>div</code> 、 <code>h3</code>、 <code>ul</code> ….</p><p>遍历所有的后代元素后, 知道了, 整个子孙后代只有一个 h3</p></li><li><p>找到 <code>h3</code> ,  还要继续重新遍历 <code>h3</code> 的所有子孙节点, 去找 <code>span</code></p><p>…</p></li></ol><p><strong>问题: 会进行大量树形结构子孙节点的遍历, 这是非常消耗成本的!</strong></p><p><strong>这在真实页面中⼀棵 DOM 树的节点成百上千的情况下，这种遍历方式的效率会非常的低，根本不适合采用。</strong></p><p><strong>从右往左：<code>span   =&gt;   h3   =&gt;   .mod-nav</code></strong></p><ol><li><p>先找到所有的 <code>span</code> 节点 ，然后基于每⼀个 <code>span</code> 再向上查找 <code>h3</code> </p></li><li><p>由 <code>h3</code> 再向上查找 <code>.mod-nav</code> 的节点</p></li><li><p>最后触及根元素 <code>html</code> 结束该分⽀遍历</p><p>…</p></li></ol><p>从右向左的匹配规则, 只有第一次会遍历所有元素找节点, 而剩下的就是在看父辈祖辈是否满足选择器的条件, 匹配效率大大提升!</p><p>因此，浏览器遵循 “从右往左” 的规则来解析 CSS 选择器！</p>        <h2 id="浏览器是如何进行界面渲染的"   >          <a href="#浏览器是如何进行界面渲染的" class="heading-link"><i class="fas fa-link"></i></a><a href="#浏览器是如何进行界面渲染的" class="headerlink" title="浏览器是如何进行界面渲染的"></a>浏览器是如何进行界面渲染的</h2>      <ol><li><p>获取 HTML ⽂件并进⾏解析，生成一棵 DOM 树（DOM Tree）</p></li><li><p>解析 HTML 的同时也会解析 CSS，⽣成样式规则（Style Rules）</p></li><li><p>根据 DOM 树和样式规则，生成一棵渲染树（Render Tree）</p></li><li><p>进行布局（Layout）(重排)，即为每个节点分配⼀个在屏幕上应显示的确切坐标位置 </p></li><li><p>进⾏绘制（Paint）(重绘)，遍历渲染树节点，调⽤ GPU(图形处理器) 将元素呈现出来</p></li></ol>        <h2 id="重绘-repaint-和重排-回流reflow-是什么"   >          <a href="#重绘-repaint-和重排-回流reflow-是什么" class="heading-link"><i class="fas fa-link"></i></a><a href="#重绘-repaint-和重排-回流reflow-是什么" class="headerlink" title="重绘(repaint)和重排(回流reflow)是什么"></a>重绘(repaint)和重排(回流reflow)是什么</h2>      <p><strong>重排</strong></p><p>重排是指部分或整个渲染树需要重新分析，并且节点的尺⼨需要重新计算。</p><p>表现为 <strong>重新⽣成布局，重新排列元素。</strong></p><p><strong>重绘</strong></p><p>重绘是由于节点的⼏何属性发⽣改变，或由于样式发⽣改变（例如：改变元素背景⾊）。</p><p>表现为某些元素的外观被改变。或者重排后, 进行重新绘制!</p><p><strong>两者的关系</strong></p><p>重绘不⼀定会出现重排，重排必定会触发重绘。</p><p>每个页面至少需要一次回流+重绘。(初始化渲染)</p><p>重排和重绘的代价都很⾼昂，频繁重排重绘, 会破坏⽤户体验、让界面显示变迟缓。</p><p>我们需要尽可能避免频繁触发重排和重绘, 尤其是重排</p>        <h2 id="何时会触发重排"   >          <a href="#何时会触发重排" class="heading-link"><i class="fas fa-link"></i></a><a href="#何时会触发重排" class="headerlink" title="何时会触发重排"></a>何时会触发重排</h2>      <p>重排什么时候发生？</p><p>1、添加或者删除可见的DOM元素；</p><p>2、元素位置改变；</p><p>3、元素尺寸改变——边距、填充、边框、宽度和高度</p><p>4、内容改变——比如文本改变或者图片大小改变而引起的计算值宽度和高度改变；</p><p>5、页面渲染初始化；</p><p>6、浏览器窗口尺寸改变——resize事件发生时；</p><p><strong>浏览器对重绘重排的优化</strong></p><p>如果每句JS操作都去重排重绘的话，浏览器可能就会受不了!</p><p>所以浏览器会优化这些操作，<strong>浏览器会维护1个队列，把所有会引起重排、重绘的操作放入这个队列</strong>，</p><p><strong>等队列中的操作到了一定的数量或者到了一定的时间间隔，浏览器就会flush队列，进行一个<code>批处理</code>。</strong></p><p>这样就会让多次的重排、重绘变成了一次重排重绘。</p><p>虽然有了浏览器的优化，但有时候我们写的一些代码可能会强制浏览器提前flush队列，这样浏览器的优化可能起不到作用了。</p><p>比如当你请求向浏览器获取一些样式信息的时候(保证获取结果的准确性)，就会让浏览器flush队列</p><ol><li>offsetTop, offsetLeft, offsetWidth, offsetHeight</li><li>scrollTop&#x2F;Left&#x2F;Width&#x2F;Height</li><li>clientTop&#x2F;Left&#x2F;Width&#x2F;Height</li><li>请求了getComputedStyle()</li></ol>        <h2 id="前端如何实现即时通讯"   >          <a href="#前端如何实现即时通讯" class="heading-link"><i class="fas fa-link"></i></a><a href="#前端如何实现即时通讯" class="headerlink" title="前端如何实现即时通讯"></a>前端如何实现即时通讯</h2>      <p>基于Web的前端，存在以下几种可实现即时通讯的方式：(详细可自行百度)</p><ul><li><p>短轮询 (历史方案)   </p><p>开个定时器, 每隔一段时间发请求 (实时性不强)</p></li><li><p>Comet - ajax长轮询(历史方案)    </p><p>发送一个请求, 服务器只要数据不更新, 就一直阻塞  (服务器压力过大)</p></li><li><p>SSE   </p><p>(利用了http协议, 流数据的传输, 并不是严格意义的双向通信, 无法复用连接)</p></li><li><p>WebSocket (主流)  </p><p>性能和效率都高!</p></li></ul>        <h2 id="什么是浏览器同源策略"   >          <a href="#什么是浏览器同源策略" class="heading-link"><i class="fas fa-link"></i></a><a href="#什么是浏览器同源策略" class="headerlink" title="什么是浏览器同源策略"></a>什么是浏览器同源策略</h2>      <p>首先，同源是指资源地址的 “协议 + 域名 + 端⼝” 三者都相同，即使两个不同域名指向了同⼀ IP 地址，也被判断为⾮同源。</p><p>下面是一些地址的同源判断示例：</p><p>以下不同地址的页面, 去请求一个接口: <code>http://store.company.com/getInfo</code></p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20231211150238816.png"  alt="image-20231211150238816">      </p><p>同源策略是 <code>浏览器</code> 的一种⽤于隔离潜在恶意⽂件的重要安全保护机制 !!!  (服务器没有这个策略限制)</p><p>在浏览器中，⼤部分内容都受同源策略限制，除了以下三个资源获取类型的标签：</p><ul><li><code>&lt;img&gt;</code></li><li><code>&lt;link&gt;</code></li><li><code>script</code></li></ul>        <h2 id="如何实现跨域获取数据"   >          <a href="#如何实现跨域获取数据" class="heading-link"><i class="fas fa-link"></i></a><a href="#如何实现跨域获取数据" class="headerlink" title="如何实现跨域获取数据"></a>如何实现跨域获取数据</h2>      <p>JSONP:出现早,兼容性好 临时想出来的方案,缺点是只支持get请求不支持post请求 </p><p>CORS:出现晚 w3c标准,属于ajax根本方案</p><hr>        <h1 id="前端工程化"   >          <a href="#前端工程化" class="heading-link"><i class="fas fa-link"></i></a><a href="#前端工程化" class="headerlink" title="前端工程化"></a>前端工程化</h1>      ]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> 面试 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> 面试 </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>javascript的节点操作与事件</title>
      <link href="/2023/09/07/javascript%E8%8A%82%E7%82%B9%E4%B8%8E%E4%BA%8B%E4%BB%B6/"/>
      <url>/2023/09/07/javascript%E8%8A%82%E7%82%B9%E4%B8%8E%E4%BA%8B%E4%BB%B6/</url>
      
        <content type="html"><![CDATA[<hr>        <h2 id="节点"   >          <a href="#节点" class="heading-link"><i class="fas fa-link"></i></a><a href="#节点" class="headerlink" title="节点"></a>节点</h2>              <h3 id="1-节点类型"   >          <a href="#1-节点类型" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-节点类型" class="headerlink" title="1.节点类型"></a>1.节点类型</h3>      <figure class="highlight javascript"><div class="table-container"><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">节点至少拥有node type (节点类型)  <span class="title function_">nodeName</span>(节点名称)  <span class="title function_">nodeValue</span>(节点值)</span><br><span class="line">元素节点nodeType为<span class="number">1</span></span><br><span class="line">属性节点nodeType为<span class="number">2</span></span><br><span class="line">文本节点nodeType为<span class="number">3</span>(文本节点包括文字 空格 换行)</span><br></pre></td></tr></table></div></figure>        <h3 id="2-节点查找"   >          <a href="#2-节点查找" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-节点查找" class="headerlink" title="2.节点查找"></a>2.节点查找</h3>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line">子元素.<span class="property">parentNode</span>                           <span class="comment">//返回最近一级父节点找不到返回null</span></span><br><span class="line">子节点查找</span><br><span class="line">父元素.<span class="property">children</span>                            <span class="comment">//获得所有元素节点</span></span><br><span class="line">父元素.<span class="property">childNodes</span>                        <span class="comment">//获得所有子节点包含元素文本节点等等(不常用)</span></span><br><span class="line">父元素.<span class="property">firstChild</span>                   <span class="comment">// 第一个子节点</span></span><br><span class="line">父元素.<span class="property">lastChild</span>                    <span class="comment">// 最后一个子节点(  包含文本节点和元素节点  不常用)</span></span><br><span class="line">父元素.<span class="property">firstElementChild</span>              <span class="comment">// 得到第一个元素节点</span></span><br><span class="line">父元素.<span class="property">lastElementChild</span>              <span class="comment">// 得到最后一个元素节点(ie9以上支持)</span></span><br><span class="line">children[<span class="number">0</span>]                           <span class="comment">//得到第一个元素节点(常用)</span></span><br><span class="line">children[父元素.<span class="property">children</span>.<span class="property">length</span>-<span class="number">1</span>]   <span class="comment">// 得到最后一个元素节点(常用)</span></span><br><span class="line"></span><br><span class="line">查找兄弟节点                                                               </span><br><span class="line">nextSibling                               <span class="comment">//  得到下一个兄弟节点 包含元素   文本等节点</span></span><br><span class="line">previousSibling                          <span class="comment">// 得到上一个兄弟节点 包含元素   文本等节点</span></span><br><span class="line">nextElementSibling                       <span class="comment">//  下一个兄弟元素节点</span></span><br><span class="line">previousElementSibling                   <span class="comment">// 上一个兄弟元素节</span></span><br></pre></td></tr></table></div></figure>        <h3 id="3-操作节点-添加"   >          <a href="#3-操作节点-添加" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-操作节点-添加" class="headerlink" title="3.操作节点(添加)"></a>3.操作节点(添加)</h3>      <figure class="highlight plaintext"><div class="table-container"><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">第一步   document.createElement(&quot;创建的标签&quot;)        //创建元素节点</span><br><span class="line">第二步   父元素.appendChild(插入元素)                //插入元素(到父节点最后)</span><br><span class="line">父元素.insertBefore(插入元素,指定元素前面)          // 添加到指定元素前面</span><br><span class="line">元素.append()                                      //可插入节点文本等</span><br><span class="line">克隆元素.cloneNode(布尔值 )                         // 克隆节点</span><br><span class="line">元素.remove()                                       //移除元素</span><br><span class="line">括号空 false 浅拷贝不复制内容</span><br><span class="line">改true完全克隆完添加包括节点也克隆</span><br><span class="line">父元素.removeChild( 要删除的子元素)                  //  删除一个子节点 返回删除节点</span><br><span class="line"></span><br></pre></td></tr></table></div></figure>        <h3 id="4-回流和重绘"   >          <a href="#4-回流和重绘" class="heading-link"><i class="fas fa-link"></i></a><a href="#4-回流和重绘" class="headerlink" title="4.回流和重绘"></a>4.回流和重绘</h3>      <hr><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20230907205249686.png"  alt="image-20230907205249686">      </p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20230907205312738.png"  alt="image-20230907205312738">      </p><hr>        <h2 id="事件高级导读"   >          <a href="#事件高级导读" class="heading-link"><i class="fas fa-link"></i></a><a href="#事件高级导读" class="headerlink" title="事件高级导读"></a>事件高级导读</h2>              <h3 id="1-事件"   >          <a href="#1-事件" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-事件" class="headerlink" title="1.事件"></a>1.事件</h3>      <figure class="highlight javascript"><div class="table-container"><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="title function_">addEventListener</span>(事件类型,事件函数,[可选参数])  ie9   常用</span><br><span class="line">删除事件    事件源.事件=<span class="literal">null</span></span><br><span class="line">被绑定事件源.<span class="title function_">removerEventListener</span>(<span class="string">&#x27;数据类型&#x27;</span>,事件函数)</span><br><span class="line"><span class="variable constant_">DOM</span>事件流    <span class="number">1.</span>捕获阶段    <span class="number">2.</span>当前目标阶段    <span class="number">3.</span>冒泡阶段</span><br><span class="line">捕获阶段   如果addEventListener第三个参数是<span class="literal">true</span> 那么处于捕获阶段从外到里</span><br><span class="line">冒泡阶段    如果addEventListener第三个参数是<span class="literal">false</span>或者是省略 那么处于捕获阶段从里到外</span><br><span class="line">事件对象      写在事件函数小括号里面的参数一般用e  当形参看</span><br><span class="line">事件对象 只有有了事件才会存在  他是系统单  不需要我们传递    是对我们事件的一系列相关数据集合</span><br></pre></td></tr></table></div></figure>        <h3 id="2-事件类型"   >          <a href="#2-事件类型" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-事件类型" class="headerlink" title="2.事件类型"></a>2.事件类型</h3>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line">click   鼠标单击    mouseenter    鼠标经过     mouseleave  鼠标离开</span><br><span class="line">焦点事件  </span><br><span class="line">focus   获得焦点    blur          失去焦点     mousemove  鼠标移动</span><br><span class="line">键盘事件  </span><br><span class="line">keydown  键盘按下   keyup        键盘抬起     scroll      滚动事件</span><br><span class="line">文本事件 </span><br><span class="line"> input    用户输入   load         加载事件    <span class="title class_">DOMContentLoaded</span>  无需等待样式和图片的加载事件 </span><br><span class="line">resize    窗口尺寸变化事件    </span><br></pre></td></tr></table></div></figure>        <h3 id="3-事件对象"   >          <a href="#3-事件对象" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-事件对象" class="headerlink" title="3.事件对象"></a>3.事件对象</h3>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line">ie678 通过<span class="variable language_">window</span>.<span class="property">even</span>  兼容 e=e||<span class="variable language_">window</span>.<span class="property">even</span></span><br><span class="line">e.<span class="property">target</span>    返回的是触发事件对象(元素) </span><br><span class="line"><span class="variable language_">this</span>  返回的是绑定事件对象</span><br><span class="line">区别  e.<span class="property">target</span>点击那个就返回那个  <span class="variable language_">this</span> 绑定个元素返回那个元素</span><br><span class="line"></span><br><span class="line">e.<span class="property">type</span>                            <span class="comment">//  返回事件类型</span></span><br><span class="line">e.<span class="title function_">preventDefault</span>()               <span class="comment">// 阻止默认行为(事件)让链链接不跳转或者是提交按钮不提交</span></span><br><span class="line">e.<span class="property">returnValue</span>                     <span class="comment">// ie  678  阻止默认行为</span></span><br><span class="line">e.<span class="property">stopPropagation</span>                 <span class="comment">//阻止冒泡</span></span><br><span class="line">e.<span class="property">cancelBubble</span>=trun                <span class="comment">// 非标准阻止冒泡</span></span><br><span class="line">e.<span class="property">clientX</span> (Y)                                    <span class="comment">//可视区域离窗口的坐标</span></span><br><span class="line">e.<span class="property">pageX</span> (Y)                                     <span class="comment">// 返回相对于文档的指标ie9支持</span></span><br><span class="line">e.<span class="property">screenX</span> (Y)                                   <span class="comment">// 返回鼠标相对于电脑</span></span><br></pre></td></tr></table></div></figure>        <h3 id="4-事件委托与事件对象"   >          <a href="#4-事件委托与事件对象" class="heading-link"><i class="fas fa-link"></i></a><a href="#4-事件委托与事件对象" class="headerlink" title="4.事件委托与事件对象"></a>4.事件委托与事件对象</h3>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line">不是每个子节点单独设置事件监听,而是事件监听设置再父节点上然后利用冒泡原理影响设置每个子节点</span><br><span class="line">contextmenu               禁用菜单事件       函数中加e.<span class="title function_">preventDefault</span>()</span><br><span class="line">selectstart               禁止文字选中       函数中加e.<span class="title function_">preventDefault</span>()</span><br><span class="line">onkeyup                   键盘按键松开</span><br><span class="line">onkeydown                 键盘按下触发   (两个不区分大小写)</span><br><span class="line">onkeypress                键盘按下时触发 但是不识别功能键</span><br><span class="line">ekeyCode                  得到<span class="variable constant_">ASSCII</span>值</span><br></pre></td></tr></table></div></figure>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> javascript </category>
          
          <category> 学习笔记 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> 事件 </tag>
            
            <tag> 节点 </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>javascript的DOM操作</title>
      <link href="/2023/09/05/javascriptDOM%E6%93%8D%E4%BD%9C/"/>
      <url>/2023/09/05/javascriptDOM%E6%93%8D%E4%BD%9C/</url>
      
        <content type="html"><![CDATA[<hr>        <h2 id="获取元素"   >          <a href="#获取元素" class="heading-link"><i class="fas fa-link"></i></a><a href="#获取元素" class="headerlink" title="获取元素"></a>获取元素</h2>      <figure class="highlight javascript"><div class="table-container"><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="title function_">getElementById</span>( )                       <span class="comment">// 可获取带有id的元素对象</span></span><br><span class="line"><span class="variable language_">console</span>.<span class="title function_">dir</span>()                          <span class="comment">//打印返回元素对象  更好的查看里面的属性和方法</span></span><br><span class="line"><span class="title function_">getElementsByTagName</span>( )                 <span class="comment">// 获取元素对象集合 以伪数组方式储存</span></span><br><span class="line">某个元素内部的指定元素 父元素.<span class="title function_">getElementsByTagName</span>( )   <span class="comment">// 父元素必须是指明一个元素</span></span><br><span class="line">h5里面新增ie9以上</span><br><span class="line"><span class="title function_">getElementsByClassName</span>( )              <span class="comment">// 根据类名获取集合</span></span><br><span class="line"><span class="title function_">querySelector</span>( )                        <span class="comment">//   返回指定选择器的第一个</span></span><br><span class="line"><span class="title function_">querySelectoraAll</span>( )                     <span class="comment">//  返回指定选择器所有元素集合</span></span><br><span class="line"><span class="variable language_">document</span>.<span class="property">body</span>                              <span class="comment">//获取body标签</span></span><br><span class="line"><span class="variable language_">document</span>.<span class="property">documentElement</span>                <span class="comment">// 获取html标签</span></span><br></pre></td></tr></table></div></figure>        <h2 id="操作元素属性"   >          <a href="#操作元素属性" class="heading-link"><i class="fas fa-link"></i></a><a href="#操作元素属性" class="headerlink" title="操作元素属性"></a>操作元素属性</h2>      <figure class="highlight javascript"><div class="table-container"><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="property">innerText</span>                        <span class="comment">//不识别html标签</span></span><br><span class="line">.<span class="property">innerHTML</span>                         <span class="comment">//识别html标签</span></span><br><span class="line">disabled =<span class="literal">true</span>                      <span class="comment">// 表单禁用false是可用</span></span><br><span class="line"><span class="variable language_">this</span> 指向的是事件函数的调用者</span><br><span class="line"></span><br><span class="line">样式属性操作</span><br><span class="line">element.<span class="property">style</span>                         <span class="comment">// 行内样式操作     (属性驼峰命名法)权重高</span></span><br><span class="line">element.<span class="property">className</span>                     <span class="comment">//类名样式操作         (会覆盖原来的类名)</span></span><br><span class="line">元素.<span class="property">classList</span>                       <span class="comment">// 修改元素属性样式</span></span><br><span class="line">classList.<span class="title function_">add</span>(<span class="string">&#x27;类名&#x27;</span>)                <span class="comment">//追加一个类</span></span><br><span class="line">classList.<span class="title function_">remove</span>(<span class="string">&#x27;类名&#x27;</span>)                <span class="comment">//移除一个类</span></span><br><span class="line">classList.<span class="title function_">toggle</span>(<span class="string">&#x27;类名&#x27;</span>)                <span class="comment">//切换一个类</span></span><br><span class="line">自定义属性</span><br><span class="line">element.<span class="title function_">getAttribute</span>( )   <span class="comment">//           得到属性值  主要获得自定义属性</span></span><br><span class="line">element.<span class="title function_">setAttribute</span>(<span class="string">&#x27;属性&#x27;</span>,<span class="string">&#x27;值&#x27;</span> )     <span class="comment">//设置属性和值</span></span><br><span class="line">element.<span class="title function_">removeAttribute</span>(<span class="string">&#x27;属性&#x27;</span>,<span class="string">&#x27;值&#x27;</span> );  <span class="comment">// 移除属性</span></span><br><span class="line"></span><br><span class="line">h5中自定义属性名字前加是data-index</span><br><span class="line">h5新增获取自定义属性</span><br><span class="line">element.<span class="property">dataset</span>.<span class="property">index</span>  不需要加date-       (  dataser[<span class="string">&#x27;index&#x27;</span>]   )</span><br><span class="line">如果命名为data-list-name   获取采用驼峰命名法</span><br></pre></td></tr></table></div></figure>        <h2 id="定时器"   >          <a href="#定时器" class="heading-link"><i class="fas fa-link"></i></a><a href="#定时器" class="headerlink" title="定时器"></a>定时器</h2>      <figure class="highlight javascript"><div class="table-container"><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="built_in">setInterval</span>(回调函数,毫秒数)              <span class="comment">// 定时器  一直执行(调用函数不用加括号) </span></span><br><span class="line"><span class="keyword">let</span> 名称 = <span class="built_in">setInterval</span>(回调函数,毫秒数)      <span class="comment">//输出的是执行次数</span></span><br><span class="line"><span class="built_in">clearInterval</span>(定时器名字)                   <span class="comment">// 停止定时器</span></span><br><span class="line">.<span class="built_in">setTimeout</span>(调用函数,毫秒时间)              <span class="comment">// 设置一个定时器到时间就执行只执行一次</span></span><br><span class="line"> <span class="keyword">let</span> 名称 =  <span class="built_in">setTimeout</span>(调用函数,毫秒时间)      <span class="comment">// 直接写函数名调用不用加括号   加括号就要用引号引起来</span></span><br><span class="line"><span class="built_in">clearTimeout</span>(定时器名字)                            <span class="comment">//  停止定时器</span></span><br></pre></td></tr></table></div></figure>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> javascript </category>
          
          <category> 学习笔记 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> DOM </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>javascript函数与对象</title>
      <link href="/2023/08/31/javascript%E5%87%BD%E6%95%B0%E4%B8%8E%E5%AF%B9%E8%B1%A1/"/>
      <url>/2023/08/31/javascript%E5%87%BD%E6%95%B0%E4%B8%8E%E5%AF%B9%E8%B1%A1/</url>
      
        <content type="html"><![CDATA[<hr>        <h2 id="函数"   >          <a href="#函数" class="heading-link"><i class="fas fa-link"></i></a><a href="#函数" class="headerlink" title="函数"></a>函数</h2>              <h3 id="1-函数定义与创建"   >          <a href="#1-函数定义与创建" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-函数定义与创建" class="headerlink" title="1. 函数定义与创建"></a>1. 函数定义与创建</h3>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line">声明函数</span><br><span class="line"><span class="keyword">function</span> 函数名 ( ) &#123;</span><br><span class="line">函数体</span><br><span class="line">&#125;</span><br><span class="line">调用函数 函数名( )</span><br><span class="line">函数表达式写法</span><br><span class="line"><span class="keyword">let</span> 变量名 =<span class="keyword">function</span>(<span class="params"> </span>)&#123;&#125;                        </span><br><span class="line">调用函数 变量名()</span><br></pre></td></tr></table></div></figure>        <h3 id="2-形参与实参"   >          <a href="#2-形参与实参" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-形参与实参" class="headerlink" title="2. 形参与实参"></a>2. 形参与实参</h3>      <figure class="highlight javascript"><div class="table-container"><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="keyword">function</span> 函数名 ( 形参<span class="number">1</span>,形参<span class="number">2.</span>.....)&#123;                  &#125;</span><br><span class="line">函数名 (实参<span class="number">1</span>,实参<span class="number">2.</span>...)</span><br><span class="line"></span><br><span class="line">如果实参和形参个数一致正常输出结果</span><br><span class="line">如果实参的个数多于形参的个数会取到形参个数</span><br><span class="line">如果实参个数小于形参个数<span class="title class_">NaN</span></span><br><span class="line">如果有实参但是没有形参可被函数中的<span class="variable language_">arguments</span>接收成伪数组</span><br><span class="line"></span><br></pre></td></tr></table></div></figure>        <h3 id="3-函数的返回值"   >          <a href="#3-函数的返回值" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-函数的返回值" class="headerlink" title="3.函数的返回值"></a>3.函数的返回值</h3>      <figure class="highlight javascript"><div class="table-container"><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="keyword">function</span> 函数名 ( )&#123;</span><br><span class="line"><span class="keyword">return</span> 需要返回的结果;</span><br><span class="line">&#125;</span><br><span class="line">函数名( );</span><br><span class="line">函数只实现某种功能最终的结果需要返回给函数调用者</span><br><span class="line">只要遇到<span class="keyword">return</span> 就把后面的结果返回给调用者 </span><br><span class="line"> 函数名( )=<span class="keyword">return</span>后面的结果</span><br><span class="line"><span class="keyword">return</span> 会终止函数 后面不会执行且只能返回一个</span><br><span class="line">有<span class="keyword">return</span>返回后面的值没有<span class="keyword">return</span>则返回<span class="literal">undefined</span></span><br><span class="line"><span class="keyword">return</span> 返回多个多个数据使用数组返回</span><br><span class="line"><span class="variable language_">arguments</span>   函数内置接收传递的所以实参  (伪数组)</span><br><span class="line">函数可以调用另一个函数</span><br></pre></td></tr></table></div></figure>        <h3 id="4-匿名函数与立即执行函数"   >          <a href="#4-匿名函数与立即执行函数" class="heading-link"><i class="fas fa-link"></i></a><a href="#4-匿名函数与立即执行函数" class="headerlink" title="4.匿名函数与立即执行函数"></a>4.匿名函数与立即执行函数</h3>      <figure class="highlight plaintext"><div class="table-container"><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">let fn =function ()&#123;</span><br><span class="line">  //函数体</span><br><span class="line">&#125;</span><br><span class="line">立即执行函数 避免全局变量之间污染</span><br><span class="line">(function ()&#123;//语句&#125;)()</span><br><span class="line">(function ()&#123;//语句&#125;()) </span><br><span class="line">//多个立即执行函数之前一定要加;分号</span><br></pre></td></tr></table></div></figure>        <h2 id="作用域"   >          <a href="#作用域" class="heading-link"><i class="fas fa-link"></i></a><a href="#作用域" class="headerlink" title="作用域"></a>作用域</h2>              <h3 id="1-作用域"   >          <a href="#1-作用域" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-作用域" class="headerlink" title="1.作用域"></a>1.作用域</h3>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line">全局作用域</span><br><span class="line">整个script标签或者是一个单独js文件</span><br><span class="line">局部作用域</span><br><span class="line">在函数内部就是局部作用域 这个代码名字只在函数内起效果</span><br><span class="line">块级作用域</span><br><span class="line">在javascript使用&#123;&#125; 包含的代码区域</span><br><span class="line">全局变量     在全局作用域下的变量 在全局可以使用  (如果函数没有声明直接赋值也是全局变量)</span><br><span class="line">局部变量     在局部作用域下变量 函数内部变量 (函数形参也是局部变量)</span><br><span class="line">块级变量     <span class="keyword">let</span>定义的变量只能在块级作用访问 不能跨块,跨函数访问 </span><br><span class="line">两种特殊情况</span><br><span class="line"><span class="number">1.</span> 如果函数内部或者是块级作用域内部变量没有声明直接使用也当全局变量看(不建议使用)</span><br><span class="line"><span class="number">2.</span> 函数内部形参是一种局部变量</span><br></pre></td></tr></table></div></figure>        <h3 id="2-作用域链"   >          <a href="#2-作用域链" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-作用域链" class="headerlink" title="2.作用域链"></a>2.作用域链</h3>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">js 引擎 运行js分两步 预解析  代码执行</span><br><span class="line">预解析;  js会吧里面所有的var 还有 function 提升到作用域的最前面(let不会有)</span><br><span class="line">然后再代码顺序执行</span><br><span class="line">预解析分为    变量预解析(变量提升)和函数预解析(函数提升)</span><br><span class="line">1.变量提升就是把所有变量声明提升到当前作用域最前面   不提升赋值  函数一样</span><br></pre></td></tr></table></div></figure>        <h2 id="对象"   >          <a href="#对象" class="heading-link"><i class="fas fa-link"></i></a><a href="#对象" class="headerlink" title="对象"></a>对象</h2>              <h3 id="1-创建对象"   >          <a href="#1-创建对象" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-创建对象" class="headerlink" title="1.创建对象"></a>1.创建对象</h3>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line"><span class="number">1.</span>利用字面量创建对象</span><br><span class="line"><span class="keyword">var</span> 对象名字 =&#123;</span><br><span class="line">属性名字<span class="number">1</span>:  数据 ,</span><br><span class="line">属性名字<span class="number">2</span>:  数据 ,</span><br><span class="line">方法名: funnction ( )&#123;     内容   &#125;</span><br><span class="line">&#125;</span><br><span class="line">调用对象属性方法    对象名.属性名         对象名[<span class="string">&#x27;属性名&#x27;</span>]</span><br><span class="line">调用对象的方法    对象名.方法名 ( )</span><br><span class="line"></span><br><span class="line"><span class="number">2.</span>利用<span class="keyword">new</span> <span class="title class_">Object</span>创建队形</span><br><span class="line"><span class="keyword">var</span> 对象名字 = <span class="keyword">new</span> <span class="title class_">Object</span>( )</span><br><span class="line">创建了一个空对象 用等号赋值添加属性和方法;</span><br><span class="line">对象名.属性名=<span class="string">&#x27;内容&#x27;</span>;</span><br><span class="line">第三种见高级</span><br><span class="line"></span><br><span class="line">遍历对象<span class="keyword">for</span> (变量 <span class="keyword">in</span> 对象)</span><br><span class="line"><span class="keyword">for</span>(<span class="keyword">var</span> k <span class="keyword">in</span> 对象)&#123;</span><br><span class="line">k    k是变量输出 得到属性名</span><br><span class="line">对象名[k]    得到所有属性值</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>        <h3 id="2-对象的增删改查"   >          <a href="#2-对象的增删改查" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-对象的增删改查" class="headerlink" title="2.对象的增删改查"></a>2.对象的增删改查</h3>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line">对象.属性或者对象[<span class="string">&#x27;属性&#x27;</span>]    对象.方法()</span><br><span class="line">赋值</span><br><span class="line">对象.属性=值    对象.方法=<span class="keyword">function</span>(<span class="params"></span>)&#123;&#125;</span><br><span class="line">新增</span><br><span class="line">对象名.新增属性=  值</span><br><span class="line">删除</span><br><span class="line"><span class="keyword">delete</span> 对象名.属性名</span><br></pre></td></tr></table></div></figure>        <h3 id="3-内置对象"   >          <a href="#3-内置对象" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-内置对象" class="headerlink" title="3.内置对象"></a>3.内置对象</h3>      <figure class="highlight javascript"><div class="table-container"><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></pre></td><td class="code"><pre><span class="line"><span class="title class_">Math</span>对象</span><br><span class="line"><span class="title class_">Math</span>.<span class="property">PI</span>      圆周率            </span><br><span class="line"><span class="title class_">Math</span>.<span class="title function_">max</span>( 数据<span class="number">1</span>,数据<span class="number">2.</span>..)    最大值</span><br><span class="line"><span class="title class_">Math</span>.<span class="title function_">abs</span>(  )     绝对值         </span><br><span class="line"><span class="title class_">Math</span>.<span class="title function_">floor</span>( )   向下取整</span><br><span class="line"><span class="title class_">Math</span>.<span class="title function_">ceil</span>( )   向上取整        </span><br><span class="line"><span class="title class_">Math</span>.<span class="title function_">round</span>( )   四舍五入 (<span class="number">.5</span>像大了取负数也是往大了取)</span><br><span class="line"><span class="keyword">return</span> <span class="title class_">Math</span>.<span class="title function_">floor</span>(<span class="title class_">Math</span>.<span class="title function_">random</span>() * (max - min + <span class="number">1</span>)) + min; 包含两个数</span><br><span class="line"></span><br><span class="line"><span class="title class_">Date</span>( )日期对象  是一个构造函数  必须用<span class="keyword">new</span>来调用</span><br><span class="line">如果没有参数就是返回系统当前时间</span><br><span class="line">常见参数写法   数字型   <span class="number">2021</span>,<span class="number">5</span>,<span class="number">13</span>或者是字符串型  <span class="string">&#x27;2021-05-13  8:8:8&#x27;</span></span><br><span class="line"><span class="keyword">let</span> date= <span class="keyword">new</span> <span class="title class_">Date</span>();</span><br><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(date.<span class="title function_">getFullYear</span>());<span class="comment">//获取当年</span></span><br><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(date.<span class="title function_">getMonth</span>()+<span class="number">1</span>);<span class="comment">//获取当月(0-11)</span></span><br><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(date.<span class="title function_">getDate</span>());<span class="comment">//获取当天日期</span></span><br><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&quot;星期&quot;</span>+(date.<span class="title function_">getDay</span>()+<span class="number">1</span>));<span class="comment">//获取当天星期几周日(0)到周六(6)</span></span><br><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(date.<span class="title function_">getHours</span>());<span class="comment">//获取当前小时</span></span><br><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(date.<span class="title function_">getMinutes</span>());<span class="comment">//获取当前分钟</span></span><br><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(date.<span class="title function_">getSeconds</span>());<span class="comment">//获取当前秒钟</span></span><br><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(date.<span class="title function_">valueOf</span>());    <span class="comment">// 今天距离19701.1的毫秒数 时间戳</span></span><br><span class="line"></span><br><span class="line">date.<span class="title function_">getTime</span>()   简单写法        </span><br><span class="line"><span class="keyword">var</span> 名字 =+<span class="keyword">new</span> <span class="title class_">Date</span>( )       返回总毫秒数</span><br><span class="line">h5新增得到方法   <span class="title class_">Date</span>.<span class="title function_">now</span>( )</span><br></pre></td></tr></table></div></figure>        <h3 id="4-基本数据类型和引用数据类型"   >          <a href="#4-基本数据类型和引用数据类型" class="heading-link"><i class="fas fa-link"></i></a><a href="#4-基本数据类型和引用数据类型" class="headerlink" title="4. 基本数据类型和引用数据类型"></a>4. 基本数据类型和引用数据类型</h3>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line">字符串不可变性 </span><br><span class="line">指的是里面的值不可变 虽然看上去可以改变内容 但其实是地址变了 内存中开辟了新的内存空间</span><br><span class="line"></span><br><span class="line">.<span class="title function_">indexOf</span>( <span class="string">&#x27;要查找的字符&#x27;</span>,[起始位置]) 返回查找字符索引号   只返回第一个满足的  没有满足就是返回-<span class="number">1</span>   </span><br><span class="line">.<span class="title function_">charAt</span>(index)                                            根据位置返回字符</span><br><span class="line">.<span class="title function_">charCodeAt</span>(index)                                      返回相应索引号字符的<span class="variable constant_">ASSCII</span>值</span><br><span class="line">str[index]                                              h5新增  获取指定位置处字符</span><br><span class="line"><span class="title function_">concat</span>(<span class="string">&#x27;字符串&#x27;</span>)                                         拼接字符串</span><br><span class="line"><span class="title function_">subsrt</span>( <span class="string">&#x27;截取起始位置&#x27;</span>,<span class="string">&#x27;截取几个字符&#x27;</span>)                    截取字符</span><br><span class="line"><span class="title function_">replace</span>(<span class="string">&#x27;被替换字符&#x27;</span>,<span class="string">&#x27;替换为字符&#x27;</span>)                       替换字符(只会替换第一个)</span><br><span class="line"><span class="title function_">split</span>(<span class="string">&#x27;分隔符&#x27;</span>)                                         字符转数组</span><br></pre></td></tr></table></div></figure>        <h3 id="5-简单类型和复杂类型"   >          <a href="#5-简单类型和复杂类型" class="heading-link"><i class="fas fa-link"></i></a><a href="#5-简单类型和复杂类型" class="headerlink" title="5.简单类型和复杂类型"></a>5.简单类型和复杂类型</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20230903203422156.png"  alt="image-20230903203422156">      </p>        <h3 id="6-堆和栈"   >          <a href="#6-堆和栈" class="heading-link"><i class="fas fa-link"></i></a><a href="#6-堆和栈" class="headerlink" title="6.堆和栈"></a>6.堆和栈</h3>      <p><strong>简单数据类型是存放到栈里面  里面开放一个空间存放数值</strong> </p><p><strong>复杂数据类型首先再栈里面存放地址 16进制  这个地址指向堆里面是数据</strong></p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20230903203456899.png"  alt="image-20230903203456899">      </p>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> javascript </category>
          
          <category> 学习笔记 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> 函数 </tag>
            
            <tag> javascript </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>javascript流程控制与数组</title>
      <link href="/2023/08/28/javascript%E6%B5%81%E7%A8%8B%E6%8E%A7%E5%88%B6%E4%B8%8E%E6%95%B0%E7%BB%84/"/>
      <url>/2023/08/28/javascript%E6%B5%81%E7%A8%8B%E6%8E%A7%E5%88%B6%E4%B8%8E%E6%95%B0%E7%BB%84/</url>
      
        <content type="html"><![CDATA[<hr>        <h2 id="IF分支语句"   >          <a href="#IF分支语句" class="heading-link"><i class="fas fa-link"></i></a><a href="#IF分支语句" class="headerlink" title="IF分支语句"></a>IF分支语句</h2>      <figure class="highlight javascript"><div class="table-container"><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="keyword">if</span> (条件表达式) &#123;                                                        单分支</span><br><span class="line">执行语句</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> (条件表达式) &#123;</span><br><span class="line">执行语句</span><br><span class="line">&#125;<span class="keyword">else</span>&#123;                                                       双分支可以改为多分支语句</span><br><span class="line">不满足执行</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>        <h2 id="三元表达式"   >          <a href="#三元表达式" class="heading-link"><i class="fas fa-link"></i></a><a href="#三元表达式" class="headerlink" title="三元表达式"></a>三元表达式</h2>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">条件表达式 ? 表达式1:表达式2</span><br><span class="line">如果条件表达式为真返回表达式一的值   如果条件表达式为假返回表达式二的值</span><br></pre></td></tr></table></div></figure>        <h2 id="switch语句"   >          <a href="#switch语句" class="heading-link"><i class="fas fa-link"></i></a><a href="#switch语句" class="headerlink" title="switch语句"></a>switch语句</h2>      <figure class="highlight javascript"><div class="table-container"><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="keyword">switch</span> (num) &#123;</span><br><span class="line">            <span class="keyword">case</span> <span class="number">1</span>: <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`周一你还不上班`</span>)</span><br><span class="line">                <span class="keyword">break</span></span><br><span class="line">            <span class="keyword">case</span> <span class="number">2</span>: <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`周二你还不上班`</span>)</span><br><span class="line">                <span class="keyword">break</span></span><br><span class="line">            <span class="keyword">case</span> <span class="number">3</span>: <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`周三你还不上班`</span>)</span><br><span class="line">                <span class="keyword">break</span></span><br><span class="line">            <span class="keyword">case</span> <span class="number">4</span>: <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`周四你还不上班`</span>)</span><br><span class="line">                <span class="keyword">break</span>                                              <span class="comment">// 匹配全等类型</span></span><br><span class="line">            <span class="keyword">case</span> <span class="number">5</span>: <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`周五赶紧下班`</span>)</span><br><span class="line">                <span class="keyword">break</span></span><br><span class="line">            <span class="keyword">case</span> <span class="number">6</span>: <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`周六你还上班`</span>)</span><br><span class="line">                <span class="keyword">break</span></span><br><span class="line">            <span class="keyword">case</span> <span class="number">7</span>: <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`周日你还上班`</span>)</span><br><span class="line">                <span class="keyword">break</span></span><br><span class="line">            <span class="attr">default</span>: <span class="title function_">alert</span>(<span class="string">`数据错误`</span>)</span><br><span class="line">        &#125;</span><br></pre></td></tr></table></div></figure>        <h2 id="for循环"   >          <a href="#for循环" class="heading-link"><i class="fas fa-link"></i></a><a href="#for循环" class="headerlink" title="for循环"></a>for循环</h2>      <figure class="highlight javascript"><div class="table-container"><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="keyword">for</span>(初始化变量;条件表达式;操作表达式)&#123;</span><br><span class="line">          循环体</span><br><span class="line">&#125;</span><br><span class="line">初始化变量               就是<span class="keyword">let</span>声明一个普通变量 通常用于作为计数器</span><br><span class="line">条件表达式               就是用来决定每一个循环是否执行 就是终止条件</span><br><span class="line">操作表达式               是每一次循环最后执行代码 经常用于我们计数器变量进行更新(递增或者是递减)</span><br><span class="line"><span class="keyword">continue</span>                 用于跳出本次循环,继续下一次循环</span><br><span class="line"><span class="keyword">break</span>                    立即跳出循环</span><br></pre></td></tr></table></div></figure>        <h2 id="while-循环"   >          <a href="#while-循环" class="heading-link"><i class="fas fa-link"></i></a><a href="#while-循环" class="headerlink" title="while 循环"></a>while 循环</h2>      <figure class="highlight javascript"><div class="table-container"><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="keyword">while</span>(条件表达式)&#123;</span><br><span class="line">循环体 (<span class="literal">true</span>执行否者退出)</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">do</span> &#123;</span><br><span class="line">循环体                                   这个不管如何都循环一次然后再判断条件表达式</span><br><span class="line">&#125;   <span class="keyword">while</span>(条件表达式)</span><br><span class="line"><span class="keyword">continue</span>             用于跳出本次循环,继续下一次循环</span><br><span class="line"><span class="keyword">break</span>                  立即跳出循环</span><br></pre></td></tr></table></div></figure>        <h2 id="数组"   >          <a href="#数组" class="heading-link"><i class="fas fa-link"></i></a><a href="#数组" class="headerlink" title="数组"></a>数组</h2>              <h3 id="1-创建数组"   >          <a href="#1-创建数组" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-创建数组" class="headerlink" title="1.创建数组"></a>1.创建数组</h3>      <figure class="highlight javascript"><div class="table-container"><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="keyword">let</span> arr= <span class="keyword">new</span> <span class="title class_">Array</span>()           <span class="comment">//创建了一个空数组</span></span><br><span class="line"><span class="keyword">let</span> 数组名 = [ ]</span><br><span class="line">获取数组元素                  </span><br><span class="line">数组名[索引号]       (数组索引从零开始)</span><br><span class="line">数组长度 数组名.<span class="property">length</span></span><br><span class="line">检测是否为数组<span class="keyword">instanceof</span>   运算符 检测是否为数组(  检测名  <span class="keyword">instanceof</span> <span class="title class_">Array</span>)</span><br><span class="line">第二种方法   <span class="title class_">Array</span>.<span class="title function_">isArray</span>(检测名)</span><br><span class="line">数组新增元素</span><br><span class="line">第一种改变length长度    不给值就是空</span><br><span class="line">修改索引号  追加数组</span><br></pre></td></tr></table></div></figure>        <h3 id="2-数组元素方法-增删改查"   >          <a href="#2-数组元素方法-增删改查" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-数组元素方法-增删改查" class="headerlink" title="2.数组元素方法(增删改查)"></a>2.数组元素方法(增删改查)</h3>      <figure class="highlight javascript"><div class="table-container"><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="title function_">push</span>( )                                  再我们数组的末尾 添加一个或者是多个数组元素    完毕后返回结果是新数组长度</span><br><span class="line">.<span class="title function_">unshift</span>( )                               再我们数组的前面 添加一个或者是多个数组元素    完毕后返回结果是新数组长度</span><br><span class="line">.<span class="title function_">pop</span>( )                                   它可以删除数组最后一个元素一次只删除一个元素     返回值是删除元素</span><br><span class="line">.<span class="title function_">shift</span>( )                                 它可以删除数组第一个元素一次只删除一个元素     返回值是删除元素</span><br><span class="line">.<span class="title function_">splice</span>(起始位置，删除几个元素,插入值a)         删除指定（删几个不写全删）(当删除为零且有插入值则是在起始位置后面插入a)</span><br><span class="line">.<span class="title function_">reverse</span>( )                               翻转数组</span><br><span class="line">.<span class="title function_">sort</span>(<span class="keyword">function</span>(<span class="params"> a b&#123;   <span class="keyword">return</span> a-b升序(b-a降序)  &#125;</span>))      数组排序冒泡排序</span><br><span class="line">.<span class="title function_">indexOf</span>( 数组元素)                                      返回数组元素索引号  只返回第一个满足的  没有满足就是返回-<span class="number">1</span></span><br><span class="line">.<span class="title function_">lastIndexOf</span>(数组运算)                                   从后往前查找</span><br><span class="line">.<span class="title function_">toString</span>( )                                             数组转字符串</span><br><span class="line">.<span class="title function_">join</span>( 分隔符)                                           转化为字符串并加分隔符,默认逗号</span><br></pre></td></tr></table></div></figure>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> javascript </category>
          
          <category> 学习笔记 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> javascript </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>javascript数据类型及运算符</title>
      <link href="/2023/08/26/javascript%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E4%B8%8E%E8%BF%90%E7%AE%97%E7%AC%A6/"/>
      <url>/2023/08/26/javascript%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E4%B8%8E%E8%BF%90%E7%AE%97%E7%AC%A6/</url>
      
        <content type="html"><![CDATA[<hr>        <h2 id="数据类型"   >          <a href="#数据类型" class="heading-link"><i class="fas fa-link"></i></a><a href="#数据类型" class="headerlink" title="数据类型"></a>数据类型</h2>      <figure class="highlight javascript"><div class="table-container"><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">js数据变量类型是只有程序再运行过程中,根据等号右边值来判断</span><br><span class="line"><span class="title class_">Number</span>   <span class="title class_">String</span>    <span class="title class_">Bloolean</span>     <span class="title class_">Undefined</span>    <span class="title class_">Null</span></span><br><span class="line">复杂</span><br><span class="line"><span class="title class_">Object</span></span><br><span class="line"><span class="title class_">Boolean</span>                  <span class="title function_">true</span>(<span class="number">1</span>)   <span class="title function_">false</span>(<span class="number">0</span>)可参与运算</span><br><span class="line"><span class="title class_">Undefined</span>                未定义数据类型声明没有赋值 和字符串相加就是相连和数字相加就是<span class="title class_">NaN</span></span><br><span class="line"><span class="title class_">Null</span>                     空值 和字符串相加就是相连和数字相加就是加数本身</span><br><span class="line"></span><br><span class="line"><span class="keyword">let</span> num = +<span class="title function_">prompt</span>(<span class="string">`输第一个数`</span>)        弹出输入框输入数为字符串可用加号转换</span><br><span class="line"><span class="title function_">alert</span>(<span class="string">&#x27;数据错误&#x27;</span>)                      弹出提示框</span><br><span class="line"><span class="variable language_">document</span>.<span class="title function_">write</span>(<span class="string">&#x27;&#x27;</span>)                     打印到网页(可识别标签)</span><br></pre></td></tr></table></div></figure>        <h2 id="进制转化及数值"   >          <a href="#进制转化及数值" class="heading-link"><i class="fas fa-link"></i></a><a href="#进制转化及数值" class="headerlink" title="进制转化及数值"></a>进制转化及数值</h2>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line">八进制                             程序里数字前面加<span class="number">0</span> 表示八进制</span><br><span class="line">十六进制                           程序里数字前面加0x  表示十六进制</span><br><span class="line">str.<span class="title function_">toString</span>(转换进制)</span><br><span class="line">                                             </span><br><span class="line"><span class="title class_">Nmber</span>.<span class="property">MAX_VALUE</span>                      最大     infinty         无穷大               </span><br><span class="line"><span class="title class_">Nmber</span>.<span class="property">MIN_VALUE</span>                      最小值   -infinty        无穷小</span><br><span class="line"><span class="title class_">NaN</span>                                  代表一个非数值</span><br><span class="line"><span class="built_in">isNaN</span>( )                            判断一个变量是否为非数字类型 返回<span class="literal">true</span>或<span class="literal">false</span></span><br><span class="line"><span class="keyword">typeof</span> 检测值                          检测字符类型</span><br><span class="line">length                                检测字符串长度(数组)</span><br><span class="line"></span><br><span class="line">字符串转义字符  \开头  都要写在引号里面</span><br><span class="line">\n换行 \\斜杠  \<span class="string">&#x27;单引号\t缩进\b空格</span></span><br><span class="line"><span class="string">字符串拼接用加号+拼接   数值相加 字符相连</span></span><br></pre></td></tr></table></div></figure>        <h2 id="数据类型转换"   >          <a href="#数据类型转换" class="heading-link"><i class="fas fa-link"></i></a><a href="#数据类型转换" class="headerlink" title="数据类型转换"></a>数据类型转换</h2>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line"><span class="title function_">toString</span>( )</span><br><span class="line"><span class="title class_">String</span>(变量)</span><br><span class="line">转化为数字型</span><br><span class="line"><span class="title function_">paeseInt</span>(string)                 将string转化为数值型<span class="comment">//转化为整型不会四舍五入</span></span><br><span class="line"><span class="title function_">paeseFloat</span>(string)               将string转化为浮点数值型<span class="comment">//转化为数字型,会保留小数</span></span><br><span class="line"><span class="title class_">Number</span>( )                        强制转换 将string转化为数值型</span><br><span class="line">转化为布尔型</span><br><span class="line"><span class="title class_">Boolean</span>( )               转换为布尔值除了 空 <span class="number">0</span> nan <span class="literal">null</span> <span class="literal">undefined</span> 为<span class="literal">false</span>其他都是<span class="literal">true</span></span><br><span class="line"></span><br><span class="line">javascript隐式转化</span><br><span class="line">-*/                              默认先转化为数字型再运算</span><br><span class="line">+数字也会</span><br></pre></td></tr></table></div></figure>        <h2 id="运算符"   >          <a href="#运算符" class="heading-link"><i class="fas fa-link"></i></a><a href="#运算符" class="headerlink" title="运算符"></a>运算符</h2>              <h3 id="1-简单运算符"   >          <a href="#1-简单运算符" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-简单运算符" class="headerlink" title="1.简单运算符"></a>1.简单运算符</h3>      <figure class="highlight javascript"><div class="table-container"><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><br><span class="line">-                      减     </span><br><span class="line">*                      乘 浮点数尽量避免运算</span><br><span class="line">/                      除</span><br><span class="line">%                      求余(取模)</span><br><span class="line">++ i                  递增运算符(前置先加减<span class="number">1</span>后返回值)</span><br><span class="line">-- i                  递减运算符   单独使用是一样的</span><br><span class="line">i++                   递增运算符 (后置先返回原值后自加一)</span><br><span class="line">i--                   递减运算符</span><br></pre></td></tr></table></div></figure>        <h3 id="2-比较运算符"   >          <a href="#2-比较运算符" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-比较运算符" class="headerlink" title="2.比较运算符"></a>2.比较运算符</h3>      <figure class="highlight javascript"><div class="table-container"><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">&lt;</span><br><span class="line">==   判断相等(会转换数据类型 )</span><br><span class="line">!=    不等于</span><br><span class="line">===   全等于   要求数值类型全相等</span><br></pre></td></tr></table></div></figure>        <h3 id="3-逻辑运算符"   >          <a href="#3-逻辑运算符" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-逻辑运算符" class="headerlink" title="3.逻辑运算符"></a>3.逻辑运算符</h3>      <figure class="highlight javascript"><div class="table-container"><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">&amp;&amp;         与      <span class="literal">true</span>&amp;&amp;<span class="literal">true</span>           两个都为真才真 一个为假就是假</span><br><span class="line">||         或       <span class="literal">true</span>||<span class="literal">false</span>         一个为真就真 都为假就是假</span><br><span class="line">!          非       !<span class="literal">true</span>               不是真的</span><br><span class="line"></span><br><span class="line">六个值是当<span class="literal">false</span>来看的其余真</span><br><span class="line"><span class="comment">// false   数字0  ‘ ’  undefined     null  nan</span></span><br><span class="line">逻辑运算的短路操作</span><br><span class="line">与 是值或者是表达式参与运算   当第一个为真则返回表达式<span class="number">2</span> 如果表达式一为假返回表达式一</span><br><span class="line">或 短路运算 表达式一结果为真返回表达式一  如果表达式一为假则返回表达式二</span><br></pre></td></tr></table></div></figure>        <h3 id="4-运算符的优先级"   >          <a href="#4-运算符的优先级" class="heading-link"><i class="fas fa-link"></i></a><a href="#4-运算符的优先级" class="headerlink" title="4.运算符的优先级"></a>4.运算符的优先级</h3>      <figure class="highlight html"><div class="table-container"><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">在js中存在很多的运算符，如何区分它们之间的优先级，今天总结常用的运算符，从上往下依次顺序：</span><br><span class="line"></span><br><span class="line">1. 小括号（）</span><br><span class="line">有括号先算括号里面的；</span><br><span class="line">2. 一元运算符</span><br><span class="line">加加（++）；  减减（--）；  非（!）</span><br><span class="line">3. 算数运算符</span><br><span class="line">加（+）;减（-）;乘（*）;除（/）;取于（%）；这里是先乘（*）除（/）取于（%）后加（+）减（-）。</span><br><span class="line">4. 关系运算符</span><br><span class="line">大于（&gt;）;大于等于（&gt;=）;小于（&lt;）;小于等于（&lt;=）。</span><br><span class="line">5. 相等运算符</span><br><span class="line">等于（==）；不等于（!=）;全等于（===）;不全等于（!==）。</span><br><span class="line">6. 逻辑运算符</span><br><span class="line">先且（&amp;&amp;）后或（||）。</span><br><span class="line">7. 赋值运算符（=）。</span><br><span class="line">8. 逗号运算符（,）。</span><br></pre></td></tr></table></div></figure>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> javascript </category>
          
          <category> 学习笔记 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> javascript </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>移动端布局必须要懂的知识</title>
      <link href="/2023/08/25/%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%B8%83%E5%B1%80/"/>
      <url>/2023/08/25/%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%B8%83%E5%B1%80/</url>
      
        <content type="html"><![CDATA[<hr>        <h2 id="视口viewport以及二倍图"   >          <a href="#视口viewport以及二倍图" class="heading-link"><i class="fas fa-link"></i></a><a href="#视口viewport以及二倍图" class="headerlink" title="视口viewport以及二倍图"></a>视口viewport以及二倍图</h2>              <h3 id="1-视口是什么"   >          <a href="#1-视口是什么" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-视口是什么" class="headerlink" title="1.视口是什么"></a>1.视口是什么</h3>      <figure class="highlight css"><div class="table-container"><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">viewport                                                 //视口</span><br><span class="line">&lt;meta</span><br><span class="line">initial-scale                            初始缩放比大于<span class="number">0</span>的数字</span><br><span class="line">maxium-scale                        最大缩放比 大于零的数字</span><br><span class="line">minium-scale                        最小缩放比 大一零数字</span><br><span class="line">user-scalable             用户是否可以缩放 yes或者no（<span class="number">1</span>或<span class="number">0</span>）        //视口标签</span><br><span class="line">一般情况vscode会自己生成好</span><br></pre></td></tr></table></div></figure>        <h3 id="2-二倍图"   >          <a href="#2-二倍图" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-二倍图" class="headerlink" title="2.二倍图"></a>2.二倍图</h3>      <figure class="highlight css"><div class="table-container"><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><br><span class="line">px是开发像素   在苹果八中<span class="number">1px</span>开发像素=<span class="number">2</span>个物理像素</span><br><span class="line">视网膜屏下图片给我们放大会模糊开发图片应当大屏幕像素比倍数然后再更改大小</span><br><span class="line">这就是二倍图多倍图的设计</span><br><span class="line"><span class="attribute">background</span>-sizi：图片宽  图片高                  //背景！图缩放写一个是宽高就等比例缩放</span><br><span class="line">（可以百分比）继承父亲</span><br><span class="line">cover         完全覆盖盒子            </span><br><span class="line"><span class="attribute">contain</span>     图像扩展至最大尺寸</span><br></pre></td></tr></table></div></figure>        <h3 id="3-移动端css初始化"   >          <a href="#3-移动端css初始化" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-移动端css初始化" class="headerlink" title="3.移动端css初始化"></a>3.移动端css初始化</h3>      <figure class="highlight css"><div class="table-container"><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">推荐使用  normalize<span class="selector-class">.css</span></span><br><span class="line">官网    http://necolas.github.io/normalize.css/</span><br><span class="line">流式布局（称为百分比布局）</span><br><span class="line">应该设置最大最小值避免影响盒子内容影响</span><br><span class="line">max-width                 //最大宽度</span><br><span class="line">mix-width                  //最小宽度（高度也是一样）</span><br><span class="line">移动端使用精灵图应当缩放然后再测量大小</span><br></pre></td></tr></table></div></figure>        <h2 id="Flex布局"   >          <a href="#Flex布局" class="heading-link"><i class="fas fa-link"></i></a><a href="#Flex布局" class="headerlink" title="Flex布局"></a>Flex布局</h2>              <h3 id="1-Flex布局Flex容器属性"   >          <a href="#1-Flex布局Flex容器属性" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-Flex布局Flex容器属性" class="headerlink" title="1.Flex布局Flex容器属性"></a>1.Flex布局Flex容器属性</h3>      <figure class="highlight css"><div class="table-container"><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></pre></td><td class="code"><pre><span class="line">给父亲加<span class="attribute">flex</span>盒子称为<span class="attribute">flex</span>容器其中的子元素自动成为容器成员来操纵里面成员</span><br><span class="line">对父元素设置的</span><br><span class="line"><span class="attribute">flex-direction</span>                （x轴默认主轴 元素按照主轴排列）           //主轴的方向</span><br><span class="line">row                     默认从左到右</span><br><span class="line">row-reverse             从右到左</span><br><span class="line">column                  从上到下（设置y为主轴）</span><br><span class="line">column -reverse         从下到上</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="attribute">justify-content</span>                                            //设置主轴上子元素排列方式</span><br><span class="line"><span class="attribute">flex</span>-start                默认值从头部开始</span><br><span class="line"><span class="attribute">flex</span>-end                  从尾部开始排列</span><br><span class="line">center                    再主轴居中对齐</span><br><span class="line">space-evenly             所有地方间距相等</span><br><span class="line">space-around             每个子集都有相同间距(中间子集间距为<span class="number">2</span>倍的子集间距)</span><br><span class="line">space-between            先两边贴边再平分剩余空间   ！！！</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="attribute">flex-wrap</span>                                                        //设置子元素是否换行</span><br><span class="line">nowrap                 默认不换行 一行装不下会缩小子元素宽度</span><br><span class="line">wrap                   换行向下</span><br><span class="line">wrap-reverse           向上换行</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="attribute">align-items</span>                                          //设置侧轴上子元素排列方式(单行)</span><br><span class="line"><span class="attribute">flex</span>-start             从上到下</span><br><span class="line"><span class="attribute">flex</span>-end               从下到上</span><br><span class="line">center                 挤再一起居中（垂直居中）</span><br><span class="line">stretch                拉伸(默认)</span><br><span class="line"><span class="attribute">flex-flow</span>              复合属性，相当于同时设置<span class="attribute">flex-direction</span>  <span class="attribute">flex-wrap</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="attribute">align-content</span>                                        //设置侧轴上子元素排列方式(多行)</span><br><span class="line"><span class="attribute">flex</span>-start              默认从侧轴头部开始排列</span><br><span class="line"><span class="attribute">flex</span>-end                再侧轴尾部开始排列</span><br><span class="line">center                  侧轴中间显示</span><br><span class="line">space-around            子项在侧轴平分剩余空间</span><br><span class="line">space-between           子项再侧轴先分布两头，再平均分</span><br><span class="line">stretch                 设置子项元素高度平分父元素高度</span><br><span class="line"></span><br></pre></td></tr></table></div></figure>        <h3 id="2-Flex-元素-儿子的属性"   >          <a href="#2-Flex-元素-儿子的属性" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-Flex-元素-儿子的属性" class="headerlink" title="2.Flex 元素(儿子的属性)"></a>2.Flex 元素(儿子的属性)</h3>      <figure class="highlight css"><div class="table-container"><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="attribute">flex</span> ：<span class="number">1</span>；                                           // 分配剩余空间份数</span><br><span class="line"></span><br><span class="line"><span class="attribute">align-self</span> :                                         //控制子项自己一个再侧轴排列</span><br><span class="line">auto                    默认值继承父亲align-items没有父容器为stretch</span><br><span class="line">stretch                 拉伸充满</span><br><span class="line">center                  元素中心显示</span><br><span class="line">flex-start              元素容器开头</span><br><span class="line">flex-end                元素容器结尾</span><br><span class="line">baseline                位于元素容器基线上</span><br><span class="line"></span><br><span class="line">order:                                               //定义排列顺序  越小越靠前默认<span class="number">0</span></span><br><span class="line"></span><br></pre></td></tr></table></div></figure>        <h2 id="媒体查询以及移动端布局方式"   >          <a href="#媒体查询以及移动端布局方式" class="heading-link"><i class="fas fa-link"></i></a><a href="#媒体查询以及移动端布局方式" class="headerlink" title="媒体查询以及移动端布局方式"></a>媒体查询以及移动端布局方式</h2>              <h3 id="1-媒体查询"   >          <a href="#1-媒体查询" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-媒体查询" class="headerlink" title="1. 媒体查询"></a>1. 媒体查询</h3>      <figure class="highlight css"><div class="table-container"><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="keyword">@media</span>   媒体类型 <span class="keyword">and</span>   (媒体特征)&#123;                        //媒体查询</span><br><span class="line">&#125;</span><br><span class="line">mediatype             媒体类型值</span><br><span class="line"><span class="attribute">all</span>                   所有设备</span><br><span class="line">print                 打印机打印预览</span><br><span class="line">scerr                 电脑 平板 手机</span><br><span class="line"></span><br><span class="line">关键字</span><br><span class="line">and                  连接 相当于且</span><br><span class="line">not                  排除某个相当于非</span><br><span class="line">only                 指定某个特定</span><br><span class="line"></span><br><span class="line">媒体特性</span><br><span class="line"><span class="attribute">width</span>              定义输出设备界面可见区域宽度</span><br><span class="line"><span class="attribute">min-width</span>          定义输出设备中页面最小可见宽度</span><br><span class="line"><span class="attribute">max-width</span>         定义输出设备最大可见区域宽度</span><br><span class="line">引入资源就是针对不同的屏幕尺寸调用不同的css文件</span><br><span class="line">&lt;link  rel=&quot;stylesheet&quot;  href=&#x27;&#x27;css文件  &quot; media =&quot;screen and (媒体特征)&quot;&gt;</span><br><span class="line"></span><br><span class="line">书写顺序   应该从小到大写</span><br><span class="line"><span class="attribute">min-width</span>(从小到大)</span><br><span class="line">max -<span class="attribute">width</span>(从大到小)</span><br></pre></td></tr></table></div></figure>        <h3 id="2-rem单位以及vw与vh"   >          <a href="#2-rem单位以及vw与vh" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-rem单位以及vw与vh" class="headerlink" title="2.rem单位以及vw与vh"></a>2.rem单位以及vw与vh</h3>      <figure class="highlight plaintext"><div class="table-container"><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">可通过修改html里面的文大小来给变页面中元素大小控制整体</span><br><span class="line">当设置</span><br><span class="line">html&#123;</span><br><span class="line">   font-size:30px          1个rem 等同于 30px</span><br><span class="line">&#125;</span><br><span class="line">可使用媒体查询改变html文字大小实现不同屏幕下的布局</span><br><span class="line">flexible.js  使用rem 将屏幕分为10份(如在365px屏幕下一个rem就是36.5px)</span><br><span class="line">使用插件要更改css root才能转换为要使用的rem</span><br><span class="line">还是要给屏幕给一个超过你所要项目大小就将font-sizi改好</span><br><span class="line">记得提权!important</span><br><span class="line"></span><br><span class="line">相对单位根据屏幕可见视口分成100分1个就是一份</span><br><span class="line">(一般只使用一个不会vw wh一起用 对全面屏手机不友好)</span><br><span class="line">vw(viewport width)</span><br><span class="line">1vw = 1/100视口宽度</span><br><span class="line">vh(viewport height)</span><br><span class="line">1vh = 1/100视口宽度</span><br></pre></td></tr></table></div></figure>        <h2 id="Less-与Scss"   >          <a href="#Less-与Scss" class="heading-link"><i class="fas fa-link"></i></a><a href="#Less-与Scss" class="headerlink" title="Less 与Scss"></a>Less 与Scss</h2>              <h3 id="1-Less"   >          <a href="#1-Less" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-Less" class="headerlink" title="1.Less"></a>1.Less</h3>      <figure class="highlight less"><div class="table-container"><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="selector-tag">less</span>直接新建<span class="selector-tag">less</span>文件</span><br><span class="line"> <span class="selector-tag">html</span>不能直接使用<span class="selector-tag">less</span>   <span class="selector-tag">vscode</span>中插件<span class="selector-tag">easy</span> <span class="selector-tag">less</span></span><br><span class="line"> 下载后保存<span class="selector-tag">less</span>文件回自动生成<span class="selector-tag">css</span>文件然后<span class="selector-tag">html</span>引用</span><br><span class="line"></span><br><span class="line"><span class="number">1.0</span>  <span class="selector-tag">less</span>中变量的声明</span><br><span class="line">    @变量名:值;</span><br><span class="line"><span class="number">2.0</span> <span class="selector-tag">less</span>书写嵌套规则</span><br><span class="line"><span class="selector-tag">less</span>嵌套 子元素样式直接写在父元素里面就好了</span><br><span class="line">如果有伪类  交集选择器  伪元素选择器  我们内层选择器前面加<span class="selector-tag">&amp;</span></span><br><span class="line"><span class="number">3.0</span> <span class="selector-tag">less</span>运算</span><br><span class="line"></span><br><span class="line">颜色<span class="number">16</span>进制也可以运算</span><br><span class="line">可以进行加减乘除运算   除法运算要加(<span class="number">15</span> / <span class="number">2px</span> )</span><br><span class="line">运算符左右都要敲空格</span><br><span class="line">两个数参与运算 如果只有一个有单位,则与有单位的为准</span><br><span class="line">两个数参与运算 ,如果<span class="number">2</span>个都有单位 且不一样以第一个单位为准</span><br></pre></td></tr></table></div></figure>        <h3 id="2-less文件操作"   >          <a href="#2-less文件操作" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-less文件操作" class="headerlink" title="2.less文件操作"></a>2.less文件操作</h3>      <figure class="highlight less"><div class="table-container"><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="keyword">@import</span> <span class="string">&quot;less名&quot;</span>          文件导入</span><br><span class="line">less导出文件到指定文件夹</span><br><span class="line">方法一</span><br><span class="line">配置easyless产检实现</span><br><span class="line">设置→搜索easyless→在setting.json中编辑</span><br><span class="line">json文件中添加代码</span><br><span class="line"><span class="string">&quot;out&quot;</span>: <span class="string">&quot;路径最后要加/&quot;</span></span><br><span class="line">方法二</span><br><span class="line">less文件中添加</span><br><span class="line"><span class="comment">// out: 路径也要加斜杠</span></span><br><span class="line"></span><br><span class="line">禁止导出</span><br><span class="line">less第一行添加</span><br><span class="line"><span class="comment">// out:false</span></span><br></pre></td></tr></table></div></figure>        <h3 id="3-scss"   >          <a href="#3-scss" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-scss" class="headerlink" title="3.scss"></a>3.scss</h3>      <figure class="highlight plaintext"><div class="table-container"><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">💡 sass使用$来标记变量   $变量名: 变量值</span><br><span class="line"></span><br><span class="line">也可以变量符合属性    块级中声明只能在块级中使用 </span><br><span class="line"></span><br><span class="line">以空格分割的多属性值也可以标识变量</span><br><span class="line"></span><br><span class="line">$basic-border: 1px solid black;</span><br><span class="line"></span><br><span class="line">&amp;选择父级             (其他使用基本和less保持一致)</span><br></pre></td></tr></table></div></figure>        <h2 id="Bootstrap"   >          <a href="#Bootstrap" class="heading-link"><i class="fas fa-link"></i></a><a href="#Bootstrap" class="headerlink" title="Bootstrap"></a>Bootstrap</h2>              <h3 id="1-简单使用"   >          <a href="#1-简单使用" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-简单使用" class="headerlink" title="1.简单使用"></a>1.简单使用</h3>      <figure class="highlight plaintext"><div class="table-container"><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">💡 官方文档   https://v3.bootcss.com/</span><br><span class="line"></span><br><span class="line">引入插件需要先引入jq文件在引自己的js文件</span><br><span class="line"></span><br><span class="line">布局容器</span><br><span class="line">.container    响应式布局容器分大屏小萍</span><br><span class="line"></span><br><span class="line">.container-fluid  流式布局百分比宽度</span><br></pre></td></tr></table></div></figure>        <h3 id="2-栅格系统"   >          <a href="#2-栅格系统" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-栅格系统" class="headerlink" title="2.栅格系统"></a>2.栅格系统</h3>      <figure class="highlight css"><div class="table-container"><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="number">12</span>等分</span><br><span class="line">行 row</span><br><span class="line">列 colu</span><br><span class="line">小屏(手机)                   <span class="selector-class">.col-xs-</span>占列份数</span><br><span class="line">小屏设备(平板 )            <span class="selector-class">.col-sm-</span>占列份数</span><br><span class="line">中等                           <span class="selector-class">.col-md-</span>占列份数</span><br><span class="line">宽屏                           <span class="selector-class">.col-lg-</span>占列份数</span><br><span class="line">列嵌套最好加一个行 row</span><br><span class="line">列偏移</span><br><span class="line"><span class="selector-class">.col-</span>类型-offset-偏移份数</span><br><span class="line">列排序</span><br><span class="line"><span class="selector-class">.col-leix-push-</span>要推的份数</span><br><span class="line"><span class="selector-class">.col-leix-pull-</span>要拉的份数</span><br><span class="line">响应式工具</span><br><span class="line">hidden-类型           就会某个屏幕下隐藏</span><br><span class="line">visible-leix          就会再某一个屏幕下显示</span><br><span class="line"></span><br></pre></td></tr></table></div></figure>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> 学习笔记 </category>
          
          <category> 移动端布局 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> Flex </tag>
            
            <tag> less </tag>
            
            <tag> scss </tag>
            
            <tag> Bootstrap </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>CSS第四天</title>
      <link href="/2023/08/23/CSS%E7%AC%AC%E5%9B%9B%E5%A4%A9/"/>
      <url>/2023/08/23/CSS%E7%AC%AC%E5%9B%9B%E5%A4%A9/</url>
      
        <content type="html"><![CDATA[<hr>        <h2 id="C3新增选择器"   >          <a href="#C3新增选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#C3新增选择器" class="headerlink" title="C3新增选择器"></a>C3新增选择器</h2>              <h3 id="1-属性选择器"   >          <a href="#1-属性选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-属性选择器" class="headerlink" title="1.属性选择器"></a>1.属性选择器</h3>      <figure class="highlight css"><div class="table-container"><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">E<span class="selector-attr">[att]</span>                        选择有att属性的e元素</span><br><span class="line">E<span class="selector-attr">[att=val]</span>                   选择att属性且值为val的e元素</span><br><span class="line">e<span class="selector-attr">[att^=val]</span>                  选择att属性且值为val开头的e元素</span><br><span class="line">e<span class="selector-attr">[att$=val]</span>                  选择att属性且值为val结尾的e元素       权重为<span class="number">10</span></span><br><span class="line">e<span class="selector-attr">[att*=val]</span>                  选择att属性且值含有val的e元素  </span><br><span class="line"></span><br></pre></td></tr></table></div></figure>        <h3 id="2-结构伪类选择器"   >          <a href="#2-结构伪类选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-结构伪类选择器" class="headerlink" title="2.结构伪类选择器"></a>2.结构伪类选择器</h3>      <figure class="highlight css"><div class="table-container"><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">e：first-child                                     父元素中第一个子元素e</span><br><span class="line">e：last-child                                     父元素中第最后一个子元素e</span><br><span class="line">e：nth-child（n）           匹配父元素中第n个子元素e（n还可以为even偶数）（odd奇数）</span><br><span class="line">n 还可以为公式   <span class="number">2</span>n     <span class="number">2</span>n+<span class="number">1</span>  <span class="number">5</span>n    n+<span class="number">5</span>    -n+<span class="number">5</span>     n从零开始累加</span><br><span class="line">e：first-of-type                              指定类型e的第一个元素</span><br><span class="line">e：last-of-type                             指定类型e的最后一个元素</span><br><span class="line">e：nth-of-type（n）                            指定类型e的第n个元素</span><br><span class="line"></span><br><span class="line">nth-child                          对父元素先排序再判断是否匹配e</span><br><span class="line">nth-of-type                 对父元素指定元素进行排序选择再找</span><br></pre></td></tr></table></div></figure>        <h3 id="3-伪元素选择器"   >          <a href="#3-伪元素选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-伪元素选择器" class="headerlink" title="3.伪元素选择器"></a>3.伪元素选择器</h3>      <figure class="highlight css"><div class="table-container"><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-pseudo">::before</span>                                  再元素前面插入内容</span><br><span class="line"><span class="selector-pseudo">::after</span>                                   再元素后面插入内容    行内元素  权重为一</span><br><span class="line">必须要有<span class="attribute">content</span>  可写内容</span><br></pre></td></tr></table></div></figure>        <h3 id="4-权重表优先级别"   >          <a href="#4-权重表优先级别" class="heading-link"><i class="fas fa-link"></i></a><a href="#4-权重表优先级别" class="headerlink" title="4. 权重表优先级别"></a>4. 权重表优先级别</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20230819164337529.png"  alt="image-20230819164337529">      </p>        <h2 id="网站favicon图标"   >          <a href="#网站favicon图标" class="heading-link"><i class="fas fa-link"></i></a><a href="#网站favicon图标" class="headerlink" title="网站favicon图标"></a>网站favicon图标</h2>      <figure class="highlight css"><div class="table-container"><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">选中ps中切图切出png格式然后到网站比特虫  http://www.bitbug.net/</span><br><span class="line">然后将图片保存到根目录下面   最后界面引入  （必须在head之间引入代码）</span><br><span class="line">&lt;link rel=<span class="string">&quot;shortcut icon&quot;</span> href=<span class="string">&quot; favicon.ico&quot;</span> /&gt;</span><br><span class="line">SEO  提高搜索  自然排名</span><br><span class="line">title   网站名称尽量不过<span class="number">30</span>字</span><br><span class="line">&lt;meta name=<span class="string">&quot;description&quot;</span> content=<span class="string">&quot;对网站介绍网站说明&quot;</span>&gt;</span><br></pre></td></tr></table></div></figure>        <h2 id="LOGO-SEO优化"   >          <a href="#LOGO-SEO优化" class="heading-link"><i class="fas fa-link"></i></a><a href="#LOGO-SEO优化" class="headerlink" title="LOGO SEO优化"></a>LOGO SEO优化</h2>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20230819164549688.png"  alt="image-20230819164549688">      </p>        <h2 id="2d-3d转化以及动画"   >          <a href="#2d-3d转化以及动画" class="heading-link"><i class="fas fa-link"></i></a><a href="#2d-3d转化以及动画" class="headerlink" title="2d&#x2F;3d转化以及动画"></a>2d&#x2F;3d转化以及动画</h2>              <h3 id="1-2d转化-translate"   >          <a href="#1-2d转化-translate" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-2d转化-translate" class="headerlink" title="1. 2d转化(translate )"></a>1. 2d转化(translate )</h3>      <figure class="highlight css"><div class="table-container"><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="attribute">transform</span>:translate (x ,y)             //移动(不会影响其他盒子位置)行内标签无用</span><br><span class="line">transform:<span class="built_in">translatex</span>(n)                   里面用百分数是移动本身盒子的百分数</span><br><span class="line">transform:<span class="built_in">translateY</span>(n)                       可用来将盒子垂直居中</span><br><span class="line">transform：rotate（deg单位）                  //旋转</span><br><span class="line">transform-origin：x y                      //转换旋转中心点（默认中心点）</span><br><span class="line">transform：scale（x，y）（宽，高）          //缩放（不会影响其他盒子和设置缩放中心点）</span><br><span class="line">（ 里面写数字 不限单位 就是倍数的意思）一个数字就是两个都变化 小于一就是缩放</span><br><span class="line"></span><br><span class="line">transform：translate (x ,y)   rotate（deg单位）scale（x，y）   //复合写法 记得先写移动最前</span><br></pre></td></tr></table></div></figure>        <h3 id="2-动画-animation"   >          <a href="#2-动画-animation" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-动画-animation" class="headerlink" title="2. 动画(animation)"></a>2. 动画(animation)</h3>      <p>1.<strong>先定义动画</strong></p><p>方法一:(这个可以从0到100%)</p><figure class="highlight css"><div class="table-container"><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="keyword">@keyframes</span> 动画姓名&#123;                           </span><br><span class="line"><span class="number">0%</span>&#123;</span><br><span class="line">初始状态                                             </span><br><span class="line">&#125;                                                         </span><br><span class="line"><span class="number">100%</span>&#123;                             </span><br><span class="line">结束状态</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure><p>方法二:(这种只有两种状态)</p><figure class="highlight css"><div class="table-container"><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">from</span>&#123; </span><br><span class="line">         <span class="attribute">background-position</span>: <span class="number">0</span> <span class="number">0</span>;</span><br><span class="line">     &#125;</span><br><span class="line"> <span class="selector-tag">to</span>&#123;</span><br><span class="line">        <span class="attribute">background-position</span>: <span class="number">1680px</span> <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br></pre></td></tr></table></div></figure><p><strong>2.调用动画    给用用动画的加上</strong></p><figure class="highlight css"><div class="table-container"><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="attribute">animation-name</span>:动画名称;</span><br><span class="line"> <span class="attribute">animation-duration</span>: 时间;</span><br><span class="line">复合属性</span><br><span class="line"><span class="attribute">animation</span>：名称  持续时间  运动曲线 何时开始   播放次数 是否反方向 动画起始或结束状态</span><br><span class="line"><span class="attribute">animation-timing-function</span>:steps（分几步） ;              //运动曲线步长</span><br><span class="line">元素可以加多个动画用逗号隔开  </span><br></pre></td></tr></table></div></figure><p>3.<strong>动画常用属性</strong></p><p><span class="exturl"><a class="exturl__link"   href="https://blog.csdn.net/assokoo123/article/details/131693081" >使用方法参考</a><span class="exturl__icon"><i class="fas fa-external-link-alt"></i></span></span>地址</p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20230819165737810.png"  alt="image-20230819165737810">      </p>        <h3 id="3-3d转化-translate3d"   >          <a href="#3-3d转化-translate3d" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-3d转化-translate3d" class="headerlink" title="3. 3d转化(translate3d)"></a>3. 3d转化(translate3d)</h3>      <figure class="highlight css"><div class="table-container"><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="attribute">transform</span>：translate3d（x，y，z）                       //<span class="number">3</span>d位移（z后面单位一般为px）</span><br><span class="line">（z值为正向外走负则向里走）xyz不能省略没有就写零   z值越大看到的物体越大</span><br><span class="line"><span class="attribute">perspective</span>： <span class="number">500</span> （单位px）                           //透视 （写在被观察元素父盒子上）</span><br><span class="line"><span class="attribute">transform</span>：rotate3d （x,y,z,deg）                       //<span class="number">3</span>d旋转</span><br><span class="line"></span><br><span class="line">rotateX rotateY (左手准则 大拇指指向正值四根手指弯曲方向是正值)</span><br><span class="line">rotateZ    和<span class="number">2</span>d基本类似</span><br><span class="line"><span class="attribute">transform-style</span>：（flat  子元素不开启立体默认（preserve-<span class="number">3</span>d  子元素开启立体） //<span class="number">3</span>d呈现</span><br><span class="line">代码写给父级，但是影响子盒子</span><br></pre></td></tr></table></div></figure>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> css </category>
          
          <category> 学习笔记 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> SEO </tag>
            
            <tag> favicon图标 </tag>
            
            <tag> 动画 </tag>
            
            <tag> 2d/3d转化 </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>CSS第三天</title>
      <link href="/2023/08/22/CSS%E7%AC%AC%E4%B8%89%E5%A4%A9/"/>
      <url>/2023/08/22/CSS%E7%AC%AC%E4%B8%89%E5%A4%A9/</url>
      
        <content type="html"><![CDATA[<hr>        <h2 id="定位"   >          <a href="#定位" class="heading-link"><i class="fas fa-link"></i></a><a href="#定位" class="headerlink" title="定位"></a>定位</h2>      <figure class="highlight css"><div class="table-container"><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><br><span class="line"><span class="attribute">position</span>: &#123; static&#125;  &#123;relative&#125;  &#123;absolute&#125;   &#123;fixed&#125;</span><br><span class="line">strtic                           // 静态定位</span><br><span class="line">relative              // 相对定位（相对于原来的位置来说的）保留位置一般给绝对定位当爹</span><br><span class="line">absoiute             //绝对定位（相对于他的祖先元素）   不占有原来位置  脱标</span><br><span class="line">如果祖先元素或者是祖先元素没有定位，以浏览器为准</span><br><span class="line">如果祖先定有位，则以最近一级有定位祖先元素参考</span><br><span class="line">父亲需要占有位置使用相对定位儿子不占用位置用绝对  （子绝父相）</span><br><span class="line"></span><br><span class="line">fixed                       //固定定位（浏览器可视窗口定位）</span><br><span class="line">固定版心位置  先固定版心中间  <span class="attribute">left</span>：<span class="number">50%</span> 然后让固定盒子<span class="attribute">margin</span>   左或右 设置版心宽度一半</span><br><span class="line">sticky             //粘性定位 （浏览器可视窗口定位）  占有位置必须添加一个偏移</span><br><span class="line"><span class="attribute">z-index</span>                    // 定位叠放次序</span><br></pre></td></tr></table></div></figure>        <h2 id="显示隐藏"   >          <a href="#显示隐藏" class="heading-link"><i class="fas fa-link"></i></a><a href="#显示隐藏" class="headerlink" title="显示隐藏"></a>显示隐藏</h2>      <figure class="highlight css"><div class="table-container"><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">dispaly ：<span class="attribute">none</span> (block  显示)     不占有原来位置                 //隐藏对象</span><br><span class="line"><span class="attribute">visibility</span> ：（visible    可视）   （hidden 隐藏）  占有原来位置    //可见性</span><br><span class="line"></span><br><span class="line"><span class="attribute">overflow</span>                                    （定位慎用）</span><br><span class="line">visible                                       不剪切也不加滚动条</span><br><span class="line">hidden                                       不显示超出 超出隐藏</span><br><span class="line">scroll                                        不管内容是否超出，总是加滚动条</span><br><span class="line">auto                                          超出自动显示滚动条</span><br><span class="line"></span><br></pre></td></tr></table></div></figure>        <h2 id="CSS常用高级知识点"   >          <a href="#CSS常用高级知识点" class="heading-link"><i class="fas fa-link"></i></a><a href="#CSS常用高级知识点" class="headerlink" title="CSS常用高级知识点"></a>CSS常用高级知识点</h2>              <h3 id="1-精灵图"   >          <a href="#1-精灵图" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-精灵图" class="headerlink" title="1. 精灵图"></a>1. 精灵图</h3>      <p><strong>作用:精灵图一般设置固定背景小图片减少服务器传输</strong>      </p><p><strong>使用方法:background-position ：x  y； 来实现显示设置的是图片移动； 一般都为负值</strong></p><p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20230819160013295.png"  alt="image-20230819160013295">      </p>        <h3 id="2-字体图标"   >          <a href="#2-字体图标" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-字体图标" class="headerlink" title="2. 字体图标"></a>2. <span class="exturl"><a class="exturl__link"   href="https://www.iconfont.cn/" >字体图标</a><span class="exturl__icon"><i class="fas fa-external-link-alt"></i></span></span></h3>      <figure class="highlight plaintext"><div class="table-container"><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">https://www.iconfont.cn/  国内网站     (阿里巴巴) </span><br><span class="line">使用方法：先将fonts放入根目录中  再css中声明 </span><br><span class="line">&lt;link rel=&quot;shortcut icon&quot; href=&quot;favicon.ico&quot; type=&quot;image/x-icon&quot;&gt;</span><br><span class="line">字体图标追加    先点击左上角 imp  选择selection.json再选择新图标</span><br></pre></td></tr></table></div></figure>        <h3 id="3-文字溢出"   >          <a href="#3-文字溢出" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-文字溢出" class="headerlink" title="3. 文字溢出"></a>3. 文字溢出</h3>      <figure class="highlight css"><div class="table-container"><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></pre></td><td class="code"><pre><span class="line">单行   想要强制一行显示文本(盒子必须要有宽度)  </span><br><span class="line">   <span class="attribute">overflow</span>: hidden;</span><br><span class="line">    <span class="attribute">white-space</span>: nowrap;</span><br><span class="line">     <span class="comment">/*文字超出宽度则显示ellipsis省略号*/</span></span><br><span class="line">      <span class="attribute">text-overflow</span>: ellipsis;</span><br><span class="line"></span><br><span class="line">多行</span><br><span class="line"><span class="attribute">text-overflow</span>: ellipsis;</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">    -webkit-line-clamp: <span class="number">3</span>;<span class="comment">/*要的行数*/</span> </span><br><span class="line">    <span class="attribute">overflow</span>: hidden;</span><br><span class="line"></span><br><span class="line">   取消网页的双击被选中使用css加入<span class="selector-tag">body</span>内</span><br><span class="line">  -webkit-user-select: none;</span><br><span class="line">        -moz-user-select: none;</span><br><span class="line">        -ms-user-select: none;</span><br><span class="line">        user-select: none;  </span><br></pre></td></tr></table></div></figure>        <h3 id="4-布局技巧"   >          <a href="#4-布局技巧" class="heading-link"><i class="fas fa-link"></i></a><a href="#4-布局技巧" class="headerlink" title="4.  布局技巧"></a>4.  布局技巧</h3>              <h4 id="1-盒子操作"   >          <a href="#1-盒子操作" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-盒子操作" class="headerlink" title="1.盒子操作"></a>1.盒子操作</h4>      <figure class="highlight plaintext"><div class="table-container"><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">margin  负值消除浮动盒子边框叠加   细线边框</span><br><span class="line">要使鼠标经细线边框改变颜色  当没有定位是添加相对定位</span><br><span class="line">如果有定位用z-index加大层级</span><br><span class="line">文字浮动图片效果时只需要给图片加上浮动浮动不会压住文字</span><br><span class="line">三角形妙用设置大一点高度直角三角形</span><br><span class="line">左下边框宽度设置为0吧上边框宽度调大</span><br><span class="line">每个网页都要进行初始化</span><br></pre></td></tr></table></div></figure>        <h4 id="2-过渡属性"   >          <a href="#2-过渡属性" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-过渡属性" class="headerlink" title="2.过渡属性"></a>2.过渡属性</h4>      <figure class="highlight plaintext"><div class="table-container"><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">transition:要过渡属性（all）       花费时间   运动曲线   何时开始          //过渡</span><br><span class="line">如果要写多个属性可写逗号  一般多个属性都要变化一般使用all</span><br></pre></td></tr></table></div></figure>        <h4 id="3-鼠标样式"   >          <a href="#3-鼠标样式" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-鼠标样式" class="headerlink" title="3.鼠标样式"></a>3.鼠标样式</h4>      <figure class="highlight plaintext"><div class="table-container"><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">cursor:    defautl 默认                        //鼠标样式</span><br><span class="line">(pointer   变手    move   移动     text文本      not-allowed  禁止)  </span><br><span class="line">outline:none                               //取消表单 文本域轮廓线  </span><br><span class="line">resize:none                              //防止文本域拖拽 </span><br></pre></td></tr></table></div></figure>        <h4 id="4-文字图片居中"   >          <a href="#4-文字图片居中" class="heading-link"><i class="fas fa-link"></i></a><a href="#4-文字图片居中" class="headerlink" title="4.文字图片居中"></a>4.文字图片居中</h4>      <figure class="highlight plaintext"><div class="table-container"><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">使用vertical-align:middle可以让行级元素垂直居中，但这个居中是以文字的中线来计算的，</span><br><span class="line">而文字的中线在不同的字体上不同，甚至相同的字体在不同的浏览器上显示的都不同。</span><br><span class="line">所以直接使用vertical-align:middle很难完美居中，因此需要其它调整。</span><br></pre></td></tr></table></div></figure>        <h4 id="5-css三角做法"   >          <a href="#5-css三角做法" class="heading-link"><i class="fas fa-link"></i></a><a href="#5-css三角做法" class="headerlink" title="5.css三角做法"></a>5.css三角做法</h4>      <figure class="highlight plaintext"><div class="table-container"><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">css三角形做法     先设置盒子高宽为零设置边框实线透明色然后再设置想要那一边的角</span><br><span class="line">border：50px solid transparent</span><br><span class="line">border-（上下左右）颜色</span><br></pre></td></tr></table></div></figure>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> css </category>
          
          <category> 学习笔记 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> 定位 </tag>
            
            <tag> position </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>CSS第二天</title>
      <link href="/2023/08/21/CSS%E7%AC%AC%E4%BA%8C%E5%A4%A9/"/>
      <url>/2023/08/21/CSS%E7%AC%AC%E4%BA%8C%E5%A4%A9/</url>
      
        <content type="html"><![CDATA[<hr>        <h2 id="背景属性以及复合写法"   >          <a href="#背景属性以及复合写法" class="heading-link"><i class="fas fa-link"></i></a><a href="#背景属性以及复合写法" class="headerlink" title="背景属性以及复合写法"></a>背景属性以及复合写法</h2>      <figure class="highlight css"><div class="table-container"><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="attribute">background-size</span>                                //控制背景图片大小</span><br><span class="line"><span class="attribute">background-color</span>                              //背景颜色（默认透明  transparent）</span><br><span class="line"><span class="attribute">background-image</span> ：url（）                     //背景图片</span><br><span class="line"><span class="attribute">background-repeat</span>：</span><br><span class="line">repeat（平铺）no-repeat（不平铺）</span><br><span class="line">repeat-x（x轴平铺）repeat-y（y轴）</span><br><span class="line"><span class="attribute">background-position</span> ：x  y；                 //改变图片背景位置</span><br><span class="line">（可以是上下左右和居中的方位名词如<span class="attribute">top</span>填入无顺序关系）只填一个第二个默认居中</span><br><span class="line">  也可以直接跟xy的px值          也可以混合使用xy有顺序</span><br><span class="line"><span class="attribute">background-attachment</span>：scroll（随内容滚动 默认）fixed（背景固定）        //背景固定  </span><br><span class="line"><span class="attribute">background</span>：背景颜色  背景图片地址 背景平铺 背景图片滚动 背景图片位置</span><br><span class="line"><span class="attribute">background</span> ：rgba（<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><br><span class="line"><span class="attribute">background</span>:<span class="built_in">linear-gradient</span>(起始方向,颜色<span class="number">1</span>,颜色<span class="number">2</span>,...);          //背景色渐变</span><br><span class="line">(得加上浏览器私有前缀)</span><br><span class="line">-moz-:代表火狐私有前缀</span><br><span class="line">-ms-:代表ie浏览器私有前缀</span><br><span class="line">-webkit-: 代表safari ,谷歌私有属性</span><br><span class="line">-o-:代表Opera私有属性</span><br></pre></td></tr></table></div></figure>        <h2 id="盒子模型"   >          <a href="#盒子模型" class="heading-link"><i class="fas fa-link"></i></a><a href="#盒子模型" class="headerlink" title="盒子模型"></a>盒子模型</h2>              <h3 id="1-边框-border"   >          <a href="#1-边框-border" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-边框-border" class="headerlink" title="1. 边框 border"></a>1. 边框 border</h3>      <figure class="highlight css"><div class="table-container"><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="attribute">border-width</span>                                                    //边框粗细</span><br><span class="line"><span class="attribute">border</span>- style （solid 实线) （dashed 虚线）（dottde 点线）   //  边框样式</span><br><span class="line"><span class="attribute">border-color</span>                                               //边框颜色</span><br><span class="line"><span class="attribute">border</span>：粗细 样式 颜色    （无顺序）                      //复合写法</span><br><span class="line"><span class="attribute">border</span>-（<span class="attribute">top</span> ） （下） （左） （右）                      //每条边框</span><br><span class="line"><span class="attribute">border-collapse</span> ：collapse                              //表格细线边框</span><br><span class="line">边框图片(切图九宫格)</span><br><span class="line"><span class="attribute">border-image-source</span>                                   //图片路径</span><br><span class="line"><span class="attribute">border-image-slice</span>                                   //切割尺寸(不带单位)</span><br><span class="line"><span class="attribute">border-image-width</span>                                   //图片边框的宽度(带单位)</span><br><span class="line"><span class="attribute">border-image-repeat</span>                                 // 图片平铺/铺满/拉伸(默认</span><br></pre></td></tr></table></div></figure>        <h3 id="2-内外边距的使用"   >          <a href="#2-内外边距的使用" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-内外边距的使用" class="headerlink" title="2. 内外边距的使用"></a>2. 内外边距的使用</h3>      <figure class="highlight css"><div class="table-container"><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="attribute">padding</span>:     （会改变盒子大小）                          //内边距</span><br><span class="line">（如果盒子本身没有宽高值择不会撑开盒子）</span><br><span class="line">复合写法</span><br><span class="line">padding:<span class="number">5px</span>;                           //一个值时上下左右全部都加<span class="number">5</span>的内边距</span><br><span class="line"><span class="attribute">padding</span>:<span class="number">5px</span> <span class="number">15px</span>                         //上下<span class="number">5px</span>  左右<span class="number">15px</span></span><br><span class="line">padding: <span class="number">5px</span> <span class="number">15px</span> <span class="number">25px</span>                  //上<span class="number">5px</span>  左右<span class="number">15px</span> 下<span class="number">25px</span></span><br><span class="line">padding: <span class="number">5px</span> <span class="number">15px</span> <span class="number">25px</span> <span class="number">35px</span>              //上 <span class="number">5px</span> 右<span class="number">15px</span> 下<span class="number">25px</span> 左<span class="number">35px</span></span><br><span class="line">margin:   （简写和padding一样）                       //外边距</span><br><span class="line">margin：<span class="number">0</span>  auto;                                      //块元素水平居中</span><br></pre></td></tr></table></div></figure>        <h3 id="3-解决两个块元素的嵌套坍陷问题"   >          <a href="#3-解决两个块元素的嵌套坍陷问题" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-解决两个块元素的嵌套坍陷问题" class="headerlink" title="3. 解决两个块元素的嵌套坍陷问题"></a>3. 解决两个块元素的嵌套坍陷问题</h3>      <figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">会坍陷较大的外边距值解决方法如下</span><br><span class="line">可为父元素定义上边框</span><br><span class="line">可为父元素定义上内边距</span><br><span class="line">可为父元素添加overflow：hidden;</span><br></pre></td></tr></table></div></figure>        <h3 id="4-盒子的其他常用属性"   >          <a href="#4-盒子的其他常用属性" class="heading-link"><i class="fas fa-link"></i></a><a href="#4-盒子的其他常用属性" class="headerlink" title="4.  盒子的其他常用属性"></a>4.  盒子的其他常用属性</h3>      <figure class="highlight css"><div class="table-container"><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="attribute">border-radius</span>:                      //圆角边框正方形变圆设置<span class="number">50%</span>  圆角 矩形设置成高度一半</span><br><span class="line"></span><br><span class="line">box-shadow:                        //盒子阴影</span><br><span class="line">box-shadow: <span class="number">5px</span> <span class="number">5px</span> <span class="number">15px</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>);   好用的盒子阴影格式</span><br><span class="line"><span class="attribute">text-shadow</span>:                       //文字阴影（和盒子类似）</span><br><span class="line">h-shadod       必须      水平阴影位置</span><br><span class="line">v-shadow      必须       垂直阴影位置</span><br><span class="line">blou          可选       模糊距离                          //阴影不占空间位置</span><br><span class="line">spread        可选       阴影尺寸</span><br><span class="line">color         可选      阴影颜色</span><br><span class="line">inset         可选      内外阴影 默认外阴影（outset）</span><br></pre></td></tr></table></div></figure>        <h3 id="5-关于盒子模型"   >          <a href="#5-关于盒子模型" class="heading-link"><i class="fas fa-link"></i></a><a href="#5-关于盒子模型" class="headerlink" title="5.  关于盒子模型"></a>5.  关于盒子模型</h3>      <figure class="highlight css"><div class="table-container"><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">box-sizeing:content-box;       //标准盒子模型</span><br><span class="line">工作中，标准盒模型，需要自己计算，减去<span class="attribute">border</span>和<span class="attribute">padding</span></span><br><span class="line">box-sizeing: border-box;       //c3新增盒模型不用自己计算</span><br><span class="line"><span class="attribute">box-sizing</span> :border-box               // 盒子模型（不会应为边框和内边距改变width）</span><br><span class="line">filter：blur（<span class="number">5px</span>）；                          //图片模糊  里面数值越大越模糊</span><br><span class="line">width：calc（<span class="number">100%</span>-<span class="number">30px</span>）                     //计算盒子宽度</span><br></pre></td></tr></table></div></figure><hr>        <h2 id="浮动float"   >          <a href="#浮动float" class="heading-link"><i class="fas fa-link"></i></a><a href="#浮动float" class="headerlink" title="浮动float"></a>浮动float</h2>              <h3 id="1-浮动"   >          <a href="#1-浮动" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-浮动" class="headerlink" title="1. 浮动"></a>1. 浮动</h3>      <figure class="highlight css"><div class="table-container"><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><br><span class="line"><span class="attribute">float</span>:none; <span class="attribute">left</span> tight                     //浮动</span><br><span class="line">不浮动简称标准流</span><br><span class="line">浮动只会影响后面的标准流不会改变前面标准流</span><br><span class="line">当浮动父元素不方便加高度时但是盒子浮动又不占有位置最好父元素高度为<span class="number">0</span></span><br><span class="line">就会影响下面标准流盒子所以要清除浮动</span><br></pre></td></tr></table></div></figure>        <h3 id="2-清除浮动"   >          <a href="#2-清除浮动" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-清除浮动" class="headerlink" title="2.清除浮动"></a>2.清除浮动</h3>              <h4 id="1-使用带clear属性的空元素-额外标签法"   >          <a href="#1-使用带clear属性的空元素-额外标签法" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-使用带clear属性的空元素-额外标签法" class="headerlink" title="1. 使用带clear属性的空元素(额外标签法)"></a>1. 使用带clear属性的空元素(额外标签法)</h4>      <figure class="highlight css"><div class="table-container"><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><br><span class="line"><span class="attribute">clear</span>：both           //清除浮动影响</span><br><span class="line"></span><br><span class="line">&lt;<span class="selector-tag">div</span> class=&quot;<span class="attribute">clear</span>&quot;&gt;&lt;/<span class="selector-tag">div</span>&gt;</span><br><span class="line">    <span class="selector-class">.clear</span>&#123;</span><br><span class="line">        <span class="attribute">clear</span>:both;</span><br><span class="line">    &#125;</span><br><span class="line">优点：简单，代码少，浏览器兼容性好。</span><br><span class="line">缺点：不太适合语义化，代码不够优雅，后期不容易维护。</span><br></pre></td></tr></table></div></figure>        <h4 id="2-使用CSS的overflow-属性"   >          <a href="#2-使用CSS的overflow-属性" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-使用CSS的overflow-属性" class="headerlink" title="2. 使用CSS的overflow 属性"></a>2. 使用CSS的overflow 属性</h4>      <figure class="highlight css"><div class="table-container"><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="attribute">overflow</span>：（hidden auto scroll  都可以）</span><br><span class="line"> &lt;<span class="selector-tag">div</span> calss= box&gt;</span><br><span class="line"> &lt;<span class="selector-tag">p</span>&gt; <span class="number">1</span>  &lt;/<span class="selector-tag">p</span>&gt;</span><br><span class="line"> &lt;<span class="selector-tag">p</span>&gt; <span class="number">1</span>  &lt;/<span class="selector-tag">p</span>&gt;</span><br><span class="line"> &lt;/<span class="selector-tag">div</span>&gt;</span><br><span class="line"> </span><br><span class="line"> <span class="selector-class">.box</span>&#123;</span><br><span class="line"> <span class="attribute">overflow</span>:<span class="string">&#x27;hidden&#x27;</span>;</span><br><span class="line">&#125;</span><br><span class="line"> <span class="selector-tag">p</span>&#123;</span><br><span class="line">     <span class="attribute">float</span><span class="selector-pseudo">:left</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>        <h4 id="3-使用CSS的-after-伪元素"   >          <a href="#3-使用CSS的-after-伪元素" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-使用CSS的-after-伪元素" class="headerlink" title="3.使用CSS的::after 伪元素"></a>3.使用CSS的::after 伪元素</h4>      <figure class="highlight plaintext"><div class="table-container"><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">.clearfix给要清除浮动的盒子加上这个类名</span><br><span class="line">   .clearfix:after&#123;</span><br><span class="line">　　　　　　content:&quot;&quot;;//设置内容为空</span><br><span class="line">　　　　　　height:0;//高度为0</span><br><span class="line">　　　　　　line-height:0;//行高为0</span><br><span class="line">　　　　　　display:block;//将文本转为块级元素</span><br><span class="line">　　　　　　visibility:hidden;//将元素隐藏</span><br><span class="line">　　　　　　clear:both//清除浮动</span><br><span class="line">　　　　　&#125;</span><br><span class="line"></span><br><span class="line">　　　　.clearfix&#123;</span><br><span class="line">　　　　　　zoom:1;为了兼容IE</span><br><span class="line">　　　　&#125;                  </span><br></pre></td></tr></table></div></figure>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> css </category>
          
          <category> 学习笔记 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> background </tag>
            
            <tag> 前端 </tag>
            
            <tag> float </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>CSS第一天</title>
      <link href="/2023/08/20/CSS%E7%AC%AC%E4%B8%80%E5%A4%A9/"/>
      <url>/2023/08/20/CSS%E7%AC%AC%E4%B8%80%E5%A4%A9/</url>
      
        <content type="html"><![CDATA[<hr>        <h2 id="CSS类型"   >          <a href="#CSS类型" class="heading-link"><i class="fas fa-link"></i></a><a href="#CSS类型" class="headerlink" title="CSS类型"></a>CSS类型</h2>              <h3 id="1-内联样式-行内样式"   >          <a href="#1-内联样式-行内样式" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-内联样式-行内样式" class="headerlink" title="1.内联样式(行内样式)"></a>1.内联样式(行内样式)</h3>      <p>通过标签的 style 属性来设置元素的样式，语法格式为：</p><figure class="highlight css"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&lt;标签名 style=&quot;属性<span class="number">1</span>:属性值<span class="number">1</span>; 属性<span class="number">2</span>:属性值<span class="number">2</span>; ...&quot;&gt; 内容 &lt;/标签名&gt;</span><br></pre></td></tr></table></div></figure>        <h3 id="2-嵌入式（内部样式表"   >          <a href="#2-嵌入式（内部样式表" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-嵌入式（内部样式表" class="headerlink" title="2.嵌入式（内部样式表)"></a>2.嵌入式（内部样式表)</h3>      <p>将 CSS 代码集中写在 HTML 文档的 head 头部标签中，并且用 style 标签定义。语法格式为：</p><figure class="highlight html"><div class="table-container"><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">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">style</span> <span class="attr">type</span>=<span class="string">&quot;text/css&quot;</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">    选择器 &#123;属性<span class="number">1</span>:属性值<span class="number">1</span>; 属性<span class="number">2</span>:属性值<span class="number">2</span>; ...&#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">head</span>&gt;</span></span><br></pre></td></tr></table></div></figure>        <h3 id="3-外链式（外部样式表）"   >          <a href="#3-外链式（外部样式表）" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-外链式（外部样式表）" class="headerlink" title="3.外链式（外部样式表）"></a>3.外链式（外部样式表）</h3>      <p>将所有的样式放在一个或多个以 .CSS 为扩展名的外部样式表文件中，通过 link 标签将外部样式表文件链接到 HTML 文档中。语法格式为：</p><figure class="highlight css"><div class="table-container"><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">&lt;head&gt;</span><br><span class="line">  &lt;link href=&quot;CSS文件的路径&quot;  rel=&quot;stylesheet&quot; type=&quot;text/css&quot;/&gt;</span><br><span class="line">&lt;/head&gt;</span><br></pre></td></tr></table></div></figure><p>href 定义所链接外部样式表文件的 URL，可以是相对路径，也可以是绝对路径。rel 定义当前文档与被链接文档之间的关系，在这里需要指定为 “stylesheet”，表示被链接的文档是一个样式表文件。type&#x3D;”text&#x2F;css”通知浏览器要加载一个css文件。</p><p>注意:<strong>三种方法的优先级 内联式 &gt; 嵌入式 &gt; 外链式  但是“嵌入式 &gt; 外链式” 有一个前提：嵌入式 CSS 样式的位置一定在外链式后面。</strong></p><hr>        <h2 id="CSS常用的选择器"   >          <a href="#CSS常用的选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#CSS常用的选择器" class="headerlink" title="CSS常用的选择器"></a>CSS常用的选择器</h2>              <h3 id="1-元素选择器"   >          <a href="#1-元素选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-元素选择器" class="headerlink" title="1. 元素选择器"></a>1. 元素选择器</h3>      <p>语法 : 标签名{}</p><p>作用 : 选中对应标签中的内容</p><figure class="highlight css"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">p</span> &#123;&#125;                    <span class="selector-tag">div</span> &#123;&#125;                  <span class="selector-tag">h1</span> &#123;&#125;</span><br></pre></td></tr></table></div></figure>        <h3 id="2-类选择器-class选择器"   >          <a href="#2-类选择器-class选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-类选择器-class选择器" class="headerlink" title="2. 类选择器(class选择器)"></a>2. 类选择器(class选择器)</h3>      <p>语法 : .class属性值{}</p><p>作用 : 选中对应class属性值的元素</p><figure class="highlight html"><div class="table-container"><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">p</span> <span class="attr">id</span>=<span class="string">&quot;A&quot;</span>&gt;</span>段落1<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> <span class="attr">id</span>=<span class="string">&quot;B&quot;</span>&gt;</span>段落1<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> <span class="attr">id</span>=<span class="string">&quot;C&quot;</span>&gt;</span>段落1<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"></span><br><span class="line">.A&#123;&#125;    .B&#123;&#125;    .C&#123;&#125;</span><br></pre></td></tr></table></div></figure><p>注意:class里面的属性值不能以数字开头,如果以符号开头,只能是’_’或者’-‘这两个符号,其他的符号不可以,一个class里面可以有多个属性值</p>        <h3 id="3-id选择器"   >          <a href="#3-id选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-id选择器" class="headerlink" title="3. id选择器"></a>3. id选择器</h3>      <p>语法 : #id属性值{}</p><p>作用 : 选中对应id属性值的元素</p><p>例子 : <p id="A">段落1</p></p><figure class="highlight html"><div class="table-container"><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="tag">&lt;<span class="name">p</span> <span class="attr">id</span>=<span class="string">&quot;B&quot;</span>&gt;</span>段落1<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> <span class="attr">id</span>=<span class="string">&quot;C&quot;</span>&gt;</span>段落1<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"></span><br><span class="line">#A&#123;&#125; , #B&#123;&#125; , </span><br></pre></td></tr></table></div></figure><p>注意 : id的属性值只能给1个,可以重复利用,不能以数字开头</p>        <h3 id="4-通配符选择器"   >          <a href="#4-通配符选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#4-通配符选择器" class="headerlink" title="4. 通配符选择器"></a>4. 通配符选择器</h3>      <p>语法 : *{}</p><p>作用 : 让页面中所有的标签执行该样式,通常用来清除间距</p><figure class="highlight css"><div class="table-container"><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"> * &#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">&#125;</span><br></pre></td></tr></table></div></figure>        <h3 id="5-群组选择器"   >          <a href="#5-群组选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#5-群组选择器" class="headerlink" title="5. 群组选择器"></a>5. 群组选择器</h3>      <p>语法 : 选择器1,选择器2,选择器3…{}</p><p>作用 : 同时选中对应选择器的元素</p><figure class="highlight plaintext"><div class="table-container"><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">P,.A.#A,div&#123;</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>        <h3 id="6-关系选择器"   >          <a href="#6-关系选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#6-关系选择器" class="headerlink" title="6. 关系选择器"></a>6. 关系选择器</h3>              <h4 id="1-后代选择器"   >          <a href="#1-后代选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-后代选择器" class="headerlink" title="1.后代选择器"></a>1.后代选择器</h4>      <p>后代选择器也叫包含选择器，祖先元素直接或间接的包含后代元素</p><figure class="highlight css"><div class="table-container"><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> <span class="selector-tag">p</span>&#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">200px</span>;                --- 选择类名为box下面所有的<span class="selector-tag">p</span>标签</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">200px</span>;</span><br><span class="line">&#125; </span><br></pre></td></tr></table></div></figure>        <h4 id="2-子代选择器"   >          <a href="#2-子代选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-子代选择器" class="headerlink" title="2. 子代选择器 &gt;"></a>2. 子代选择器 &gt;</h4>      <p>父元素直接包含子元素,子元素直接被父元素包含</p><figure class="highlight css"><div class="table-container"><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">/*子选择器选中的是.box下所有的儿子p*/</span></span><br><span class="line"><span class="selector-class">.box</span>&gt;<span class="selector-tag">p</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">background-color</span>: yellow;</span><br><span class="line"> &#125; </span><br></pre></td></tr></table></div></figure>        <h4 id="3-相邻兄弟选择器"   >          <a href="#3-相邻兄弟选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-相邻兄弟选择器" class="headerlink" title="3.相邻兄弟选择器 +"></a>3.相邻兄弟选择器 +</h4>      <figure class="highlight css"><div class="table-container"><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">/* 相邻兄弟,会选择到box后面紧挨着的p, */</span></span><br><span class="line"> <span class="selector-class">.box</span>+<span class="selector-tag">p</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">background-color</span>: yellow;</span><br><span class="line"> &#125;</span><br></pre></td></tr></table></div></figure>        <h4 id="4-通用兄弟选择"   >          <a href="#4-通用兄弟选择" class="heading-link"><i class="fas fa-link"></i></a><a href="#4-通用兄弟选择" class="headerlink" title="4.通用兄弟选择 ~"></a>4.通用兄弟选择 ~</h4>      <figure class="highlight css"><div class="table-container"><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">/*通用兄弟选择器,会选择到.box后面所有的兄弟p*/</span></span><br><span class="line"><span class="selector-class">.box</span>~<span class="selector-tag">p</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">background-color</span>: yellow;</span><br><span class="line"> &#125;</span><br></pre></td></tr></table></div></figure>        <h3 id="7-伪类选择器"   >          <a href="#7-伪类选择器" class="heading-link"><i class="fas fa-link"></i></a><a href="#7-伪类选择器" class="headerlink" title="7. 伪类选择器"></a>7. 伪类选择器</h3>      <figure class="highlight plaintext"><div class="table-container"><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"> 表单伪类                   input ：focus    </span><br><span class="line">链接伪类选择器</span><br><span class="line">a:link           --- 选所有未被访问的链接</span><br><span class="line">a:visited       ---已被访问链接</span><br><span class="line">a:hover         ---鼠标再a之上的链接</span><br><span class="line">a:active        --- 鼠标按下未被弹起的链接 </span><br></pre></td></tr></table></div></figure><hr>        <h2 id="元素类型"   >          <a href="#元素类型" class="heading-link"><i class="fas fa-link"></i></a><a href="#元素类型" class="headerlink" title="元素类型"></a>元素类型</h2>      <p>元素分为三种类型元素分别为</p><figure class="highlight plaintext"><div class="table-container"><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><br><span class="line">行内元素                                 ---- 一行显示 不可改变宽高 宽高随字体大小</span><br><span class="line">行内块元素                                ---- 一行但可设置大小  input</span><br><span class="line">display：block；                    --- 转化为块元素 </span><br><span class="line">display：inline；                   --- 转化为行内元素</span><br><span class="line">display：inline-block；            ---- 转化为行内块元素</span><br></pre></td></tr></table></div></figure><hr>        <h2 id="字体样式font-与文本属性"   >          <a href="#字体样式font-与文本属性" class="heading-link"><i class="fas fa-link"></i></a><a href="#字体样式font-与文本属性" class="headerlink" title="字体样式font 与文本属性"></a>字体样式font 与文本属性</h2>              <h3 id="1-字体样式font"   >          <a href="#1-字体样式font" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-字体样式font" class="headerlink" title="1 字体样式font"></a>1 字体样式font</h3>      <figure class="highlight css"><div class="table-container"><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="attribute">font-family</span>                                      //字体类型</span><br><span class="line"><span class="attribute">font-size</span>                                        //字体大小</span><br><span class="line"><span class="attribute">font</span>-weigh                                       //文字粗细（<span class="number">700</span>变粗 <span class="number">400</span>不变）</span><br><span class="line"><span class="attribute">font-style</span>                                       //字体样式</span><br><span class="line"><span class="attribute">font</span>：样式 粗细 大小 /行高  类型                  //复合属性不可改变位置</span><br><span class="line">（大小以及类型不可省略否则无用）</span><br></pre></td></tr></table></div></figure>        <h3 id="2-文本属性"   >          <a href="#2-文本属性" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-文本属性" class="headerlink" title="2  文本属性"></a>2  文本属性</h3>      <figure class="highlight css"><div class="table-container"><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="attribute">color</span>                              //文本颜色</span><br><span class="line"><span class="attribute">text-align</span>                         //水平对齐方式</span><br><span class="line"><span class="attribute">text-decoration</span>                    //装饰文本（<span class="attribute">none</span> 取消装饰 underline 下划线）</span><br><span class="line"><span class="attribute">text-indent</span>                       //文本缩进（<span class="selector-tag">em</span> 一个文字的单位）</span><br><span class="line"><span class="attribute">line-height</span>                       //行间距</span><br><span class="line"><span class="attribute">line-height</span> 和行高（<span class="attribute">height</span>）相等实现文字垂直居中    //单排文字(小于的偏上大于偏下)</span><br></pre></td></tr></table></div></figure>        <h3 id="3-行高的继承以及计算"   >          <a href="#3-行高的继承以及计算" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-行高的继承以及计算" class="headerlink" title="3 行高的继承以及计算"></a>3 行高的继承以及计算</h3>      <figure class="highlight plaintext"><div class="table-container"><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">css有三个非常重要的特性 : 层叠性  继承性 优先级</span><br><span class="line"></span><br><span class="line">行高可以跟单位也可以不跟单位</span><br><span class="line"></span><br><span class="line">如果子元素没有设置行高则会寻找父级的行高进行继承</span><br><span class="line"></span><br><span class="line">body行高1.5 这样的写法就是里面子元素可以根据文字大小自动调整行高</span><br></pre></td></tr></table></div></figure>        <h3 id="4-行间距计算方式"   >          <a href="#4-行间距计算方式" class="heading-link"><i class="fas fa-link"></i></a><a href="#4-行间距计算方式" class="headerlink" title="4 行间距计算方式"></a>4 行间距计算方式</h3>      <p>        <img   class="lazyload lazyload-gif"          src="/images/loading.svg" data-src="/../images/image-20230817145338781.png"  alt="image-20230817145338781">      </p>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> css </category>
          
          <category> 学习笔记 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> 知识分享 </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>HTML</title>
      <link href="/2023/08/17/HTML/"/>
      <url>/2023/08/17/HTML/</url>
      
        <content type="html"><![CDATA[<hr>        <h2 id="常用的HTML标签"   >          <a href="#常用的HTML标签" class="heading-link"><i class="fas fa-link"></i></a><a href="#常用的HTML标签" class="headerlink" title="常用的HTML标签"></a>常用的HTML标签</h2>      <figure class="highlight html"><div class="table-container"><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="tag">&lt;<span class="name">h</span>&gt;</span><span class="tag">&lt;/<span class="name">h</span>&gt;</span>                                     //标题标签只有h1到h6</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">br</span>/&gt;</span>                                       //换行标签</span><br><span class="line"><span class="tag">&lt;<span class="name">texeaera</span>&gt;</span>                                  //文本域</span><br><span class="line"><span class="tag">&lt;<span class="name">strong</span>&gt;</span><span class="tag">&lt;/<span class="name">strong</span>&gt;</span>    *</span><br><span class="line"><span class="tag">&lt;<span class="name">b</span>&gt;</span><span class="tag">&lt;/<span class="name">b</span>&gt;</span>                                    //加粗</span><br><span class="line"><span class="tag">&lt;<span class="name">em</span>&gt;</span><span class="tag">&lt;/<span class="name">em</span>&gt;</span>  </span><br><span class="line"><span class="tag">&lt;<span class="name">i</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">del</span>&gt;</span><span class="tag">&lt;/<span class="name">del</span>&gt;</span> *</span><br><span class="line"><span class="tag">&lt;<span class="name">s</span>&gt;</span><span class="tag">&lt;/<span class="name">s</span>&gt;</span>                                    //删除线</span><br><span class="line"><span class="tag">&lt;<span class="name">ins</span>&gt;</span><span class="tag">&lt;/<span class="name">ins</span>&gt;</span> *</span><br><span class="line"><span class="tag">&lt;<span class="name">u</span>&gt;</span><span class="tag">&lt;/<span class="name">u</span>&gt;</span>                                    //下划线</span><br><span class="line"><span class="tag">&lt;<span class="name">div</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">span</span>&gt;</span><span class="tag">&lt;/<span class="name">span</span>&gt;</span>   (不独占一行）                //无语意，盒子</span><br></pre></td></tr></table></div></figure>        <h2 id="img标签与a标签"   >          <a href="#img标签与a标签" class="heading-link"><i class="fas fa-link"></i></a><a href="#img标签与a标签" class="headerlink" title="img标签与a标签"></a>img标签与a标签</h2>      <p>我们学习img标签时难免会使用到路径的相关知识路径分为相对路径和绝对路径</p><p>相对路径是指以当前的文件作为起点，相较于当前目录的位置而被指向并且加以引用的文件资源</p><p>绝对路径是指目录下的绝对位置，直接到达目标位置，通常是从盘符开始的路径</p><p>“.&#x2F;”：表示当前的文件所在的目录。</p><p>“..&#x2F;”：表示当前的文件所在的上一层的目录。</p><p>“&#x2F;”：表示当前的文件所在的根目录。</p>        <h3 id="图片标签"   >          <a href="#图片标签" class="heading-link"><i class="fas fa-link"></i></a><a href="#图片标签" class="headerlink" title="图片标签"></a><strong>图片标签</strong></h3>      <figure class="highlight html"><div class="table-container"><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">img</span> <span class="attr">src</span>=<span class="string">&quot;图像地址&quot;</span>/&gt;</span>  </span><br><span class="line"></span><br><span class="line">src                  -----属性是必须的否则无法显示图片</span><br><span class="line">alt                 ------无法显示图片时显示文字</span><br><span class="line">title               ------鼠标放在图片上显示文字</span><br><span class="line"></span><br></pre></td></tr></table></div></figure>        <h3 id="超链接标签"   >          <a href="#超链接标签" class="heading-link"><i class="fas fa-link"></i></a><a href="#超链接标签" class="headerlink" title="超链接标签"></a><strong>超链接标签</strong></h3>      <figure class="highlight html"><div class="table-container"><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">a</span> <span class="attr">href</span>=<span class="string">&#x27;地址&#x27;</span>&gt;</span><span class="tag">&lt;/<span class="name">a</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>    <span class="attr">target</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">_self                           ---默认弹窗   弹窗方式有两种</span><br><span class="line">_blany                         ---新窗口打开</span><br><span class="line"></span><br><span class="line">在链接文本的href属性中，设置属性值为#名字的形式</span><br><span class="line">如&lt; a href=&quot;#two&quot;&gt;第2集&lt; /a&gt;               /锚点链接</span><br><span class="line">找到目标位置标签，里面添加一个id属性=刚才的名字，如: &lt; h3 id=“two”&gt;第2集介绍&lt; /h3&gt;</span><br></pre></td></tr></table></div></figure>        <h2 id="table标签"   >          <a href="#table标签" class="heading-link"><i class="fas fa-link"></i></a><a href="#table标签" class="headerlink" title="table标签"></a>table标签</h2>      <figure class="highlight html"><div class="table-container"><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="tag">&lt;<span class="name">table</span>&gt;</span><span class="tag">&lt;/<span class="name">table</span>&gt;</span>                                       //定义表格标签</span><br><span class="line">属性一    align       （left   center  right ）       //对齐方式</span><br><span class="line">属性二    border                                      //规定表格边框无则表示没有边框</span><br><span class="line">属性三    cellpadding                                  //单元格与内容之间的空白</span><br><span class="line">属性四    cellspacing                                 //规定单元格和单元格之间空白默认为2</span><br><span class="line">属性五    width                                      //表格宽度</span><br><span class="line"><span class="tag">&lt;<span class="name">tr</span>&gt;</span><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">td</span>&gt;</span>                                            //单元格</span><br><span class="line"><span class="tag">&lt;<span class="name">th</span>&gt;</span><span class="tag">&lt;/<span class="name">th</span>&gt;</span>                                            //一般表式表头（会加粗居中）</span><br><span class="line">caption                                              //表格大标题(写在table里面)</span><br><span class="line">合并单元格</span><br><span class="line">跨行    rowspan =&#x27;数量‘写在最上单元格删除多余单元格</span><br><span class="line">跨列    colspan=“数量”写在最左单元格删除多余单元格</span><br><span class="line"><span class="tag">&lt;<span class="name">thead</span>&gt;</span><span class="tag">&lt;/<span class="name">thead</span>&gt;</span>                                                //表格头部区域</span><br><span class="line"><span class="tag">&lt;<span class="name">tbody</span>&gt;</span><span class="tag">&lt;/<span class="name">tbody</span>&gt;</span>                                                //表格主体</span><br></pre></td></tr></table></div></figure>        <h2 id="有序列表和无序列表"   >          <a href="#有序列表和无序列表" class="heading-link"><i class="fas fa-link"></i></a><a href="#有序列表和无序列表" class="headerlink" title="有序列表和无序列表"></a>有序列表和无序列表</h2>      <figure class="highlight html"><div class="table-container"><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><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">ul</span>&gt;</span></span><br><span class="line"></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">ol</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">dl</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">dt</span>&gt;</span><span class="tag">&lt;/<span class="name">dt</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">dd</span>&gt;</span><span class="tag">&lt;/<span class="name">dd</span>&gt;</span>                                  //自定义列表</span><br><span class="line"><span class="tag">&lt;/<span class="name">dl</span>&gt;</span></span><br></pre></td></tr></table></div></figure>        <h2 id="表单input"   >          <a href="#表单input" class="heading-link"><i class="fas fa-link"></i></a><a href="#表单input" class="headerlink" title="表单input"></a>表单input</h2>      <figure class="highlight html"><div class="table-container"><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">form</span> <span class="attr">action</span>=<span class="string">&quot; 地址&quot;</span> <span class="attr">method</span>=<span class="string">&quot;提交方式&quot;</span> <span class="attr">name</span>=<span class="string">&quot;表单域名称&quot;</span>&gt;</span>  <span class="tag">&lt;/<span class="name">form</span>&gt;</span>               --表单域用于提交表单</span><br><span class="line">  会把范围内的表单元素提交给服务器</span><br><span class="line">   action    用于接收并处理提交表单数据服务器程序地址</span><br><span class="line">   menthod    get和post两种数据提交方式</span><br><span class="line">   neme       表单名称区分表单域</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">input</span>   <span class="attr">type</span>=<span class="string">“text”</span>&gt;</span>                  //  输入文字</span><br><span class="line"><span class="tag">&lt;<span class="name">input</span>  <span class="attr">type</span> =<span class="string">&#x27;&#x27;</span><span class="attr">password</span>&quot;&gt;</span>            //密码框</span><br><span class="line"><span class="tag">&lt;<span class="name">input</span>   <span class="attr">type</span>=<span class="string">&quot;radio&quot;</span>&gt;</span>                // 单选按钮（圆）用lable标签包含可以增加用户体验</span><br><span class="line">（给单选按钮加一个相同的name就可以实现单选 否则无法使用 checked 可默认选中）</span><br><span class="line"><span class="tag">&lt;<span class="name">label</span> <span class="attr">for</span>=<span class="string">&quot;one&quot;</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">id</span>=<span class="string">&quot;one&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">label</span>&gt;</span>  </span><br><span class="line">id与for相同则点击lable里面内容就可以选中 </span><br><span class="line"><span class="tag">&lt;<span class="name">input</span>   <span class="attr">type</span>=<span class="string">“submit”</span>&gt;</span>                   // 提交表单按钮</span><br><span class="line"><span class="tag">&lt;<span class="name">input</span>   <span class="attr">type</span>=<span class="string">“reset”</span>&gt;</span>                     //清除按钮</span><br><span class="line"><span class="tag">&lt;<span class="name">input</span>   <span class="attr">type</span>=<span class="string">“button”</span>&gt;</span>                   // 普通按钮</span><br><span class="line"><span class="tag">&lt;<span class="name">input</span>   <span class="attr">type</span>=<span class="string">“file”</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">option</span> <span class="attr">value</span>=<span class="string">&quot;内容&quot;</span>&gt;</span>内容<span class="tag">&lt;/<span class="name">option</span>&gt;</span>      //下拉表单(selected=&quot;selected&quot; 可默认选中)</span><br><span class="line"><span class="tag">&lt;/<span class="name">select</span>&gt;</span></span><br></pre></td></tr></table></div></figure>        <h2 id="H5新增语义化标签"   >          <a href="#H5新增语义化标签" class="heading-link"><i class="fas fa-link"></i></a><a href="#H5新增语义化标签" class="headerlink" title="H5新增语义化标签"></a>H5新增语义化标签</h2>      <figure class="highlight html"><div class="table-container"><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><br><span class="line"><span class="tag">&lt;<span class="name">header</span>&gt;</span>                                      //头部标签</span><br><span class="line"><span class="tag">&lt;<span class="name">nav</span>&gt;</span>                                        //导航标签</span><br><span class="line"><span class="tag">&lt;<span class="name">article</span>&gt;</span>                                     //内容标签</span><br><span class="line"><span class="tag">&lt;<span class="name">section</span>&gt;</span>                                      //定义文档某区域</span><br><span class="line"><span class="tag">&lt;<span class="name">aside</span>&gt;</span>                                         //侧边栏标签</span><br><span class="line"><span class="tag">&lt;<span class="name">footer</span>&gt;</span>                                         //尾部标签</span><br><span class="line"></span><br><span class="line">视频和音频标签</span><br><span class="line"><span class="tag">&lt;<span class="name">video</span> <span class="attr">src</span>=<span class="string">&#x27;文件位置&#x27;</span>&gt;</span> <span class="tag">&lt;/<span class="name">video</span>&gt;</span>（尽量mp4格式）                //视频标签</span><br><span class="line">属性</span><br><span class="line">autoplay ：autoplay                 自动播放</span><br><span class="line">muted：muted                        静音播放</span><br><span class="line">controls：controls                  展示播放控件</span><br><span class="line">loop：loop                          播放完循环播放</span><br><span class="line">poster ：图片位置                    加载等待图片</span><br><span class="line"><span class="tag">&lt;<span class="name">audio</span> <span class="attr">src</span> =<span class="string">&#x27;文件位置&#x27;</span>&gt;</span><span class="tag">&lt;/<span class="name">audio</span>&gt;</span>（尽量mp3格式）                 //音乐标签</span><br><span class="line">autoplay ：autoplay               自动播放部分浏览器不支持</span><br><span class="line">controls：controls                展示播放控件</span><br><span class="line">loop：loop                        播放完循环播放</span><br><span class="line">canvas                      //画布  (使用API展现客户端javascript可实现很多强大功能)</span><br></pre></td></tr></table></div></figure><hr>        <h2 id="HTML中特殊字符"   >          <a href="#HTML中特殊字符" class="heading-link"><i class="fas fa-link"></i></a><a href="#HTML中特殊字符" class="headerlink" title="HTML中特殊字符"></a>HTML中特殊字符</h2>      <div class="table-container"><table><thead><tr><th align="center">HTML 原代码</th><th align="center">显示结果</th><th>描述</th></tr></thead><tbody><tr><td align="center">&amp;lt;</td><td align="center">&lt;</td><td>小于号或显示标记</td></tr><tr><td align="center">&amp;gt;</td><td align="center">&gt;</td><td>大于号或显示标记</td></tr><tr><td align="center">&amp;amp;</td><td align="center">&amp;</td><td>可用于显示其它特殊字符</td></tr><tr><td align="center">&amp;quot;</td><td align="center">“</td><td>引号</td></tr><tr><td align="center">&amp;reg;</td><td align="center">®</td><td>已注册</td></tr><tr><td align="center">&amp;copy;</td><td align="center">©</td><td>版权</td></tr><tr><td align="center">&amp;trade;</td><td align="center">™</td><td>商标</td></tr><tr><td align="center">&amp;ensp;</td><td align="center"></td><td>半个空白位</td></tr><tr><td align="center">&amp;emsp;</td><td align="center"></td><td>一个空白位</td></tr><tr><td align="center">&amp;nbsp;</td><td align="center"></td><td>不断行的空白</td></tr></tbody></table></div>]]></content>
      
      
      <categories>
          
          <category> 前端 </category>
          
          <category> HTML </category>
          
          <category> 学习笔记 </category>
          
      </categories>
      
      
        <tags>
            
            <tag> 前端 </tag>
            
            <tag> 知识分享 </tag>
            
        </tags>
      
    </entry>
    
    
    
    <entry>
      <title>使用方法介绍笔记</title>
      <link href="/2023/08/16/%E6%96%B9%E6%B3%95%E4%BB%8B%E7%BB%8D%E7%AC%94%E8%AE%B0/"/>
      <url>/2023/08/16/%E6%96%B9%E6%B3%95%E4%BB%8B%E7%BB%8D%E7%AC%94%E8%AE%B0/</url>
      
        <content type="html"><![CDATA[        <h2 id="这个是介绍这个博客编写的方法使用"   >          <a href="#这个是介绍这个博客编写的方法使用" class="heading-link"><i class="fas fa-link"></i></a><a href="#这个是介绍这个博客编写的方法使用" class="headerlink" title="这个是介绍这个博客编写的方法使用"></a>这个是介绍这个博客编写的方法使用</h2>      <figure class="highlight css"><div class="table-container"><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">title:                                   --- 指的是文章标题</span><br><span class="line">comments: false                          ---是否开启评论        </span><br><span class="line">data: <span class="number">2023</span>-<span class="number">8</span>-<span class="number">15</span> <span class="number">22</span>:<span class="number">54</span>:<span class="number">49</span>                  --- 文件建立日期           </span><br><span class="line">excerpt:                                  --- 文章摘要</span><br><span class="line">updated                                 -- - 文件更新日期</span><br><span class="line">top                                    --- 文章是否置顶 </span><br><span class="line">categories                             ---- 文章分类</span><br><span class="line">tags:                                  ---------标签</span><br><span class="line">  - PlayStation</span><br><span class="line">  - Games</span><br><span class="line">  - [Diary, Life]</span><br><span class="line">  top: true                            --置顶文章(hexo-generator-index-pin-top --save  插件)</span><br><span class="line"></span><br><span class="line">  photos:</span><br><span class="line">  - ../images/image-<span class="number">20230819170627062</span>.png     //设置封面(顶部)图片</span><br><span class="line">  安装部署插件hexo-deployer-git --save</span><br><span class="line">  hexo clean</span><br><span class="line">  hexo g</span><br><span class="line">  hexo d</span><br><span class="line">  hexo deploy</span><br></pre></td></tr></table></div></figure>]]></content>
      
      
      <categories>
          
          <category> 使用方法 </category>
          
      </categories>
      
      
    </entry>
    
    
  
  
</search>
