摘要:和動(dòng)畫使用或者使用這兩個(gè)函數(shù)定時(shí)調(diào)用一段代碼。腳本化樣式表開啟和關(guān)閉樣式表和元素的對(duì)象定義了一個(gè)在中可以設(shè)置和查詢的屬性。
js和css動(dòng)畫
使用setTimeout()或者setInterval()使用這兩個(gè)函數(shù)定時(shí)調(diào)用一段代碼。這是其原理。
目的,重復(fù)修改內(nèi)聯(lián)樣式,達(dá)到動(dòng)畫的效果
通過在相同的時(shí)間內(nèi)構(gòu)造出一幀幀的內(nèi)容,然后讓其在函數(shù)的作用下不斷的改變css的值,達(dá)到動(dòng)畫的效果
js寫css動(dòng)畫// 將e轉(zhuǎn)化為相對(duì)定位的元素,使得其可以左右移動(dòng) // 第一個(gè)參數(shù)為元素對(duì)象或者元素的id // 如果第二個(gè)參數(shù)是函數(shù),以e為參數(shù),它將在動(dòng)畫結(jié)束時(shí)調(diào)用 // 第三個(gè)參數(shù)指定e移動(dòng)的距離,默認(rèn)為5像素 // 第四個(gè)參數(shù)指定移動(dòng)多久,默認(rèn)500毫秒 function shake(e, oncomplete, distance, time) { // 句柄函數(shù) if (typeof e === "string") e = document.getElemnentById(e); // 如果傳入的是對(duì)象的id則獲取對(duì)象的id,如果傳入的為元素(元素為對(duì)象)則直接跳過這一句 if (!time) time = 500; // 如果time是空值,則直接使用默認(rèn)值 if (!distance) distance = 5; // 如果未指定移動(dòng)的距離,則默認(rèn)為5像素 var originalStyle = e.style.cssText; // 獲取元素e的css樣式 e.style.position = "relative"; // 設(shè)置為相對(duì)定位 var start = (new Date()).getTime(); // 設(shè)置動(dòng)畫開始的時(shí)間,獲取一個(gè)格林威治時(shí)間 animate(); // 動(dòng)畫開始 // 函數(shù)檢查消耗時(shí)間,并更新e的位置 // 如果動(dòng)畫完成,它將e還原為原始狀態(tài) // 否則,將會(huì)更新e的位置,安排其自身重新運(yùn)行 function animate() { var now = (new Date()).getTime(); // 獲取現(xiàn)在的時(shí)間 var elapsed = now-start; // 從開始以來消耗了多長(zhǎng)時(shí)間 var fraction = elapsed / time; // 為總時(shí)間的幾分之幾 if (fraction < 1) { // 如果動(dòng)畫未完成 // 作為動(dòng)畫完成比例的函數(shù),計(jì)算e的x位置 // 使用正弦函數(shù)將完成比例乘以4pi // 所以,它將來回往返兩次 var x = distance * Math.sin(fraction * 4 * Math.PI); // 使用正弦函數(shù)實(shí)現(xiàn)每秒四幀 e.style.left = x + "px"; // 在25毫秒后或在總時(shí)間的最后嘗試再次運(yùn)行函數(shù) // 目的是為了產(chǎn)生每秒40幀動(dòng)畫 setTimeout(animate, Math.min(25, time-elapsed)); // 使用天花板函數(shù)再次調(diào)用,再次移動(dòng) } else { // 否則動(dòng)畫完成 e.style.cssText = originalStyle; // 恢復(fù)原始樣式 if (oncomplete) oncomplete(e); // 產(chǎn)生一個(gè)回調(diào)函數(shù) } } } // 以毫秒級(jí)的時(shí)間將e從完全不透明淡出到完全透明 // 在調(diào)用函數(shù)時(shí)假設(shè)e是完全不透明的 // oncomplete 是一個(gè)可選函數(shù),以e為參數(shù),它將在動(dòng)畫結(jié)束的時(shí)調(diào)用 // 如果不指定time,默認(rèn)為500毫秒 function fadeOut(e, oncomplete, time) { if (typeof e === "string") e = document.getElementById(e); if (!time) time = 500; // 使用Math.sqrt作為一個(gè)緩動(dòng)函數(shù)創(chuàng)建動(dòng)畫 // 非線性函數(shù),一開始淡出的較快,然后逐步的緩慢 var ease = Math.sqrt; var start = (new Date()).getTime(); // 動(dòng)畫開始的時(shí)間 animate(); // 動(dòng)畫開始 function animate() { var elapsed = (new Date()).getTime()-start; // 消耗的時(shí)間 var fraction = elapsed/time; // 總時(shí)間的幾分之幾 if (fraction < 1) { // 如果動(dòng)畫未完成 var opacity = 1 - ease(fraction); // 計(jì)算不透明度 即 完成一次變換,開方 e.style.opacity = String(opacity); // 設(shè)置透明度 setTimeout(animate, // 進(jìn)行下一幀 Math.min(25, time-elapsed)); // 在25毫秒之后或者在總時(shí)間的最后再次調(diào)用 }else { e.style.opacity = "0"; // 使得e完全透明 if (oncomplete) oncomplete(e); // 在結(jié)束的時(shí)候回調(diào) } } }查詢計(jì)算出的樣式
getComputedStyle(e)
275個(gè)樣式。。。O__O "…
腳本化css類除了能腳本化內(nèi)聯(lián)樣式,同樣的也能腳本化css的類
移除,添加類e.className = "attention"; // 添加類 e.className = ""; // 移除類顯示類列表
classList
只讀屬性,返回元素類屬性的實(shí)時(shí)集合。
e.classList()腳本化樣式表 開啟和關(guān)閉樣式表
style和link元素的CSSStyleSheet對(duì)象定義了一個(gè)在js中可以設(shè)置和查詢的disabled屬性。
關(guān)于disabled屬性,該屬性在HTML中不屬于規(guī)范的一部分,在HTML中不存在,但是,在DOM中存在該屬性。在標(biāo)簽中無法設(shè)置該屬性,但是可以在腳本中設(shè)置該屬性
如果值為true,樣式表關(guān)閉,否則樣式表打開
e.disabled = true;
這樣樣式表即可關(guān)閉。
類似的通過以下方式也可
document.styleSheets[0].disabled;查詢,插入與刪除樣式表規(guī)則
CSSStyleSheet對(duì)象同樣也定義了用來查詢,插入和刪除樣式表規(guī)則的api
查詢所有樣式表內(nèi)容var firstRule = document.styleSheets[0].cssRules[0];
document.styleSheets[0] 一個(gè)只讀屬性,返回一個(gè)該文檔的鏈接或嵌入的樣式表
該樣式只讀,不可進(jìn)行插入和刪除
其中selectorText為css選擇器
cssText 為css的文本樣式
insertRule()和deleteRule()這兩種方法,達(dá)到添加和刪除規(guī)則
還有一個(gè)addRule()方法
insertRule()和deleteRule()這兩種方法,達(dá)到添加和刪除規(guī)則
ss.insertRule(".name {color:blue}", 0);
在ss樣式表中,在第0條cssRules中添加一條css規(guī)則。使得類為name的字體變藍(lán)
如果添加的索引已經(jīng)存在則不會(huì)覆蓋,所有的索引加1,然后進(jìn)行插入
刪除樣式規(guī)則
刪除上一條插入的樣式
ss.deleteRule(0);
刪除第0條規(guī)則,樣式繼續(xù)保持從0開始
創(chuàng)建新的樣式表這個(gè)不難,直接插入一個(gè)新的style元素通過innerHTML的方式將其插入新的css內(nèi)容,或者直接插入link標(biāo)簽,設(shè)置添加一個(gè)html的屬性使用的是 Element.setAttritube()方法,將rel的值設(shè)置為stylesheet 然后在用同樣的方法添加src屬性
純粹的dom 和 bom的操作,不涉及任何樣式表的內(nèi)容
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/113714.html
摘要:非常的龐大,而且它是完全為設(shè)計(jì)而生的動(dòng)效庫。它運(yùn)行于純粹的之上,是目前最強(qiáng)健的動(dòng)畫資源庫之一??赡苁莿?chuàng)建滾動(dòng)特效最好用的工具,它支持大量的瀏覽器,只要它們支持和特性??梢酝ㄟ^安裝吊炸天了,接近現(xiàn)實(shí)生活中的物理運(yùn)動(dòng)碰撞慣性動(dòng)畫庫。 收集日期為2019-02-28,★代表當(dāng)時(shí)的該項(xiàng)目在github的star數(shù)量 Animate.css 56401 ★ 一個(gè)跨瀏覽器的動(dòng)效基礎(chǔ)庫,是許多基礎(chǔ)動(dòng)...
摘要:貝塞爾曲線貝塞爾曲線是應(yīng)用于二維圖形應(yīng)用程序的數(shù)學(xué)曲線。通過調(diào)整控制點(diǎn),貝塞爾曲線的形狀會(huì)發(fā)生變化。讓我們看看貝塞爾曲線的工作原理。貝塞爾曲線需要四個(gè)值,或者更準(zhǔn)確地說它需要兩對(duì)數(shù)字。每對(duì)描述立方貝塞爾曲線控制點(diǎn)的和坐標(biāo)。 這是專門探索 JavaScript 及其所構(gòu)建的組件的系列文章的第 13 篇。 如果你錯(cuò)過了前面的章節(jié),可以在這里找到它們: JavaScript 是如何工作的:...
摘要:是使用簡(jiǎn)單函數(shù)創(chuàng)建動(dòng)畫的一個(gè)簡(jiǎn)單的庫?;A(chǔ)知識(shí)提供了創(chuàng)建動(dòng)畫的最簡(jiǎn)單的。他用于分割動(dòng)畫為兩個(gè)集合,并按順序執(zhí)行。如下動(dòng)畫被分為兩步,通過方法實(shí)現(xiàn)分割使用創(chuàng)建復(fù)雜動(dòng)畫在本教程中,我們已經(jīng)寫了很多基本的動(dòng)畫來了解各個(gè)方法。 原文鏈接,請(qǐng)移步creating-css-animations-using-move-js 第一次翻譯,如有誤解,請(qǐng)移步原文 在網(wǎng)站上,CSS3 的過渡和動(dòng)畫是當(dāng)前...
摘要:支持動(dòng)畫狀態(tài)的,在動(dòng)畫開始,執(zhí)行中,結(jié)束時(shí)提供回調(diào)函數(shù)支持動(dòng)畫可以自定義貝塞爾曲線任何包含數(shù)值的屬性都可以設(shè)置動(dòng)畫倉庫文檔演示功能介紹一定程度上,也是一個(gè)動(dòng)畫庫,適用所有的屬性,并且實(shí)現(xiàn)的能更方便的實(shí)現(xiàn)幀動(dòng)畫,替代復(fù)雜的定義方式。 動(dòng)畫調(diào)研-V1 前言:動(dòng)畫從用途上可以分為兩種,一種是展示型的動(dòng)畫,類似于一張GIF圖,或者一段視頻,另一種就是交互性的動(dòng)畫。這兩種都有具體的應(yīng)用場(chǎng)景,比如...
摘要:網(wǎng)頁逐幀動(dòng)畫的實(shí)現(xiàn)方式網(wǎng)頁中的逐幀動(dòng)畫,大致可分為兩大類的實(shí)現(xiàn)方式,分別是使用控制,和單純使用實(shí)現(xiàn),兩者的優(yōu)劣總體概括來說就是動(dòng)畫可控性更強(qiáng),但開銷大,實(shí)現(xiàn)復(fù)雜。 網(wǎng)頁逐幀動(dòng)畫的實(shí)現(xiàn)方式 網(wǎng)頁中的逐幀動(dòng)畫,大致可分為兩大類的實(shí)現(xiàn)方式, 分別是使用JS控制,和單純使用CSS實(shí)現(xiàn),兩者的優(yōu)劣總體概括來說就是: JS動(dòng)畫可控性更強(qiáng),但開銷大,實(shí)現(xiàn)復(fù)雜。 CSS動(dòng)畫實(shí)現(xiàn)相對(duì)JS更簡(jiǎn)單。常見的網(wǎng)...
摘要:經(jīng)過一番研究,我收集了個(gè)最好的庫,你可以用在自己的項(xiàng)目中。該庫于年月首次推出,目前仍有近名參與者開發(fā)。超過的,是一個(gè)動(dòng)畫庫,可以處理屬性單個(gè)轉(zhuǎn)換或任何屬性,以及對(duì)象。對(duì)智能設(shè)備的方向作出反應(yīng)的視差引擎快速創(chuàng)建漂亮的動(dòng)畫。 翻譯:瘋狂的技術(shù)宅原文:https://blog.bitsrc.io/11-jav... 當(dāng)我想要在網(wǎng)上找一個(gè)簡(jiǎn)潔的 Javascript 動(dòng)效庫時(shí),總是發(fā)現(xiàn)很多推...
閱讀 4223·2021-11-22 13:52
閱讀 2114·2021-09-22 15:12
閱讀 1158·2019-08-30 15:53
閱讀 3485·2019-08-29 17:12
閱讀 2213·2019-08-29 16:23
閱讀 1693·2019-08-26 13:56
閱讀 1798·2019-08-26 13:44
閱讀 1915·2019-08-26 11:56