赞
踩
1. 绑定 HTML class
①通过class名称的bool值判断样式是否被启用
<template> <!--通过样式名称是否显示控制样式--> <div :class="{ haveBorder: p.isBorder, 'haveBackground-color': p.isBackgroundcolor }">此处是样式展示区域</div> <br /> <button @click="addBorder">增加边框</button> <br /> <button @click="addBackgroundcolor">增加背景颜色</button> </template> <script setup> //从vue中获取ref方法 import { reactive } from "vue"; name: "App"; //利用v-bind的bool值控制class调用的样式名称是否显示 let p = reactive({ isBorder: false, isBackgroundcolor: false, }); function addBorder() { p.isBorder = true; } function addBackgroundcolor() { p.isBackgroundcolor = true; } </script> <style scoped> .haveBorder { border: 1px solid #000000; } .haveBackground-color { background-color: aqua; } </style>
②样式名称在对象中,html中调用定义的对象
<template> <!--通过样式名称是否显示控制样式--> <div :class="classObject ">此处是样式展示区域</div> <br /> <button @click="addBorder">增加边框</button> </template> <script setup> //从vue中获取ref方法 import { reactive } from "vue"; name: "App"; //利用bool值控制class调用的样式名称是否显示(样式设置成对象) let classObject = reactive({ haveBorder: false, }); function addBorder() { classObject.haveBorder = true; } </script> <style scoped> .haveBorder { border: 1px solid #000000; } </style>
③通过数组绑定
<template> <!--通过样式名称是否显示控制样式--> <div :class="[arrayBorder,arrayBackgroundColor]">此处是样式展示区域</div> </template> <script setup> //从vue中获取ref方法 import { ref } from "vue"; name: "App"; //利用数组绑定样式 let arrayBorder=ref('haveBorder') let arrayBackgroundColor=ref('haveBackground-color') </script> <style scoped> .haveBorder { border: 1px solid #000000; } .haveBackground-color { background-color: aqua; } </style>
④在组件上使用
父组件
<template> <!--通过样式名称是否显示控制样式--> <classtest :class="[arrayBorder, arrayBackgroundColor]" /> </template> <script > //从vue中获取ref方法 import { ref } from "vue"; import classtest from "./components/classtest.vue"; export default { name: "App", components:{ classtest }, //利用数组绑定样式 setup() { let arrayBorder = ref("haveBorder"); let arrayBackgroundColor = ref("haveBackground-color"); return{ arrayBorder, arrayBackgroundColor } }, }; </script> <style scoped> </style>
<template> <!--因为有多个根元素所以使用$attrs属性实现指定接受父组件样式--> <!--多个根元素情况使用父组件传入的样式名称,需在子组件定义样式--> <div :class="$attrs.class">此处是样式展示区域</div> <div>此处不接受父组件传过来的class</div> </template> <script> export default { name:'classtest' } </script> <style> .haveBorder { border: 1px solid #000000; } .haveBackground-color { background-color: aqua; } </style>
2. 绑定内联样式
<template> <div :style="{ border: borderStyle, 'background-color': backgroundcolorStyle }">此处是样式展示区域</div> <br> <div :style="{styleObject , 'font-size':fontSize + 'px'}">此处是样式展示区域</div> <br> <!--你可以对一个样式属性提供多个 (不同前缀的) 值--> <div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div> </template> <script setup> //从vue中获取ref方法 import { ref,reactive } from "vue"; name: "App"; //利用数组绑定样式 let borderStyle=ref('1px solid #000000') let backgroundcolorStyle=ref('aqua') //定义对象形式style let styleObject =reactive({ border:'1px solid #000000' }) //定义字体大小 let fontSize=ref(30) </script> <style scoped> </style>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。