样式操作之className和classList的差异

486 阅读1分钟

webapi中通过className更改元素样式

  • 在style标签中重新定义一个新的样式
  • 在js中直接引用:获取的元素.className=’’;
  <style>
    .box{
      width: 100px;
      height: 100px;
      background-color: pink;
    }
    .size{
      font-size: 30px;
    }
  </style>
<body>
  <div class="box">123</div>
</body>
<script>
 const box= document.querySelector('.box') //获取dom元素
 box.onclick=function(){
   this.className='size'
 }
</script>

特点

  1. 如果样式修改较多,可以采取操作类名方式更改元素样式。
  2. class因为是个保留字,因此使用className来操作元素类名属性
  3. className 会直接更改元素的类名,会覆盖原先的类名

缺点:

在操作类名时,需要通过className属性添加,删除和替换类名。因为className中是一个字符串,所以即使只修改字符串一部分,也必须每次都设置整个字符串的值。

webapi中通过ClassList更改元素样式

这个方法可以专门用于删除或者添加,替换class属性。

 <script>
      let btn1 = document.querySelector('button')
      let btn2 = document.querySelector('.btn2')
      let btn3 = document.querySelector('.btn3')
      let btn4 = document.querySelector('.btn4')
      let p = document.querySelector('p')
​
      btn1.onclick = function () {
        p.classList.add('size50', 'underline')
      }
      btn2.onclick = function () {
        p.classList.remove('underline')
      }
      btn3.onclick = function () {
        p.classList.toggle('underline')
      }
      btn4.onclick = function () {
        let x = p.classList.contains('underline')
        console.log(x);
      }
    </script>

ClassList包含以下属性和方法:

  • element.classList.add() 增加类
  • element.classList.remove() 删除类
  • element.classList.toggle() 切换类 (有就删除,没就添加)
  • element.classList.contains() 判断是否包含某个类,返回true/false

特点:

  • classList不会覆盖类名,在原有的类名上添加上另一个类名

\