vue 之 css module的使用方法


Posted in Javascript onDecember 04, 2018

前言

最近学习webpack看到了一个新鲜的东西,之前都是通过scoped来区别类名,秉着任何时候学习都不晚的心情,作为小白的我也想揭揭css module的神秘面纱。

css module目的为所有类名重新生成类名,有效避开了css权重和类名重复的问题。相比于scoped为类名添加一个hash标识效果优秀不少,但相对的书写会繁琐一些。

项目基于cli3搭建,讲真的,我也是被cli3鬼迷心窍了。相比2的繁琐,3提供界面管理对我这样子的小白确实直观很多,而且需要配置vue.config.js也十分合适呢。

开工

动手之前先配置项目,网上很多文章说需要下载css-loader插件,Vue中的vue-loader已经集成了 CSS Modules,因此删掉也能正常运行

在vue.config.js中添加如下配置

css: {
 loaderOptions: {
  css: {
  localIdentName: '[name]__[local]-[hash:base64:5]',
  camelCase: true
  }
 }
 }
  • localIdentName是格式化类名:name是当前文件名称,local是当前定义的类名名,hash是hash生成的字符串,长度为5
  • camelCase:在类名有中横线时,'only'在标签上绑定类名时只支持大驼峰,true:支持大驼峰也支持中括号命名

特别注意:css module所有类名都要:class进行绑定

<div>
 <p class="less-color">这是通过less设置的:global字体颜色为粉色</p>
 <p :class="$style.lessFontSize">这是通过less设置的:local字体大小为40px</p>
 <p :class="$style.red">This should be red</p>
 <h4 :class="$style.headerTit">类别推荐</h4>
 <h4 :class="$style['header-tit']">类别推荐</h4>
</div>

样式表需要添加module,可以通过console.log(this.$style);输出当前所有的:local { }类名。默认是:local { },即:local前缀是可以省略的,若要全局类名则资额在:global { }内

<style module lang="less">
:global {
 .less-color {
 color: pink;
 }
}
:local {
 .less-font-size {
 font-size: 40px;
 }
 .red {
 color: red;
 }
 .header-tit {
 color: blue;
 }
}
</style>

效果

和配置一样:当前文件名称,local是当前定义的类名名,hash是hash生成的字符串,长度为5;true:支持大驼峰也支持中括号命名

<div>
 <p class="less-color">这是通过less设置的:global字体颜色为粉色</p>
 <p class="index__less-font-size-2QPBO">这是通过less设置的:local字体大小为40px</p>
 <p class="index__red-3YoIm">This should be red</p>
 <h4 class="index__header-tit-3pTz4">类别推荐</h4>
 <h4 class="index__header-tit-3pTz4">类别推荐</h4>
</div>

后记

过程还是蛮曲折的,小白就是道阻且长啊,不过我相信积少成多,会有蜕变的一天的。

附: vue css module 官方文档

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中的其他对象
Jan 16 Javascript
Javascript让DEDECMS告别手写Tag
Sep 01 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
Sep 04 Javascript
javascript消除window.close()的提示窗口
May 20 Javascript
JavaScript中String.match()方法的使用详解
Jun 06 Javascript
充分发挥Node.js程序性能的一些方法介绍
Jun 23 Javascript
基于javascript实现彩票随机数生成(升级版)
Apr 17 Javascript
jquery插件EasyUI中form表单提交实例分享
Jan 11 Javascript
AngularJS ng-blur 指令详解及简单实例
Jul 30 Javascript
Angular之指令Directive用法详解
Mar 01 Javascript
详解Vue CLI3 多页应用实践和源码设计
Aug 30 Javascript
JavaScript Math对象和调试程序的方法分析
May 13 Javascript
Vue源码解析之数组变异的实现
Dec 04 #Javascript
小程序指纹验证的实现代码
Dec 04 #Javascript
js实现下拉框二级联动
Dec 04 #Javascript
解决JS表单验证只有第一个IF起作用的问题
Dec 04 #Javascript
详解基于Vue,Nginx的前后端不分离部署教程
Dec 04 #Javascript
浅析Vue.js中v-bind v-model的使用和区别
Dec 04 #Javascript
在vue项目中优雅的使用SVG的方法实例详解
Dec 03 #Javascript
You might like
用定制的PHP应用程序来获取Web服务器的状态信息
2006/10/09 PHP
PHP新手上路(十一)
2006/10/09 PHP
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
javascript 文件的同步加载与异步加载实现原理
2012/12/13 Javascript
js获取系统的根路径实现介绍
2013/09/08 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
python 字典(dict)按键和值排序
2016/06/28 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
Python如何调用外部系统命令
2019/08/07 Python
Python更新所有已安装包的操作
2020/02/13 Python
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
社会学专业学生职业规划书
2014/02/07 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android