美文网首页前端开发那些事儿
理解DOM如何操作CSS样式

理解DOM如何操作CSS样式

作者: 深度剖析JavaScript | 来源:发表于2020-08-17 22:05 被阅读0次

我们知道DOM部分其实就是浏览器各大厂商提供的一些列方法和属性的集合,这一系列的属性和方法也被称为接口,这些接口可以让我们更加方便的操作HTML和XML,注意我没有说CSS哦
但我们经常会听到js操作css或者脚本化css的说法,那是怎么回事呢?
其实,DOM中提供的方法能操作HTML的所有内容,其中包括能操作元素的属性,而元素的属性中又恰好包含style属性,style属性表示的是该元素行间样式,而且行间样式的权重是1000。所以一般我们通过DOM操作元素的属性style就间接的改变了该元素的CSS样式。
DOM操作CSS样式其实质是通过DOM控制行间样式,从而达到改变样式的效果。这只能说间接的操作CSS,并非真实的直接操作CSS文件

通过DOM元素的style读写CSS行间样式
格式:ele.style.prop
注:
1. 可读可写行间样式,没有兼容性问题
2. 碰到保留字属性,前面应添加css;例如:float-->cssFloat
3. 复合属性必须拆解
4. 组合单词变成小驼峰式
5. 写入的值必须是字符串格式

用法比较简单,我们深入看看style吧
先随便来两个元素,并选中

<body>
  <div></div>
  <span></span>
  <script>
    var odiv = document.getElementsByTagName("div")[0]
    var ospan = document.getElementsByTagName("span")[0]
  </script>
</body>
我想看看dom元素的原型链

我们发现,dom元素的原型的原型都是HTMLElement。于是猜测,style就是定义在HTMLElement的原型链上,所以凡是DOM元素都有style属性。
通过hasOwnProperty进一步验证看看是否就在HTMLElment的原型上


得出结论:DOM元素的style属性其实都是继承自HTMLElement.prototype。即里面可能这么写HTMLElement.prototype.style = xxx

明白style定义在哪里之后,再来看style里面是什么?

我们打印出来看看:
发现里面是一个css样式声明的对象:CSSStyleDeclaration
具体看看里面包括什么吧
真相大白了,原来里面包含就是CSS对应的属性名字,可以方便dom元素修改对应的某个样式

目前也只有这种方式能修改CSS样式。

下面再来了解查询样式的方式:
window.getComputedStyle(ele,null)

  1. 通过计算样式获取的是当前这个元素所展示一切CSS显示值
  2. 计算样式只读
  3. 返回的计算样式的值都是绝对值(没有相对值,比如em,%)
  4. IE8及以下不兼容

IE使用另外一直方式代替
ele.currentStyle

  1. 也是只读
  2. 返回的计算样式的值不是经过转换的绝对值
  3. IE独有

最后我们封装一个所有浏览器都能用的方法:

function getStyle(ele, prop) {
  return window.getComputedStyle ? window.getComputedStyle(ele, null)[prop] : ele.currentStyle[prop];
}

相关文章

  • 理解DOM如何操作CSS样式

    我们知道DOM部分其实就是浏览器各大厂商提供的一些列方法和属性的集合,这一系列的属性和方法也被称为接口,这些接口可...

  • 事件相关

    如何批量操作 css 如何获取 DOM 计算后的样式 使用getComputedStyle获取元素计算后的样式 实...

  • 「DOM 编程」样式操作

    样式操作CSS 对应 DOM 对象内部样式表行内样式更新样式element.styleelement.style....

  • 【Javascript】DOM操作&事件介绍

    写一个函数,批量操作 css 如何获取 DOM 计算后的样式 使用getComputedStyle方法获取 实现效...

  • 前端面试题之JavaScript(八)

    1.写一个函数,批量操作 css 2.如何获取 DOM 计算后的样式 window.getComputedSele...

  • DOM操作&事件操作

    1.写一个函数,批量操作 css 2.如何获取 DOM 计算后的样式 window.getComputedStyl...

  • DOM&事件 实战

    题目1: 写一个函数,批量操作 css 题目2: 如何获取 DOM 计算后的样式 使用getComputedSty...

  • DOM操作

    1、 写一个函数,批量操作 css 2、如何获取 DOM 计算后的样式 可以使用document.defaultV...

  • JS DOM操作(2) 事件(1)

    1、写一个函数,批量操作 css 2、如何获取 DOM 计算后的样式 设置div的background为pink ...

  • 前端css实现两点连线

    css样式, 看样式猜dom嘻嘻嘻 DOM

网友评论

    本文标题:理解DOM如何操作CSS样式

    本文链接:https://www.haomeiwen.com/subject/gtqndktx.html