博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解脚本化CSS系列第五篇——动态样式
阅读量:6438 次
发布时间:2019-06-23

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

前面的话

  很多时候,DOM操作比较简单明了,因此用javascript生成那些通常原本是HTML代码生成的内容并不麻烦。但由于浏览器充斥着隐藏的陷阱和不兼容问题,处理DOM中的某些部分时要复杂一些,比如动态样式就相对较复杂

  所谓动态样式,是指在页面加载时并不存在,在页面加载完成后动态添加到页面的样式

  动态样式包括两种情况:一种是通过<link>元素插入外部样式表,另一种是通过<style>元素插入内部样式。下面将详细介绍这两种情况

 

外部样式

/*style.css里面的内容*/.box{height:100px;width:100px;background-color: pink;}
var link = document.createElement("link");link.rel = "stylesheet";link.type = "text/css";link.href = "style.css";var head = document.getElementsByTagName('head')[0];head.appendChild(link);

  使用函数封装如下:

测试文字

内部样式

var style = document.createElement("style");style.type = "text/css";style.innerHTML = ".box{height:100px;width:100px;background-color: pink;}";var head = document.getElementsByTagName('head')[0];head.appendChild(style);

  使用函数封装如下:

测试文字

  [注意]该方法在IE8-浏览器中报错,因为IE8-浏览器将<style>视为当作特殊的节点,不允许访问其子节点或设置

 

兼容写法

  动态插入内部样式时,存在兼容问题,下面有两种兼容处理办法

兼容一

  IE浏览器支持访问并修改元素的CSSStyleSheet对象的cssText属性,通过修改该属性可实现类似效果

测试文字

兼容二

  作用域元素是微软自己的一个定义,一般来说页面中看到的元素是有作用域的元素,页面中看不到的元素就是无作用域的元素 

  在IE8-浏览器中,<style>元素是一个没有作用域的元素,如果通过innerHTML插入的字符串开头就是一个无作用域的元素,那么IE8-浏览器会在解析这个字符串前先删除该元素

  所以,下面这段代码是无效的

div.innerHTML = '';

  于是,可以通过增加一个'_'文本节点,然后再删除使之有效

div.innerHTML = "_";    div.removeChild(div.firstChild);
测试文字

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

你可能感兴趣的文章
ZendStudio10.6.1如何安装最新的集成svn小工具?
查看>>
PHP中$_SERVER的详细参数与说明
查看>>
jquery easyui datagrid mvc server端分页排序筛选的实现
查看>>
去了大公司就一定能学到很牛的技术么?
查看>>
methanol 模块化的可定制的网页爬虫软件,主要的优点是速度快。
查看>>
IOS开发之表视图(UITableView)
查看>>
Notepad++去除代码行号的几种方法
查看>>
polay定理总结
查看>>
IIS如何配置可以下载APK、IPA文件
查看>>
CodeForces 396C 树状数组 + DFS
查看>>
[sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表...
查看>>
远程桌面退出全屏/不能全屏/全屏切换的技巧
查看>>
【Java】Float计算不准确
查看>>
mybatis在xml文件中处理大于号小于号的方法
查看>>
Codeforces Codeforces Round #319 (Div. 2) A. Multiplication Table 水题
查看>>
各大浏览器CSS Hack收集
查看>>
再谈 $* 和 $@ 在 Bash 中的表现
查看>>
Apache Commons工具集简介
查看>>
【翻译】Nginx的反向代理
查看>>
htm、html、shtml网页区别
查看>>