js操作样式类——JS

通过JS修改CSS的常用方法是:对象.style.属性 = “属性值”
如:

         box.style.width = "200px";
            box.style.height = "200px";
            box.style.backgroundColor ="red";

这样做的缺点:
通过style属性来修改元素的样式,每修改一个样式,浏览器就需要重新渲染一次页面这样的执行的性能是比较差的,而且这种形式当我们要修改多个样式时,也不太方便。
所以可以直接修改box的class属性,从而间接地修改样式
优点:修改一次就可以修改多个样式
eg:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <style>
        
        .b1{
            width: 100px;
            height: 100px;
            background-color: tomato;
        }
        .b2{
            width: 200px;
            height: 200px;
            background-color: red;
        }
    </style>
    <script>
        window.onload =function(){
            var box = document.getElementById("box");
            var btn1 = document.getElementById("btn1");
           btn1.onclick = function(){

            /*
            通过style属性来修改元素的样式,每修改一个样式,浏览器就需要重新渲染一次页面这样的执行的性能是比较差的,而且这种形式当我们要修改多个样式时,也不太方便
            */
            // box.style.width = "200px";
            // box.style.height = "200px";
            // box.style.backgroundColor ="red";

            /* 所以可以直接修改box的class属性,从而间接地修改样式
            优点:修改一次就可以修改多个样式
            */
            box.className += " b2";
            }


        }
    </script>

</head>
<body>
    <button id = "btn1">点击按钮修改box</button>
    <br>
    <br>

    <div id="box" class="b1"></div>
</body>
</html>

封装成函数:

<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="UTF-8" />
    <style>
      .b1 {
        width: 100px;
        height: 100px;
        background-color: tomato;
      }
      .b2 {
        width: 200px;
        height: 200px;
        background-color: red;
      }
    </style>
    <script>
      window.onload = function () {
        var box = document.getElementById("box");
        var btn1 = document.getElementById("btn1");
        var btn2 = document.getElementById("btn2");
        var btn3 = document.getElementById("btn3");
        btn1.onclick = function () {
          addClass(box, "b2");
        };
        btn2.onclick = function () {
          deleteClass(box, "b2");
        };
        btn3.onclick = function () {
          toggleClass(box, "b2");
        };
      };
      function addClass(obj, cn) {
        //   没有改属性才添加
        if (!hasClass(box, "b2")) {
          obj.className += " " + cn;
        }
      }
      function deleteClass(obj, cn) {
        //创建正则表达式进行查找删除
        var reg = new RegExp("\\b" + cn + "\\b");
        obj.className = obj.className.replace(reg, "");
      }

      /*
      toggleclass可以用来切换一个类
      如果元素中具有该类,则删除
      如果元素中没有该类,则添加*/
      function toggleClass(obj, cn) {
        if (hasClass(obj, cn)) {
          deleteClass(obj, cn);
        } else {
          addClass(obj, cn);
        }
      }

      // 判断一个元素中是否含有指定的class属性值
      // 如果有该class,则返回true,没有则返回falsel
      function hasClass(obj, cn) {
        // 使用正则表达式判断
        // var reg=/\bb2\b/;
        // 使用new可以传递变量
        var reg = new RegExp("\\b" + cn + "\\b");
        return reg.test(obj.className);
      }
    </script>
  </head>
  <body>
    <button id="btn1">点击按钮添加b2</button>
    <br />
    <br />
    <button id="btn2">点击按钮删除b2</button>
    <br />
    <br />
    <button id="btn3">点击切换类</button>
    <br />
    <br />

    <div id="box" class="b1"></div>
  </body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值