-DOM与CSS

Posted 一直饿着肚子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了-DOM与CSS相关的知识,希望对你有一定的参考价值。

style属性

文档中每个元素节点都有一个属性style。style属性包含着元素样式,查询这个属性将返回一个对象而不是一个简单的字符串。样式都存放在这个style对象的属性里。

var element = getElementById("example")
//查看颜色属性
element.style.color
//element.style.font-family正确写法
element.style.fontFamily

通过style属性获取样式有很大的局限性,只有把CSS style属性插入到标记里,才可以用DOM style属性去查询那些信息。

但是我们用DOM设置的样式,就可以用DOM再把它们检索出来。
style对象的属性值永远是一个字符串。style 属性的值必须放在引号里,单引号或双引号都可以。

para.style.color = 'black';

如果没有加引号,JS会把等号右边解释为一个变量,如果前面没有定义过该变量,上面代码将无法运行。

何时该使用DOM脚本设置样式

在绝大多数场合,还是应该使用CSS来去声明样式。但在CSS使用不方便的场合,可以利用DOM对文档样式做一些增强。

根据元素在节点树里的位置来设置样式

CSS还无法根据元素之间的相对位置关系找出某个特定元素,但是可以用DOM来找出目标元素,并把样式添加给它。

根具某种条件反复设置某种样式

例如表格斑马线,JS擅长处理重复性任务,用一个while或for循环就可以轻松地遍历一个很长的列表。

ClassName属性

上文都是一直在使用DOM直接设置或者修改样式,我们还可以通过JS代码更新这个元素的 class 属性来间接的改变样式。

//设置一个元素的class属性
element.className = "属性名"

这个技巧有一个不足之处:通过className属性设置某个元素的class属性时将替换而不是追加该元素原有的class设置。

解决方法:可以利用字符串拼接操作,把新的class设置值追加到className属性上。

elem.className += " intro";
/*以下是给一个元素追加新的class时封装的函数:
	1.检查 className 属性值是否为null
	2.如果是,把新的class设置直接赋值给className属性
	3.如果不是,把一个空格和新的class设置值追加到className属性上去
*/
function addClass(element,value)
	if (!element.className) 
		element.className = value;
	else 
		newClassName = element.className;
		newClassName += " ";
		newClassName += value;
		element.className = newClassName;
	

8.2 JavaScript:驾驭网页-CSS与DOM

DOM是种符合万维网标准的HTML操纵方式,它能比innerHTML特性达成更多操控功能

这里有HTML代码与CSS代码

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style type="text/css">
span.class1
    background-color:#DDDDDD;
    
span.class2
    background-color:#221717;
    
</style>
</head>

<body>
<span id="span1"  class="class1">
Start Game
</span>
<span id="span2"  class="class2">
Start Game
</span>
</body>
</html>

借由改变节点的整份样式类,className节点特性达成戏剧性的样式变化

DOM透过节点属性的className特性,提供对元素样式类的访问
alert(document.getElementById(“span1”).className);

通过更改CSS样式类的名称,完成对元素外观的转变
document.getElementById(“span1”).className=”class2”;//将span1的样式换成span2的样式
同理,我们也可以在这里用onmouseover()与onmouseout()事件对元素的样式加以控制

<span id="span1"  class="class1" onMouseOver="this.className='class2'" onMouseOut="this.className='class1'">

虽然这种效果一般用CSS来加以控制,不过,这里只注重对这些工具的应用,大家触类旁通即可
CSS样式类与Javascript类完全无关——它们是完全不同的东西

借由访问节点的单一样式特性,style节点特性达成少量样式变化

节点的Style特性提供对单一样式特性的访问

<span id="span1"  class="class1" onMouseOver="this.className='class2'" onMouseOut="this.className='class1'" style=" visibility:hidden">

style=” visibility:hidden”指示元素隐藏
网页元素可以利用元素对象的visibility 样式特性做动态的显示或隐藏(display:none/display:block 同样可以完成对元素的隐藏与显示)

DOM能随意创建任何HTML元素,当然包括文本段落

document.createElement()用于创建一个HTML标签,参数是标签名
document.createElement(“p”)创建一个p标签
另:document.createTextNode()用于创建文本段落,参数是文本内容
var pElem=document.createElement(“p”);//创建一个P标签
pElem.appendChild(document.createTextNode(“Hello WeAreZero!”));//为P标签添加子元素 文本
document.getElementById(“span1”).appendChild(pElem);//将P标签以及其子元素添加到span1标签下

附录
利用document对象的createElement()方法,能够创建任何HTML元素
若需新增元素的文本内容,必须创建一个文本内容子元素,并附加至元素下
借由小心地新增与移除DOM树上的节点,网页可以随意拆解与重组

以上是关于-DOM与CSS的主要内容,如果未能解决你的问题,请参考以下文章

javascript HTML DOM 简单介绍

JavaScript(DOM文档对象模型)

2.javascript dom中有几种节点类型

csscss3总结

CSSCSS 复合选择器 ① ( 基础选择器与复合选择器 | 后代选择器 )

CSSCSS 复合选择器 ③ ( 并集选择器 | 并集选择器与后代选择器示例 )