欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

dom.style.prop脚本化CSS:读写元素css属性, 可读写行间样式,没有兼容性问题。 window.getComputedStyle(ele,null)。

程序员文章站 2022-07-04 21:34:26
...

 

脚本化CSS
    读写元素css属性:

        可读写行间样式,没有兼容性问题;
        注意碰到float这样的保留字属性,前面应加css,当然了不加css也是可以改变属性的,不过最好还是加上;
        注意组合单词需要变成小驼峰式写法:
            组合单词:background-color 变成小驼峰式:backgroundColor
        复合属性必须拆解(不拆解浏览器也是可以识别的,不过为了排除兼容性的问题,还是拆解比较好):
        写入的值必须是字符串格式;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div style="float: right"></div>
</body>
<script>
    /*
    脚本化CSS
        读写元素css属性:
            可读写行间样式,没有兼容性问题;
            注意碰到float这样的保留字属性,前面应加css,当然了不加css也是可以改变属性的,不过最好还是加上;
            注意组合单词需要变成小驼峰式写法:
                组合单词:background-color 变成小驼峰式:backgroundColor
            复合属性必须拆解(不拆解浏览器也是可以识别的,不过为了排除兼容性的问题,还是拆解比较好):
            写入的值必须是字符串格式;
     */
    const div = document.getElementsByTagName('div')[0];
    div.style.width = '200px';
    div.style.height = '200px';
    //注意碰到float这样的保留字属性,前面应加css,当然了不加css也是可以改变属性的,不过最好还是加上;
    div.style.cssFloat = 'right';
    //注意组合单词需要变成小驼峰式写法
    div.style.backgroundColor = 'red';
    //复合属性必须拆解(不拆解浏览器也是可以识别的,不过为了排除兼容性的问题,还是拆解比较好)
    div.style.border = '10px solid blue';//没有拆解
    div.style.borderWidth = '20px';//拆解
    div.style.borderStyle = 'dashed';//拆解
    div.style.borderColor = 'yellow';//拆解

</script>
</html>

查询计算样式:
    window.getComputedStyle(ele,null)//第二个参数可以查当前元素的伪类样式;
    计算样式只读(可以读行内样式、内联样式,.style只能读取行内样式);
    返回的计算样式的值都是绝对值,没有相对单位;
    IE8及IE8以下不兼容(在IE里面想查询样式可以通过:ele.currentStyle):
        计算样式只读;
        返回的计算样式的值不是经过转换的绝对值;
        IE独有的属性;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div {
            border: 1px solid red;
            background-color: blue;
        }

        div::after {
            content: "";
            width: 50px;
            height: 50px;
            display: inline-block;
            background-color: green;
        }
    </style>
</head>
<body>
<div style="float: right"></div>
</body>
<script>
    /*
    查询计算样式:
        window.getComputedStyle(ele,null)//第二个参数可以查当前元素的伪类样式;
        计算样式只读(可以读行内样式、内联样式,.style只能读取行内样式);
        返回的计算样式的值都是绝对值,没有相对单位;
        IE8及IE8以下不兼容(在IE里面想查询样式可以通过:ele.currentStyle):
            计算样式只读;
            返回的计算样式的值不是经过转换的绝对值;
            IE独有的属性;
     */
    const div = document.getElementsByTagName('div')[0];
    div.style.width = '200px';
    div.style.height = '10rem';

    //计算样式只读(可以读行内样式、内联样式,.style只能读取行内样式)
    console.log(window.getComputedStyle(div, null).width);//200px
    console.log(window.getComputedStyle(div, null).border);//1px solid rgb(255, 0, 0)

    // 返回的计算样式的值都是绝对值,没有相对单位
    console.log(window.getComputedStyle(div, null).backgroundColor);//rgb(0, 0, 255)
    console.log(window.getComputedStyle(div, null).height);//160px;

    //获取伪元素的属性值
    console.log(window.getComputedStyle(div, 'after').width);//50px

    //在IE里面想查询样式可以通过:ele.currentStyle
    // console.log(div.currentStyle.width);//200px
    // console.log(div.currentStyle.height);//10rem

    //封装的获取样式的getStyle方法
    function getStyle(elem, prop) {
        if (window.getComputedStyle) {
            return window.getComputedStyle(elem, null)[prop]
        } else {
            return elem.currentStyle[prop];
        }
    }

    console.log(getStyle(div, "width"));//200px
    console.log(getStyle(div, "height"));//160px
</script>
</html>