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实现动态增加删除表格行(兼容IE/FF)
Apr 02 Javascript
JavaScript中的细节分析
Jun 30 Javascript
from 表单提交返回值用post或者是get方法实现
Aug 21 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
Jan 31 Javascript
JS组件Bootstrap Table布局详解
May 27 Javascript
JS简单获取及显示当前时间的方法
Aug 03 Javascript
微信小程序 自定义Toast实例代码
Jun 12 Javascript
详解使用nvm安装node.js
Jul 18 Javascript
详解easyui 切换主题皮肤
Apr 04 Javascript
vue.js 实现a标签href里添加参数
Nov 12 Javascript
实现AJAX异步调用和局部刷新的基本步骤
Mar 17 Javascript
Vue ECharts实现机舱座位选择展示功能
May 15 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 异常处理实现代码
2009/03/10 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
COM组件中调用JavaScript函数详解及实例
2017/02/23 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
javascript验证form表单数据的案例详解
2019/03/25 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
python迭代dict的key和value的方法
2018/07/06 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
numpy按列连接两个维数不同的数组方式
2019/12/06 Python
Python编译为二进制so可执行文件实例
2019/12/23 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
python 爬取免费简历模板网站的示例
2020/09/27 Python
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
2014道德模范事迹材料
2014/02/16 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书