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 timers计时器简单应用说明
Oct 28 Javascript
读jQuery之十二 删除事件核心方法
Jul 31 Javascript
在浏览器窗口上添加遮罩层的方法
Nov 12 Javascript
使用JavaScript 编写简单计算器
Nov 24 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
Oct 14 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
Dec 01 Javascript
JavaScript 节流函数 Throttle 详解
Jul 04 Javascript
jQuery弹出窗口简单实现代码
Mar 09 Javascript
小程序登录态管理的方法示例
Nov 13 Javascript
Vue项目中ESlint规范示例代码
Jul 04 Javascript
Javascript Symbol原理及使用方法解析
Oct 22 Javascript
JavaScript实现网页跨年倒计时
Dec 02 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
BBS(php & mysql)完整版(一)
2006/10/09 PHP
杏林同学录(四)
2006/10/09 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
php微信开发之百度天气预报
2016/11/18 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
laravel使用数据库测试注意事项
2020/04/10 PHP
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
2012/10/11 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
JavaScript Split()方法
2015/12/18 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
javascript实现表单验证
2016/01/29 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
2017/05/17 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
pycharm实现猜数游戏
2020/12/07 Python
心碎乌托邦的创业计划书范文
2013/12/26 职场文书
英语生日邀请函
2014/01/23 职场文书
期末自我鉴定
2014/02/02 职场文书
我的老师教学反思
2014/05/01 职场文书
公司任命书范本
2014/06/04 职场文书
法人单位适用的授权委托书
2014/09/19 职场文书
前台接待岗位职责
2015/02/03 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
Nginx报404错误的详细解决方法
2022/07/23 Servers