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 相关文章推荐
不使用中间变量,交换int型的 a, b两个变量的值。
Oct 29 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
Nov 30 Javascript
点击隐藏页面左栏或右栏实现js代码
Apr 01 Javascript
JavaScript获取图片的原始尺寸以宽度为例
May 04 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
Jun 16 Javascript
深入理解js中this的用法
May 28 Javascript
jQuery实现邮箱下拉列表自动补全功能
Sep 08 Javascript
微信小程序 自定义对话框实例详解
Jan 20 Javascript
React-Native使用Mobx实现购物车功能
Sep 14 Javascript
MVVM框架下实现分页功能示例
Jun 14 Javascript
详解从Vue-router到html5的pushState
Jul 21 Javascript
深入理解JavaScript 中的执行上下文和执行栈
Oct 23 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
Windows下的PHP5.0详解
2006/11/18 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
Python 调用DLL操作抄表机
2009/01/12 Python
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
python如何制作缩略图
2019/04/30 Python
Python数据类型之Number数字操作实例详解
2019/05/08 Python
Pytorch之Variable的用法
2019/12/31 Python
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
设计部经理的岗位职责
2013/11/16 职场文书
村官学习十八大感想
2014/01/15 职场文书
校长竞聘演讲稿
2014/05/16 职场文书
人事代理委托书
2014/09/27 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
升职感谢信
2015/01/22 职场文书
加薪申请书应该这样写!
2019/07/04 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python
Nginx实现会话保持的两种方式
2022/03/18 Servers