網站首頁 Vue 正文
Vue.js Class與Style綁定
對于數據綁定,一個常見的需求是操作元素的class列表和它的內聯樣式。因為它們都是attribute,我們可以用v-bind處理它們;只需要計算出表達式最終的字符串。不過,字符串拼接麻煩又易錯。因此,在v-bind用于class和style時,Vue.js專門增強了它。表達式的結果類型除了字符串以外,還可以是對象或數組。
綁定HTML Class
對象語法
我們可以傳給v-bind:class一個對象,以動態地切換class。注意,v-bind:class指令可以與普通的class特性共存。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> </head> <body> <div id="example" class="static" :class=" {'didi-orange': isRipe,'didi-green': isNotRipe}"></div> </body> <script> new Vue({ el: '#example', data: { isRipe: true, isNotRipe: false } }) </script> </html>
當isRipe和isNotRipe變化時,class列表將相應地更新。例如,如果isNotRipe變為true,那么class列表將變為“static didi-orange didi-green”。
注:盡管可以用Mustache標簽綁定class,比如class="{{className}}",但是我們不推薦這種寫法和v-bind:class混用。
我們也可以直接綁定數據中的一個對象。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> </head> <body> <div id="example" :class="ddfe"></div> </body> <script> new Vue({ el: '#example', data: { ddfe: { isRipe: true, isNotRipe: false } } }) </script> </html>
還可以在這里綁定一個返回對象的計算屬性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> </head> <body> <div id="example" :class="ddfe"></div> </body> <script> new Vue({ el: '#example', data: { didiAge: 4, didiMember: 6000 }, computed: { ddfe: function () { return { 'didi-orange': this.didiAge > 3, 'didi-large': this.didiMember > 1000 } } } }) </script> </html>
數組語法
我們可以把一個數組傳給v-bind:class,以應用一個class列表。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> </head> <body> <div id="example" :class="[didiHandsome,didiBeautful]"></div> </body> <script> new Vue({ el: '#example', data: { didiHandsome: 'didiHandsome', didiBeautful: 'didiBeautful' } }) </script> </html>
綁定內聯樣式
對象語法
v-bind:style的對象語法十分直觀——看著非常像CSS,其實它是一個JavaScript對象。CSS屬性名可以用駝峰式或短橫分隔命名。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> </head> <body> <div id="example" :style="{ color: didiColor, fontSize: fontSize + 'px' }"></div> </body> <script> new Vue({ el: '#example', data: { didiColor: 'orange', fontSize: 30 } }) </script> </html>
通常直接綁定到一個樣式對象更好,讓模板更清晰。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> </head> <body> <div id="example" :style="ddfe"></div> </body> <script> new Vue({ el: '#example', data: { ddfe: { color: 'orange', fontSize: '13px' } } }) </script> </html>
同樣的,對象語法常常結合返回對象的計算屬性使用。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> </head> <body> <div id="example" :style="ddfe"></div> </body> <script> new Vue({ el: '#example', data: { didiAge: 4, didiMember: 6000 }, computed: { ddfe: function () { return { color: this.didiAge>3 ? 'orange': 'green', fontSize: this.didiMember>1000 ? '20px': '10px' } } } }) </script> </html>
數組語法
v-bind:style的數組語法可以將多個樣式對象應用到一個元素上。
<div id="example" :style="[ ddfe, didiFamily]"></div>
自動添加前綴
當 v-bind:style 使用需要添加瀏覽器引擎前綴的 CSS property 時,如 transform,Vue.js 會自動偵測并添加相應的前綴。
主流瀏覽器引擎前綴:
-
webkit
(谷歌,Safari,新版Opera瀏覽器,以及幾乎所有iOS系統中的瀏覽器(包括 iOS 系統中的火狐瀏覽器);基本上所有基于WebKit 內核的瀏覽器) -
moz
(火狐瀏覽器) -
o
(舊版Opera瀏覽器) -
ms
(IE瀏覽器 和 Edge瀏覽器)
總結
原文鏈接:https://blog.csdn.net/shi_zi_183/article/details/122457493
相關推薦
- 2023-07-22 BeanFactory和FactoryBean區別
- 2022-09-30 Python測試框架pytest核心庫pluggy詳解_python
- 2023-02-02 C語言多文件編程問題解析_C 語言
- 2022-05-06 linux/mac上如何查看公網ip
- 2022-11-08 uni.showToast和uni.navigateTo不能同時執行 , 怎么解決
- 2022-04-13 .NET5實現操作注冊表的方法_實用技巧
- 2022-09-01 深入了解Golang的指針用法_Golang
- 2022-04-30 C語言實現考勤管理系統_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支