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 相关文章推荐
List Information About the Binary Files Used by an Application
Jun 11 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
Nov 15 Javascript
JavaScript中的值类型转换介绍
Dec 31 Javascript
一张Web前端的思维导图分享
Jul 03 Javascript
Javascript随机标签云代码实例
Jun 21 Javascript
超全面的vue.js使用总结
Feb 12 Javascript
jQuery选择器中的特殊符号处理方法
Sep 08 jQuery
关于jquery layui弹出层的使用方法
Apr 21 jQuery
Vue中的scoped实现原理及穿透方法
May 15 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
Jun 02 Javascript
在vue2.0中引用element-ui组件库的方法
Jun 21 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
Dec 04 Vue.js
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 随机排序广告的实现代码
2011/05/09 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
js弹出确认是否删除对话框
2014/03/27 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
爬山算法简介和Python实现实例
2014/04/26 Python
Python编程之多态用法实例详解
2015/05/19 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
计算机毕业生自荐信范文
2014/03/23 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
升学宴学生致辞
2015/07/27 职场文书
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle
Python可变与不可变数据和深拷贝与浅拷贝
2022/04/06 Python