第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

你可能不知道的5種 CSS 和 JS 的交互方式

標(biāo)簽:
JavaScript C

CSS和JavaScript: 在各个浏览器版本中的分界线似乎变得越来越模糊.
两者所完成的功能差异非常明显,但说到底他们都是前端技术,所以确实需要紧密地配合。
虽然我们将代码拆分到独立的 .js 文件和 .css 文件中,但他们之间还能进行一些更密切的交互,这些通常是普通JS框架所不支持的.
下面是你可能不知道的CSS和JS的交互的5种方式:

使用JavaScript获取CSS伪元素属性

我们可以通过DOM元素的 style 属性获取基本的CSS样式值, 但怎么获取CSS伪元素属性呢? 确实,JavaScript提供了相应的API:

// 获取 .element:before 的 color 值  
var color = window.getComputedStyle(  
    document.querySelector('.element'), ':before'  
).getPropertyValue('color');  

// 获取 .element:before 的 content 值  
var content = window.getComputedStyle(  
    document.querySelector('.element'), ':before'  
).getPropertyValue('content');  

你可以查看作者的博客文章: Device State Detection, 如果你想创建动态,独特的网站那会非常有用.

classList API

在最受欢迎的JS框架中,我们可以使用 addClass , removeClass , 以及 toggleClass 方法来处理 class 列表. 为了兼容旧版本浏览器,每个框架都会先获取元素的 className属性(类型为String) 并添加/移除 相应的 class, 然后再更新 className 字符串. 现在,有一个新的API可以用来高效地 添加,删除,切换 class,名为 classList:

myDiv.classList.add('myCssClass'); // 添加 class  
myDiv.classList.remove('myCssClass'); // 移除 class  
myDiv.classList.toggle('myCssClass'); // 切换 class  

大多数浏览器支持 classList 已经好几年了,但是 IE 很杯具的在 10.0 版本才开始支持.

直接操作样式表

我们对于使用 element.style.propertyName 这种形式的方法修改样式都很熟悉, 并可以通过 JavaScript 工具来处理,但你知道 怎样在新的和已存在的 stylesheets 中 读取和写入样式规则 吗? 这个API也是很简单的:

function addCSSRule(sheet, selector, rules, index) {  
    // 注意 sheet 的新 API   
    if(sheet.insertRule) {  
        sheet.insertRule(selector + "{" + rules + "}", index);  
    }  
    else {  
        sheet.addRule(selector, rules, index);  
    }  
}  

// 调用!  
addCSSRule(document.styleSheets[0], "header", "float: left");  

通常是使用此种方式来创建一个新的样式表,但如果你想修改一个现有的样式表也可以,快试试吧!

使用 Loader 加载 CSS 文件

对图片, JSON,以及JS脚本的懒加载是减少页面显示时间的有效方法. 我们可以通过 curl.js 或者 jQeury 库加载这些外部资源, 但你知道如何 懒加载样式表 并在加载完成后触发回调函数么?

curl(  
    [  
        "namespace/MyWidget",  
        "css!namespace/resources/MyWidget.css"  
    ],   
    function(MyWidget) {  
        // 使用 MyWidget 进行  
        // The CSS reference isn't in the signature because we don't care about it;  
        // we just care that it is now in the page  
    }  
});  

本博客的 原文 就使用懒加载 导入了 PrismJS,基于 pre 元素实现文字的高亮显示. 在所有资源(包括css)加载完成后,会调用回调函数,这应该是很有用的.

CSS 的 pointer-events 属性

CSS' pointer-events 属性扮演了一种类似 JavaScript 的方式, 如果 pointer-events 值为 none 则禁用某个元素,不为 none 则允许元素的常用功能. 可能你会问: "这有什么用?" 好处是 pointer-events 能高效地阻止触发 JavaScript 事件.
[css] view plaincopy在CODE上查看代码片派生到我的代码片

.disabled { pointer-events: none; }  

在元素上的 click 以及通过 addEventListener 添加的回调函数都不会被触发. 这真是一个完美的属性,真的 —— 你在回调函数中不需要先检测 className 以决定某些分支.

上面列举了CSS与Javascript交互的5种方式,还有更多的交互方式吗? 欢迎您进行分享!

作者:铁锚
译文地址:http://blog.csdn.net/renfufei/article/details/18665457
原文链接:http://davidwalsh.name/ways-css-javascript-interact

點(diǎn)擊查看更多內(nèi)容
25人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消