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实现公告文字左右滚动的实例代码
Oct 29 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
Sep 23 Javascript
jQuery事件绑定和委托实例
Nov 25 Javascript
js拼接html字符串的注意事项
Oct 13 Javascript
分分钟玩转Vue.js组件
Oct 25 Javascript
AngularJS控制器之间的通信方式详解
Nov 03 Javascript
JS中传递参数的几种不同方法比较
Jan 20 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
May 17 Javascript
JavaScript截屏功能的实现代码
Jul 28 Javascript
详解vue中组件参数
Jul 09 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
Jan 28 Javascript
原生JS 实现的input输入时表格过滤操作示例
Aug 03 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写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
PHP文件读写操作相关函数总结
2014/11/18 PHP
php连接与操作PostgreSQL数据库的方法
2014/12/25 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
总结对比php中的多种序列化
2016/08/28 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
javascript 写类方式之九
2009/07/05 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
Python实现SMTP发送邮件详细教程
2021/03/02 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
python与mysql数据库交互的实现
2020/01/06 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
Python super()方法原理详解
2020/03/31 Python
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
募捐倡议书
2014/04/14 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
村级四风对照检查材料
2014/08/24 职场文书
2014年有孩子的离婚协议书范本
2014/10/08 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
CSS3常见动画的实现方式
2021/04/14 HTML / CSS
golang switch语句的灵活写法介绍
2021/05/06 Golang
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server