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 URL锚点取值方法
Feb 25 Javascript
javascript css styleFloat和cssFloat
Mar 15 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
Apr 12 Javascript
javascript实现简单加载随机色方块
Dec 25 Javascript
JS onkeypress兼容性写法详解
Apr 27 Javascript
在Docker快速部署Node.js应用的详细步骤
Sep 02 Javascript
Angular2学习笔记——详解NgModule模块
Dec 02 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
Dec 14 Javascript
微信小程序实现文件、图片上传功能
Aug 18 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
Nov 14 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
Aug 06 Javascript
electron踩坑之remote of undefined的解决
Oct 06 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生成图片验证码
2015/06/09 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
详解微信小程序自定义组件的实现及数据交互
2019/07/22 Javascript
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
Python 文件重命名工具代码
2009/07/26 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
git查看、创建、删除、本地、远程分支方法详解
2020/02/18 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
瀑布模型都有哪些优缺点
2014/06/23 面试题
销售部主管岗位职责
2013/12/18 职场文书
寄语学生的话
2014/04/10 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
学习党章的体会
2014/11/07 职场文书
研究生个人学年总结
2015/02/14 职场文书
幼儿园综治宣传月活动总结
2015/05/07 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang