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 相关文章推荐
基于jQuery的一个扩展form序列化到json对象
Dec 09 Javascript
JavaScript中的Array对象使用说明
Jan 17 Javascript
js图片翻书效果代码分享
Aug 20 Javascript
JavaScript正则表达式匹配 div  style标签
Mar 15 Javascript
理解javascript async的用法
Aug 22 Javascript
使用cookie绕过验证码登录的实现代码
Oct 12 Javascript
requireJS模块化实现返回顶部功能的方法详解
Oct 16 Javascript
浅谈Vue.nextTick 的实现方法
Oct 25 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
Sep 18 Javascript
简单了解Vue + ElementUI后台管理模板
Apr 07 Javascript
详解javascript void(0)
Jul 13 Javascript
jQuery实现评论模块
Aug 19 jQuery
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
VOLVO车载收音机
2021/03/02 无线电
比较全的PHP 会话(session 时间设定)使用入门代码
2008/06/05 PHP
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
推荐一款MAC OS X 下php集成开发环境mamp
2014/11/08 PHP
window.location.hash 使用说明
2010/11/08 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
2021/01/30 Vue.js
Python显示进度条的方法
2014/09/20 Python
Python反射用法实例简析
2017/12/22 Python
python 获取字符串MD5值方法
2018/05/29 Python
对pandas中to_dict的用法详解
2018/06/05 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
python下载库的步骤方法
2019/10/12 Python
python 如何将office文件转换为PDF
2020/09/22 Python
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
PHP面试题大全
2015/10/16 面试题
导游的职业规划书范文
2013/12/27 职场文书
八一建军节部队活动方案
2014/02/04 职场文书
文明餐桌活动方案
2014/02/11 职场文书
《藏戏》教学反思
2014/02/11 职场文书
高级工程师英文求职信
2014/03/19 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
自荐信大全
2019/03/21 职场文书
python3中apply函数和lambda函数的使用详解
2022/02/28 Python
Redis实现短信验证码登录的示例代码
2022/06/14 Redis
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技