Vue3 CSS渲染

 1. style 中使用v-bind

不支持响应式渲染

 1 <template>
 2   <p class="msg">Hello World!</p>
 3 </template>
 4 
 5 <script lang="ts">
 6 import { defineComponent, ref } from 'vue'
 7 
 8 export default defineComponent({
 9   setup () {
10     const fontColor = ref<string>('#ff0000')
11 
12     return {
13       fontColor,
14     }
15   }
16 })
17 </script>
18 
19 <style scoped>
20 .msg {
21   color: v-bind(fontColor);
22 }
23 </style>

 

2.  :style 动态修改内联样式

 1 <template>
 2   <p
 3     :style="[style1, style2]"
 4   >
 5     Hello World!
 6   </p>
 7 </template>
 8 
 9 <script lang="ts">
10 import { defineComponent } from 'vue'
11 
12 export default defineComponent({
13   setup () {
14     const style1 = {
15       fontSize: '13px',
16       'line-height': 2,
17     }
18     const style2 = {
19       color: '#ff0000',
20       textAlign: 'center',
21     }
22 
23     return {
24       style1,
25       style2,
26     }
27   }
28 })
29 </script>

 

3.  动态绑定CSS

 1 <template>
 2   <p
 3     :class="[
 4       { activeClass1: isActive },
 5       { activeClass2: !isActive }
 6     ]"
 7   >
 8     Hello World!
 9   </p>
10 </template>
11 <script lang="ts">
12 import { defineComponent } from 'vue'
13 
14 export default defineComponent({
15   setup () {
16     const activeClass = 'active-class'
17     const activeClass1 = 'active-class1'
18     const activeClass2 = 'active-class2'
19     const isActive = true
20 
21     return {
22       activeClass,
23       activeClass1,
24       activeClass2,
25       isActive,
26     }
27   }
28 })
29 </script>

 

4. 防止CSS样式全局污染

scoped

1 <style scoped>
2 .msg {
3   width: 100%;
4 }
5 .msg p {
6   color: #333;
7   font-size: 14px;
8 }
9 </style>

style module

1 <template>
2   <p :class="$style.msg">Hello World!</p>
3 </template>
4 
5 <style module>
6 .msg {
7   color: #ff0000;
8 }
9 </style>
  自定义module名
1 <template>
2   <p :class="classes.msg">Hello World!</p>
3 </template>
4 
5 <style module="classes">
6 .msg {
7   color: #ff0000;
8 }
9 </style>
useCssModule
 1 <template>
 2   <div v-html="content"></div>
 3 </template>
 4 
 5 <script lang="ts">
 6 import { defineComponent, useCssModule } from 'vue'
 7 
 8 export default defineComponent({
 9   setup () {
10     // 获取样式
11     const style = useCssModule()
12 
13     // 编写模板内容
14     const content = `<p class="${style.msg}">
15       <span class="${style.text}">Hello World! —— from v-html</span>
16     </p>`
17 
18     return {
19       content,
20     }
21   }
22 })
23 </script>
24 
25 <style module>
26 .msg {
27   color: #ff0000;
28 }
29 .text {
30   font-size: 14px;
31 }
32 </style>

 

来自于: https://vue3.chengpeiquan.com/component.html#usecssmodule-new

posted @ 2022-07-09 11:25  googlegis  阅读(285)  评论(0编辑  收藏  举报

坐标合肥,非典型GIS开发人员 GitHub