博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《DOM编程艺术》中CSS—DOM的总结(一)
阅读量:5973 次
发布时间:2019-06-19

本文共 2281 字,大约阅读时间需要 7 分钟。

前言:前面是纯总结,后面实现了一个用DOM改变样式的Demo。

-------------------开始-------------------------

1.元素节点的style属性

HTML文档中每个元素节点都有一个style属性,style属性包含着元素的样式,查询这个这个属性将会返回一个对象,节点对应的样式都存放在这个style属性里。

一个Demo:可以弹出弹窗,返回标签应用的CSS样式

                
exampl

An example of a paragraph

2.style的弊端

style属性只能返回内嵌样式,只有把CSS style样式插入到标记里,才可以用DOM style属性去查询那些信息。

3.一个Demo:根据元素在节点树里的位置来设置样式

Demo说明:作者首先给出了一段HTML,有两个<h1>标签,每一个<h1>标签后面跟着几个<p>标签,然后用DOM改变每个<h1>标签后面紧跟着的<p>标签的样式。在我看了这个Demo之后感觉作者多此一举,在<p>标签上添加class或者id属性用CSS不是更简单吗?但是后面作者给出了理由:如果文档需要定期编辑更新,那么添加class属性很快就会成为负担(这个负担也不小吧。。。),anyway,看代码吧。

(1)HTML部分

Hold the page

第一段写点什么呢?

我来讲一段故事:从前有座山,山里一个庙...

别走啊!!!最精彩的还在后面,旁边有一座尼姑庵...

还有!!!还有!!!

你听我讲,慢慢听我讲,这个故事很精彩

你可以评论我的文章,我告诉你后续故事,真的很精彩,不骗你。

(2)js代码部分

首先封装一个styleHeaderSiblings函数,获取所有的h1标签,然后调用nextSibling方法获取下一个节点,但是nextSibling方法返回的是所有节点而不只是元素节点,包括h1中的text了文本,所以就需要函数getNextElement来进行判断,直到获取到下一个元素节点为止返回,然后执行改变样式的操作

styleHeaderSiblings函数:

//需求:改变h1标签紧跟着后面节点元素

的样式,首先要封装一个函数,获取所有的h1元素 //headers[i].nextSibling获取的是

标签后面的文本text,用getNextElement函数进行判断 //如果headers[i].nextSibling是类型为1的节点元素,就返回并且改变样式 //如果不是就接着执行getNextElement函数(递归函数思想) function styleHeaderSiblings(){ if(!document.getElementsByTagName){ return false; } var headers = document.getElementsByTagName("h1"); var elem; for(var i = 0; i

getNextElement函数:唯一能让人兴奋的地方就是这里用了递归吧~~~

function getNextElement(node){        if(node.nodeType == 1){            return node;        }        if(node.nextSibling){            return getNextElement(node.nextSibling);        }        return null;    }

在页面加载完成后调用styleHeaderSiblings函数,所以要封装一个addLoadEvent函数

function addLoadEvent(func){        //把现有的window.onload存入变量oldonload        var oldonload = window.onload;        if(typeof window.onload != 'function'){            window.onload = func;        }else{            window.onload = function(){                oldonload();                func();            }        }    }

最后调用页面加载完成时执行addLoadEvent(styleHeaderSiblings)

4.效果对比,略无聊~~~

应用之前

图片描述

应用之后

图片描述

5.完整源代码

    
exampl

Hold the page

第一段写点什么呢?

我来讲一段故事:从前有座山,山里一个庙...

别走啊!!!最精彩的还在后面,旁边有一座尼姑庵...

还有!!!还有!!!

你听我讲,慢慢听我讲,这个故事很精彩

你可以评论我的文章,我告诉你后续故事,真的很精彩,不骗你。

转载地址:http://xddox.baihongyu.com/

你可能感兴趣的文章
#考研笔记#计算机问答题
查看>>
深入学习golang(4)—new与make
查看>>
JS动态生成<style>
查看>>
怎么看自己服务器的带宽?
查看>>
光纤模块接口全是down状态
查看>>
Linux下Python设置vim和交互模式下自动补全
查看>>
阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)
查看>>
测试mysql绑定变量功能
查看>>
常见路由命令
查看>>
go的错误处理
查看>>
apache2.4.4的安装过程
查看>>
php5.3安装oracle的扩展oci8与pdo_oci
查看>>
Java多线程
查看>>
发送超长短信的协议格式
查看>>
A query was run and no Result Maps were found for the Mapped Statement
查看>>
摆正测试员在软件项目中的位置
查看>>
Bambook 稍后阅读 V1.01 发布
查看>>
安装第三方库出现 Python version 2.7 required, which was not found in the registry
查看>>
【Quartz】Integration with Spring
查看>>
f5课堂:云计算和虚拟化助力灾难恢复
查看>>