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 相关文章推荐
js控制表单不能输入空格的小例子
Nov 20 Javascript
使用jquery插件qrcode生成二维码
Oct 22 Javascript
javascript数据结构之双链表插入排序实例详解
Nov 25 Javascript
在vue.js中抽出公共代码的方法示例
Jun 08 Javascript
Vue项目使用CDN优化首屏加载问题
Apr 01 Javascript
浅谈mvvm-simple双向绑定简单实现
Apr 18 Javascript
vue系列之requireJs中引入vue-router的方法
Jul 18 Javascript
5分钟快速掌握JS中var、let和const的异同
Sep 19 Javascript
详解javascript设计模式三:代理模式
Mar 25 Javascript
js canvas实现5张图片合成一张图片
Jul 15 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
Nov 24 Javascript
基于JavaScript实现简单扫雷游戏
Jan 02 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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
php数组遍历类与用法示例
2019/05/24 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
Vue计算属性的使用
2017/08/04 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
详解小程序循环require之坑
2019/03/08 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
python实现挑选出来100以内的质数
2015/03/24 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
经济信息系毕业生自荐信范文
2014/03/15 职场文书
大学生个人求职信
2014/06/02 职场文书
感恩的心主题班会
2015/08/12 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
10大幻兽系恶魔果实 蝙蝠果实上榜,第一自愈能力强
2022/03/18 日漫