理解DOM如何 *** 作CSS样式

理解DOM如何 *** 作CSS样式,第1张

我们知道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吧

先随便来两个元素,并选中

我们发现,dom元素的原型的原型都是HTMLElement。于是猜测,style就是定义在HTMLElement的原型链上,所以凡是DOM元素都有style属性。

通过hasOwnProperty进一步验证看看是否就在HTMLElment的原型上

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

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

下面再来了解查询样式的方式:

window.getComputedStyle(ele,null)

IE使用另外一直方式代替

ele.currentStyle

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

一、判断一个对象是否隐藏:

$("#id").css("display")=="none"

二、在所有匹配的元素中,设置一个样式属性的值:

$("div").css("color","#FF0000")

createTextNode 会输出全部文本, 可以在它的容器上添加样式.

即 headerrow.insertCell(0) 时添加样式

headerrow.insertCell(0).appendChild(document.createTextNode("姓名"))

修改为以下格式,

方法一>

var element = headerrow.insertCell(0)

element.appendChild(document.createTextNode("姓名"))

element.style.cssText = "color:#FF0000font-size:24px"

或者将样式写进 css 文件,设置元素的 className:

方法二>

var element = headerrow.insertCell(0)

element.appendChild(document.createTextNode("姓名"))

element.className = class

或者用 "太极八卦饼" 的方法:

方法三>

var element = headerrow.insertCell(0)

element.appendChild(document.createTextNode("姓名"))

element.style.fontSize= "30px"

element.style.color = "#FF0000"

.....

方法二通用性好一些, 只需要写一份CSS, 可以供后面的代码重用, 而且代码进行了分离.

其它的两个处理方法类似

方法一也可以样式文本存入变量, 在当前 js 中实现重用.

var cssText = "color:#FF0000font-size:24px"

var element = headerrow.insertCell(0)

element.appendChild(document.createTextNode("姓名"))

element.style.cssText = cssText

element = headerrow.insertCell(1)

element.appendChild(document.createTextNode("年龄"))

element.style.cssText = cssText

element = headerrow.insertCell(2)

element.appendChild(document.createTextNode("性别"))

element.style.cssText = cssText


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11950520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存