運用CSS變數
運用CSS變數
使用方法
正確的用法
:root{
--JC_Color:"#ff0"; /*定義變數*/
--JC_Img_Url:"url(https://taobao.com/jc.png)";/*定義背景圖片*/
--JC_TRS:"translateY(0)";/*定義CSS3變換*/
}
.elmA{
color:var(--JC_Color);/*使用變數*/
background-image:var(--JC_Img_Url)/*使用背景圖片變數*/
transform:var(--JC_TRS);/*使用CSS3變換*/
}
容易犯錯的用法
下面的用法是錯誤的:
:root{
--JC_Img_Url:"https://taobao.com/jc.png";/*定義背景圖片*/
--JC_TRS:"0";/*定義CSS3變換*/
}
.elmA{
background-image:url(var(--JC_Img_Url))/*使用背景圖片變數*/
transform:translateY(var(--JC_TRS));/*使用CSS3變換*/
}
Javascript設定CSS變數
documentElement.style.setProperty("--JC_Img_Url","url(https://taobao.com/jc.png)")
Javascript獲取CSS變數
documentElement.style.getPropertyValue("--JC_Img_Url")
其他
作用域
CSS變數是存在作用域的,作用域是針對DOM節點的。
.elmA{
--JC_Color:"#f11";
}
/*在非 .elmA 節點下的DOM節點無法獲取變數 --JC_Color 的值*/
:root{
color:var(--JC_Color); /*失效值*/
}
可覆蓋
:root{
--JC_Color:"#f00";
}
body .elmA{
--JC_Color:"#f11";
}
/*
* JS 設定
*/
document.querySellector(`.elmA`).style.setProperty("--JC_Color","#f12")
/*
*會使用在當前節點定義的值
*這意味著可以設定預設值了
**/
.elmA{
color:var(--JC_Color); /*#f12*/
}
一個簡單的封裝
class CssVar {
/**
* 針對某一Dom節點的某個CSS變數值進行設定
* 包括了獲取、設定和刪除
* next:可以針對背景圖片、transform等進行再次封裝,讓其使用更簡單
* @param {Object} param0 配置
*/
constructor({elm,name,value}){
this.name = `--${name}`
this._elm = elm || document.documentElement
this.set(value)
}
set(value){
this._elm.style.setProperty(this.name,value)
}
get(){
return this._elm.style.getPropertyValue(this.name).trim()
}
selfDestruction(){
this._elm.style.removeProperty(this.name)
}
}
一個簡單的Demo
list 插入動畫。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
:root{
--Item_TranslateY: translateY(100%);
--Item_Opacity: 0;
}
.list{
overflow:hidden;
position: relative;
}
.item{
transition: all 1s;
opacity: var(--Item_Opacity);
transform: var(--Item_TranslateY)
}
</style>
</head>
<body style="height:100%;padding:0;margin:0">
<button id="inputLi">插入</button>
<ul class="list" id="list"></ul>
<script>
class CssVar {
/**
* 針對某一Dom節點的某個CSS變數值進行設定
* 包括了獲取、設定和刪除
* next:可以針對背景圖片、transform等進行再次封裝,讓其使用更簡單
* @param {Object} param0 配置
*/
constructor({elm,name,value}){
this.name = `--${name}`
this._elm = elm || document.documentElement
this.set(value)
}
set(value){
this._elm.style.setProperty(this.name,value)
}
get(){
return this._elm.style.getPropertyValue(this.name).trim()
}
selfDestruction(){
this._elm.style.removeProperty(this.name)
}
}
</script>
<script>
function insertItem(){
let id = (+new Date).toString(32)
let html = `<li class="item" id="${id}">我是列表</li>`
window.list.innerHTML += html
let item = window[id]
// 觸發動畫
setTimeout(v=>{
new CssVar({
elm:item,
name:"Item_TranslateY",
value:0
})
new CssVar({
elm:item,
name:"Item_Opacity",
value:1
})
},50)
}
window.inputLi.onclick = function(){
insertItem()
}
</script>
</body>
</html>
相關文章
- 運用clip-path的純CSS形狀變換CSS
- 巧妙運用clip-path,實現CSS形狀變換CSS
- CSS基礎:CSS變數簡介CSS變數
- Shell階段02 shell變數運算(整數運算/小數運算), shell變數案例變數
- unocss如何使用css變數CSS變數
- JavaScript 3/30: CSS變數JavaScriptCSS變數
- CSS 變數自動變色技術CSS變數
- 【CSS】我如何解釋CSS變數的好CSS變數
- 在原生CSS中使用變數CSS變數
- CSS 自定義屬性(變數)CSS變數
- 變數,運算子,if判斷變數
- [譯] CSS 變數和 JavaScript 讓應用支援動態主題CSS變數JavaScript
- 使用 CSS 自定義屬性(變數)CSS變數
- Vue3 style CSS 變數注入VueCSS變數
- 通過CSS變數修改樣式CSS變數
- JavaScript五:全域性變數&區域性變數;運算子JavaScript變數
- 1.變數和運算子變數
- CSS變數的作用域和預設值CSS變數
- CSS變數var()語法和用法和特性CSS變數
- CSS變數(自定義屬性)實踐指南CSS變數
- webapp中如何運用CSS3動畫WebAPPCSSS3動畫
- 如何讓CSS計數器支援小數的動態變化?CSS
- CSS Var 自定義屬性中使用 Scss 變數CSS變數
- 利用css變數實現按鈕懸浮效果CSS變數
- 學習如何用CSS變數建立網頁響應佈局 — css var()CSS變數網頁
- jquery 對css和js的匯入和運用jQueryCSSJS
- 附個人工作程式碼 條件變數深度運用、互斥鎖+訊號量變數
- 在VsCode中幫你自動完成CSS變數的外掛:CSS Var CompleteVSCodeCSS變數
- js修改css變數值實現主題切換JSCSS變數
- 如何透過css變數實現主題切換?CSS變數
- js_獲取與設定css變數的值JSCSS變數
- 使用內聯CSS 變數,提高靈巧佈局效率!CSS變數
- 利用CSS變數實現炫酷的懸浮效果CSS變數
- 為什麼 Vue3 選擇了 CSS 變數VueCSS變數
- [譯] CSS 變數實現炫酷滑鼠懸浮效果CSS變數
- [譯] CSS 變數 + calc + rgb = 自動高對比度CSS變數
- 矩陣的乘法運算與css的3d變換(transform)矩陣CSS3DORM
- css 字型漸變CSS