JavaScript和CSS交互的方法汇总


Posted in Javascript onDecember 02, 2014

用JavaScript获取伪元素(pseudo-element)属性

大家都知道如何通过一个元素的style属性获取它的CSS样式值,但能获取伪元素(pseudo-element)的属性值吗?可以的,使用JavaScript也可以访问页面中的伪元素。

// Get the color value of .element:before

var color = window.getComputedStyle(

document.querySelector('.element'), ':before'

).getPropertyValue('color');

// Get the content value of .element:before

var content = window.getComputedStyle(

document.querySelector('.element'), ':before'

).getPropertyValue('content');

看见了吗,我能访问伪元素里的content属性值。如果你想创建一个动态的,风格别致的网站,这是一种非常有用的技术!

classList API

很多的JavaScript工具库里都有addClass,removeClass和toggleClass等方法。为了对老式浏览器的兼容,这些类库采用的方法都是先搜索元素的className,追加和删除这个类,然后更新className。其实有一个新型的API提供了添加,删除和反转CSS类属性的方法,叫做classList:

myDiv.classList.add('myCssClass'); // Adds a class

myDiv.classList.remove('myCssClass'); // Removes a class

myDiv.classList.toggle('myCssClass'); // Toggles a class

大多数的浏览器里很早就实现了classListAPI,而且最终IE10里也实现了它。

直接对样式表进行添加和删除样式规则

我们都非常熟悉使用element.style.propertyName来修改样式,使用JavaScript能帮助我们做到这些,但你知道如何新增或修一个现有的CSS样式规则吗?其实非常的简单。

function addCSSRule(sheet, selector, rules, index) {

if(sheet.insertRule) {

sheet.insertRule(selector + "{" + rules + "}", index);

}

else {

sheet.addRule(selector, rules, index);

}

}

// Use it!

addCSSRule(document.styleSheets[0], "header", "float: left");

这种方法通常是用来创建一个新的样式规则,但如果你想修改一个现有的规则,也可以这样做。

加载CSS文件

延迟加载图片、JSON、脚本等是用来加快页面显示速度的好方法。我们可以使用curl.js等这样JavaScript加载器来延迟加载这些外部资源,可你知道CSS样式表也可以延迟加载吗,而且在加载成功后回调函数会给予通知。

curl(

[

"namespace/MyWidget",

"css!namespace/resources/MyWidget.css"

], 

function(MyWidget) {

// 你可以对MyWidget进行操作

// 这里没有对这个CSS文件引用,因为不需要;

// 我们只需要它已经加载到页面上了

}

});

本网站使用的PrismJS语法高亮脚本就是延迟加载的。当所有的资源都加载后,回调函数就会触发,我可在回调函数里加载它。非常有用!

CSS鼠标指针事件

CSS鼠标指针事件pointer-events属性非常的有趣,它的功效非常像JavaScript,当你把这个属性设置为none时,它能有效的阻止禁止这个元素,你也许会说“这又如何?”,但事实上,它是禁止了这个元素上的任何JavaScript事件或回调函数!

.disabled { pointer-events: none; }

点击这个元素,你会发现任何你放置在这个元素上的监听器都不会触发任何事件。一个神奇的功能,真的——你不在需要为了防止某个事件会被触发而去检查某个css类是否存在。

以上就是个人总结的5种javascript和CSS进行交互的方法,大家如果有更好的,请告之,本文将持续更新

Javascript 相关文章推荐
比较详细的关于javascript中void(0)的具体含义解释
Aug 02 Javascript
js DOM模型操作
Dec 28 Javascript
javascript闭包的高级使用方法实例
Jul 04 Javascript
用js读、写、删除Cookie代码续篇
Dec 03 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
Jul 12 Javascript
jquery实现全选、全不选以及单选功能
Mar 23 jQuery
vue组件之Alert的实现代码
Oct 17 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
May 15 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
May 28 jQuery
在vue-cli的组件模板里使用font-awesome的两种方法
Sep 28 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
Dec 02 Javascript
element-ui 实现响应式导航栏的示例代码
May 08 Javascript
HTML,CSS,JavaScript速查表推荐
Dec 02 #Javascript
javascript函数声明和函数表达式区别分析
Dec 02 #Javascript
javascript常用方法汇总
Dec 02 #Javascript
js时间日期格式化封装函数
Dec 02 #Javascript
JavaScript基础语法、dom操作树及document对象
Dec 02 #Javascript
JavaScript基础知识学习笔记
Dec 02 #Javascript
Js 正则表达式知识汇总
Dec 02 #Javascript
You might like
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
深入探讨javascript中的数据类型
2015/03/04 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
python监控linux内存并写入mongodb(推荐)
2017/09/11 Python
django缓存配置的几种方法详解
2018/07/16 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
优秀团员个人的自我评价
2013/10/02 职场文书
家具促销活动方案
2014/02/16 职场文书
小学生手册家长评语
2014/04/16 职场文书
电教室标语
2014/06/20 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
研究生导师评语
2014/12/31 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
乡镇科协工作总结2015
2015/05/19 职场文书
西安事变观后感
2015/06/12 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书