Vue中的作用域CSS和CSS模块的区别(6)
这个时候编译出来的结果如下:
如上图所示,当 data 中的 isLg 属性值为 true 时, Larger Button 按钮的 padding 变了,按钮也同时变大了。除此之外,我们还可以通过 props 将 class 传到子组件中。比如像下面这样使用:
<!-- Button.vue --> <template> <button :class="[$style.btn, primaryClass]">{{msg}}</button> </template> <script> export default { name: 'Button', props: { msg: String, primaryClass: '' } } </script> <style module> .btn { border: 1px solid #ccc; border-radius: 3px; padding: 5px 15px; background: #fefefe; margin: 5px; } </style> <!-- App.vue --> <template> <div id="app"> <Button msg="Default Button" /> <Button :class="{[$style['btn-lg']]: isLg}" msg="Larger Button" /> <Button :class="{[$style['btn-sm']]: isSm}" msg="Smaller Button" /> <Button msg="Primary Button" :primaryClass="$style['btn-primary']" /> </div> </template> <script> import Button from './components/Button' export default { name: 'app', components: { Button }, data () { return { isLg: true, isSm: false } } } </script> <style module> .btn-lg { padding: 15px 30px; } .btn-sm { padding: 5px; } .btn-primary { background: rgb(54, 152, 244); border-color: rgb(32, 108, 221); color: #fff; } </style>
编译出来的效果如下图所示:
如果我们想要在JavaScript里面将独立的CSS文件作为CSS模块来加载的话,需要在 .css 文件名前添加 .module 前缀,比如: