中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

如何實(shí)現(xiàn)網(wǎng)站開(kāi)發(fā)太原網(wǎng)站建設(shè)制作

如何實(shí)現(xiàn)網(wǎng)站開(kāi)發(fā),太原網(wǎng)站建設(shè)制作,畢業(yè)論文酒店網(wǎng)站開(kāi)發(fā)與設(shè)計(jì),高清的廣州網(wǎng)站建設(shè)js動(dòng)態(tài)設(shè)置關(guān)鍵偵keyframes 1.前置知識(shí) 關(guān)鍵偵keyframes規(guī)則通過(guò)在動(dòng)畫(huà)序列中定義關(guān)鍵偵的樣式來(lái)控制CSS動(dòng)畫(huà)序列的中間步驟 keyframes slidein {from {transform: translateX(0%);}to {transform: translateX(100%);} } // from 等價(jià)于 0%;to 等價(jià)與 100% // 或…

js動(dòng)態(tài)設(shè)置關(guān)鍵偵@keyframes

1.前置知識(shí)

關(guān)鍵偵@keyframes規(guī)則通過(guò)在動(dòng)畫(huà)序列中定義關(guān)鍵偵的樣式來(lái)控制CSS動(dòng)畫(huà)序列的中間步驟

@keyframes slidein {from {transform: translateX(0%);}to {transform: translateX(100%);}
}
// from 等價(jià)于 0%;to 等價(jià)與 100%
// 或者
@keyframes slidein {0% {top: 0;left: 0;}30% {top: 50px;}68%,72% {left: 50px;}100% {top: 100px;left: 100%;}
}

注意,如果在CSS中定義了兩個(gè)相同名字的keyframes,后這會(huì)覆蓋前者
在這里插入圖片描述

在這里插入圖片描述
如上圖所示,定義了兩個(gè)相同的動(dòng)畫(huà)偵之后,最終在瀏覽器中應(yīng)用的是后者

2.js動(dòng)態(tài)控制keyframes

背景
在 Vue 項(xiàng)目中由于 css 樣式是直接寫(xiě)在 style 標(biāo)簽中的,那些值都是事先寫(xiě)死的,比如說(shuō)上面的 translateX(disX),disX 是通過(guò) js 動(dòng)態(tài)計(jì)算出來(lái)的。如果要實(shí)現(xiàn)動(dòng)畫(huà)的效果是通過(guò)js動(dòng)態(tài)計(jì)算出來(lái)的,會(huì)比較困難。所以可以通過(guò) js 去設(shè)置 styleSheet 里面的樣式規(guī)則,從而能夠動(dòng)態(tài)的控制 keyframes

StyleSheetjavaScript中表示樣式表的接口,而styleSheet是一個(gè)DOM元素的對(duì)應(yīng)屬性,用于獲取該元素所關(guān)聯(lián)的樣式表

  • 獲取樣式表:通過(guò)styleSheet屬性可以獲取元素關(guān)聯(lián)的樣式表
// 獲取第一個(gè)樣式表
const firstStyleSheet = document.styleSheet[0]
// document.styleSheet 可以理解為一個(gè)二維數(shù)組(但是不是數(shù)組)
// 有多個(gè)樣式表,每個(gè)樣式表中都有多條規(guī)則
  • 插入樣式列表:通過(guò)樣式列表的insertRules方法可以在樣式列表中插入新的規(guī)則
const styleSheet = document.styleSheet[0]
styleSheet.insertRule(`.styleSheetCls { width: 200px; height: 200px}`,0)
// insertRule 方法中的第二個(gè)參數(shù)表示將樣式插入樣式表的哪里
// 這個(gè)規(guī)則會(huì)出現(xiàn)在第一個(gè)樣式表的第一條
  • 刪除樣式規(guī)則:使用樣式表的deleteRule方法可以刪除指定位置的規(guī)則
const styleSheet = document.styleSheet[0]
styleSheet.deleteRule(0)
// 刪除第一個(gè)樣式表的第一條

我們可以通過(guò)styleSheetinsertRule方法動(dòng)態(tài)的添加關(guān)鍵偵樣式

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>動(dòng)態(tài)添加 Keyframes</title><style id="dynamic-styles"></style>
</head>
<body><div id="myDiv"></div><script>// 獲取樣式表// 這里始終將新的 keyframes 規(guī)則添加在第一個(gè)樣式表的第一條const styleSheet = document.styleSheet[0];let dis = 0//... 動(dòng)態(tài)計(jì)算 dis 的值// 動(dòng)態(tài)創(chuàng)建 @keyframesconst keyframesName = 'dynamicAnimation';const keyframesRule = `@keyframes ${keyframesName} {0% { transform: translateX(${dis}px); }25% { transform: translateX(-${dis}px) rotate(0.5deg); }50% { transform: translateX(${dis}px) rotate(-0.5deg); }75% { transform: translateX(-${dis}px) rotate(0.5deg); }100% { transform: translateX(0); }}``@keyframes dynamicAnimation{0% { transform: translateX(5px); }100% { transform: translateX(0); }}`// 每次添加新的規(guī)則之前,可以將之前的規(guī)則給刪除掉,這樣就可以避免第一個(gè)樣式表的規(guī)則里面有多條重復(fù)名稱(chēng)的 keyframes,避免相同名字的 keyframes 前者被后者覆蓋// 獲取第一個(gè)樣式表的第一條規(guī)則的名稱(chēng)const firstRules = styleSheet.rules || styleSheet.cssRules// 這里是以防第一條規(guī)則不是 keyframes 規(guī)則,從而導(dǎo)致獲取 name 失敗const ruleName = firstRules[0].name ? firstRules[0].name : ''if(ruleName === keyframesName) {/*** 這里能夠直接刪除,是因?yàn)槲沂冀K將 keyframes 添加在第一個(gè)樣式表的第一條規(guī)則中* 如果不能確定樣式位置,那么就需要遍歷整個(gè)樣式表,找到目標(biāo)樣式表的位置* document.styleSheet 可以理解為一個(gè)二維數(shù)組(但是不是數(shù)組,不適合使用數(shù)組的遍歷方式進(jìn)行遍歷)* 有多個(gè)樣式表,每個(gè)表中都有多條規(guī)則**/ styleSheet.deleteRule(0)}// 這里始終將新的 keyframes 規(guī)則添加在第一個(gè)樣式表的第一條styleSheet.insertRule(keyframesRule, 0);// 動(dòng)態(tài)應(yīng)用 @keyframesconst myDiv = document.getElementById('myDiv');myDiv.style.animation = `${keyframesName} 2s ease-in-out`;</script>
</body>
</html>
3. 編寫(xiě)技巧
  • 在編寫(xiě)keyframes規(guī)則時(shí),我比較推薦在在style標(biāo)簽中將動(dòng)畫(huà)規(guī)則寫(xiě)好了在復(fù)制到JavaScript邏輯代碼中,因?yàn)槿绻麆?dòng)畫(huà)規(guī)則編寫(xiě)有問(wèn)題,那么在insertRule插入樣式的時(shí)候,可能會(huì)導(dǎo)致樣式表識(shí)別不了
  • 查看是否添加成功,可以在控制臺(tái)打印出來(lái)樣式表,尋找我們添加的規(guī)則,如下圖
    在這里插入圖片描述
    可以看到第一個(gè)樣式表中的第一個(gè)樣式是我們添加的keyframes樣式,并且識(shí)別成功了會(huì)有CSSKeyframesRule的屬性,里面就是我們定義的每一幀的動(dòng)畫(huà)樣式
http://www.risenshineclean.com/news/54807.html

相關(guān)文章:

  • 廣州建筑集團(tuán)股份有限公司杭州seo排名優(yōu)化外包
  • 如何提取網(wǎng)頁(yè)中的視頻seo主要做什么
  • 龍崗區(qū)住房建設(shè)局網(wǎng)站品牌營(yíng)銷(xiāo)方案
  • 云盤(pán)做網(wǎng)站關(guān)鍵詞推廣營(yíng)銷(xiāo)
  • 廈門(mén)網(wǎng)站建設(shè)哪家好優(yōu)化網(wǎng)絡(luò)的軟件
  • 企業(yè)網(wǎng)站建設(shè)webbj免費(fèi)網(wǎng)站優(yōu)化排名
  • 湛江疫情最新通報(bào)五年級(jí)上冊(cè)語(yǔ)文優(yōu)化設(shè)計(jì)答案
  • 什么是網(wǎng)站解決方案武漢網(wǎng)絡(luò)推廣有哪些公司
  • 網(wǎng)站留言評(píng)論功能深圳百度seo代理
  • 網(wǎng)站建設(shè)合同印花稅稅目外鏈?zhǔn)珍浘W(wǎng)站
  • vs2015網(wǎng)站開(kāi)發(fā)教程seo搜索優(yōu)化待遇
  • 青島做網(wǎng)站的公司深圳市前十的互聯(lián)網(wǎng)推廣公司
  • asp網(wǎng)站后臺(tái)安全退出購(gòu)物網(wǎng)站
  • 做網(wǎng)站哪家南京做網(wǎng)站網(wǎng)站關(guān)鍵詞挖掘
  • 網(wǎng)站建設(shè)市場(chǎng)前景體育新聞最新消息
  • 網(wǎng)站沒(méi)有被搜索引擎收錄東莞seo排名公司
  • 愛(ài)情動(dòng)做網(wǎng)站推薦收錄批量查詢(xún)
  • 國(guó)內(nèi)做賭博網(wǎng)站代理怎么樣加快百度收錄的方法
  • 分布式移動(dòng)網(wǎng)站開(kāi)發(fā)技術(shù)一個(gè)品牌的策劃方案
  • 南昌哪里可以做電商網(wǎng)站seo收索引擎優(yōu)化
  • seo策略是什么青島seo推廣
  • 網(wǎng)站開(kāi)發(fā)方向行業(yè)現(xiàn)狀青島網(wǎng)站建設(shè)制作公司
  • 建網(wǎng)站報(bào)價(jià) 優(yōu)幫云web免費(fèi)網(wǎng)站
  • 常州做沙灘旗的公司網(wǎng)站做網(wǎng)絡(luò)優(yōu)化的公司排名
  • 安裝網(wǎng)站系統(tǒng)個(gè)人網(wǎng)絡(luò)銷(xiāo)售平臺(tái)
  • 建設(shè)獨(dú)立服務(wù)器網(wǎng)站成人技能培訓(xùn)
  • 用discuz做的網(wǎng)站代哥seo
  • 中山市飲食網(wǎng)站建設(shè)網(wǎng)站性能優(yōu)化
  • 外貿(mào)行業(yè)建站廣告代運(yùn)營(yíng)公司
  • 網(wǎng)站做多久流量愛(ài)站網(wǎng) 關(guān)鍵詞挖掘