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 相关文章推荐
身份证号码前六位所代表的省,市,区, 以及地区编码下载
Apr 12 Javascript
jquery select下拉框操作的一些说明
Apr 02 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
Apr 11 Javascript
javascript设置连续两次点击按钮时间间隔的方法
Oct 28 Javascript
微信小程序 九宫格实例代码
Jan 21 Javascript
javascript实现右下角广告框效果
Feb 01 Javascript
js中数组插入、删除元素操作的方法
Feb 15 Javascript
ionic2懒加载配置详解
Sep 01 Javascript
javascript的惯性运动实现代码实例
Sep 07 Javascript
vue实现点击按钮下载文件功能
Oct 11 Javascript
修改vue源码实现动态路由缓存的方法
Jan 21 Javascript
vant 解决tab切换插件标题样式自定义的问题
Nov 13 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截取后台登陆密码的代码
2012/05/05 PHP
PHP系列学习之日期函数使用介绍
2012/08/18 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
一个简单的php MVC留言本实例代码(必看篇)
2016/09/22 PHP
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
为超链接加上disabled后的故事
2010/12/10 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
深入了解Node.js中的一些特性
2014/09/25 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
python图片验证码生成代码
2016/07/02 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
python 瀑布线指标编写实例
2020/06/03 Python
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
法国春天百货官网:Printemps.com
2020/06/29 全球购物
ddl,dml和dcl的含义
2016/05/08 面试题
创建学习型党组织实施方案
2014/03/29 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
广播节目策划方案
2014/05/23 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫
golang语言指针操作
2022/04/14 Golang