JS — 03 样式操作与属性操作2

通过classList代替className操作名字

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="keywords" content="">
    <meta name="description" content="">
    <title></title>
    <style>
        .nav{
            width: 400px;
            height: 400px;
            background-color: pink;
        }
        .red{
            color: red;
        }
        .bold{
            font-size: 50px;
            font-weight: bold;
        }
        /*toggle小案例的CSS样式*/
        .box{
            width: 200px;
            height: 100px;
            margin: 50px 20px;
            background-color: pink;
            color: #fff;
            font-size: 30px;
            transition: 0.5s linear height;
        }
        .container{
            height: 400px;
        }
    </style>
</head>
<body>
    <div id="wrap" class="nav">红色放大加粗</div>
    <div id="content" class="box">toggle案例</div>
    <script>
        /***************************************************************/
        //修改class名
        let wrap = document.getElementById("wrap");
        //通过className修改 => 可以修改,但是比较生硬,不推荐使用
        //wrap.className += " red bold";

        //通过classList代替className操作名字
        wrap.classList.add("red","bold");//添加类名,多个类名用逗号隔开.
        wrap.classList.remove("nav");//删除类名.
        wrap.classList.toggle("red");//有这个类名则删除,没有则添加. => 杠精操作

        //toggle小案例 => 用于在两种状态中切换
        let box = document.getElementById("content");//通过ID获取元素
        box.onclick = function(){
            box.classList.toggle("container");
        };
    </script>
</body>
</html>

在这里插入图片描述
案例效果图:
在这里插入图片描述
在这里插入图片描述

获取元素的方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="keywords" content="">
    <meta name="description" content="">
    <title></title>
</head>
<body>
    <div id="nav">
        <p>p1</p>
    </div>
    <div class="gd">11</div>
    <div class="gd">22</div>
    <div class="gd">33</div>
    <p>p2</p>
    <input type="text" name="username">
    <script>
        /*
        *   获取元素的方法
        *       document.getElementById("id名");
        *       document.getElementsByClassName("class名");
        *       document.getElementsByTagName("标签名");
        *       document.getElementsByName("name属性");
        *       document.querySelector("选择器"); => 获取选择器选择的对应的第一个元素
        *       document.querySelectorAll("选择器"); => 获取选择器选择的对应的所有元素
        * */

        //通过ID获取元素
        let nav = document.getElementById("nav");
        console.log( nav );
        nav.id = "wrap";//修改ID名

        //通过className获取元素
        let gd = document.getElementsByClassName("gd");//获取到的是标签集合 => HTMLCollection (类数组)
        console.log( gd );
        //通过 变量名[] 来操作元素属性,因为getElementsByClassName获取元素的方法获取的是标签集合,必须用下标来找到对应元素进行别的属性的添加
        gd[0].id = "box";
        gd[1].title = "我是第二gd";

        //通过标签获取元素
        let tag = document.getElementsByTagName("div");//获取到的是标签集合 => HTMLCollection (类数组),操作方法和上述相同
        console.log( tag );

        //通过name获取元素
        let input = document.getElementsByName("username");//获取到的是节点列表 => NodeList (类数组),操作方法和上述相同
        console.log( input );

        //只想获取#nav里面的p标签
        //方法一 => 从某个节点开始获取某个元素
        let d = document.getElementById("wrap");//上面已经把id名修改为了wrap,原本的id名被覆盖
        let p1 = d.getElementsByTagName("p");
        let p2 = document.getElementById("wrap").getElementsByTagName("p");//链式操作,先获取wrap节点,在通过wrap获取p标签
        console.log( p1 );

        //方法二
        let p3 = document.querySelector( "#wrap p" );//获取单个节点 => 获取选择器选择的对应的第一个元素
        console.log( p3 );

        //方法三
        let p4 = document.querySelectorAll( "#wrap p" );//获取多个节点 => 获取选择器选择的对应的所有元素 => NodeList(节点列表) => 用变量名[下标]分别获取对应的元素
        console.log( p4 );
    </script>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

操作元素的样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="keywords" content="">
    <meta name="description" content="">
    <title></title>
    <style>
        #nav{
            width: 100px;
            height: 100px;
            background-color: pink;
        }
    </style>
</head>
<body>
    <div id="nav"></div>
    <script>
        //操作元素的样式
        let oNav = document.getElementById("nav");
        document.onclick = function(){//点击页面时,#nav的背景色为红色
            console.log( oNav.id );//打印结果 => nav => 数据类型:String
            console.log( oNav.className );//打印结果 => 空字符串
            console.log( oNav.style );//打印结果 => CSSStyleDeclaration => Object => 存储的是行内样式的对象集合,不是这个元素的所有样式
            oNav.style = "background-color:red;";//不合理的写法 => 类型不一致
            oNav.style.width = "200px";
            oNav.style.backgroundColor = "#58a";
            oNav.style.cssText += "height:200px;transition:0.5s linear height;";
            //优先使用修改classList去给元素添加样式(最简单的方法)
        };
    </script>
</body>
</html>

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值