js操作内联属性和获取当前属性

dom修改内联样式
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>内联样式</title>
    <style>
        #box1 {
            width: 200px;
            height: 200px;
            background-color: red;
        }
    </style>

    <script>
        window.onload = function () {
            /**
             * 点击按钮修改box的大小
             */
            //获取box1
            let box1 = document.getElementById("box1");
            //为按钮绑定单击响应函数
            let btn01 = document.getElementById("btn01");
            btn01.onclick = function () {
              //修改box1宽高度
                /**
                 * 通过js修改元素样式:
                 * 语法:元素.style.样式名=样式值;
                 * 如果css属性名中含有-符号,在js中是不合法的
                 * 会认为是减号,采用驼峰命名法,去掉-符号将-号后边单词首字母大写
                 * 通过该方式修改的是内联样式,内联样式有较高的优先级,
                 * 所以通过js修改内联样式会立刻执行
                 * 如果css中样式中写了!important,该样式有最高优先级,即使通过js也无法修改。
                 * css中尽量少使用
                 * 通过style属性读取和设置的都是内联样式
                  */
                box1.style.width = "50px";
                box1.style.height = "50px";
                //修改背景颜色
                box1.style.backgroundColor = "skyblue";

            };
        };
    </script>

</head>
<body>
<div>
    <button id="btn01">点我一下</button>
</div>
<div id="box1">
</div>
</body>
</html>
dom获取元素当前样式
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>获取元素样式</title>
    <style>
        #box1 {
            width: 200px;
            height: 200px;
            background-color: red;
        }
    </style>

    <script>
        window.onload = function () {
            /**
             * 点击按钮修改box的大小
             */
                //获取box1
            var box1 = document.getElementById("box1");
            //为按钮绑定单击响应函数
            var btn01 = document.getElementById("btn01");
            btn01.onclick = function () {
                /**
                 * currentStyle属性
                 * 获取元素当前样式
                 * 语法: 元素.currentStyle.样式名
                 * 他可以读取当前元素正在显示的样式,(不是内联也不是样式表的)
                 *只有ie支持,可惜
                 */
                //let width1= box1.currentStyle.width;
                /**
                 * 其他浏览器中可以使用
                 *      getComputedStyle()这个方法来获取当前样式
                 *      参数:
                 *      1.第一个参数要获取的元素
                 *      2.第二个,可以传递一个伪元素,一般都传null
                 *      该方法返回了一个对象,对象封装了当前元素对应的属性
                 *      对象.样式名
                 *      如果获取的样式没有设置,则会获取真实值,而不是默认值
                 *      比如css和内联样式都没设置width ,currentStyle会获取auto(自动)
                 *      而这个getComputedStyle会获取实际的px
                 *      这个方法是window的方法
                 *      ie8及以下不支持。
                 */
                //let obj = getComputedStyle(box1,null);
                //console(obj.width);
                /**
                 * 这两个方法读取样式都是都是只读,不能修改
                 * 如果想要修改还是要使用style属性
                 * 兼容ie8和其他浏览器同时可以使用的函数
                 * 参数:
                 *      obj 要获取样式元素
                 *      name 要获取的样式名
                 *
                 */
                var w = getStyle(box1, "width");
                alert(w);

                function getStyle(obj, name) {
                    /**
                     * 对象.属性和对象[属性]的区别
                     * .一般作为静态存取属性使用,[]一般作为动态存取属性时使用
                     * [name],name可以是字符串变量,它会直接去name变量中寻找属性
                     * .name,只会静态的查找叫name的属性
                     */
                    if (window.getComputedStyle) {
                        /*如果只写getComputedStyle,会先在函数内找这个变量,没有就去全局找
                        * 这个变量,而window是一个对象,
                        * 添加对象,getComputedStyle就变成一个属性了
                        */
                        //正常浏览器的方式,具有getComputedStyle()方法
                        return getComputedStyle(obj, null)[name];
                    } else {
                        //ie8的方式,有currentStyle属性
                        return obj.currentStyle[name];
                    }
                    // return window.getComputedStyle?getComputedStyle(obj,null)[name]:obj.currentStyle[name];
                }

            };
        };
    </script>

</head>
<body>
<div>
    <button id="btn01">点我一下</button>
</div>
<div id="box1" style="width: 200px">
</div>
</body>
</html>

注意点:

1.ie9及以下支持es6语法,let不能用

2.getComputedStyle()是方法,currentStyle是属性,都只能读,不能改。要改就只能.style.属性修改.

3.对象[name]和对象.name区别,加[]name可以是变量名,里边是字符串,传参要加引号“name”,.name就是一个固定属性

4.就算是window对象属性,放在if判断时也不能省略window,否则会当成变量,其他对象也是。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值