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类库D
Oct 24 Javascript
javascript-简单的计算器实现步骤分解(附图)
May 30 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
Dec 10 Javascript
js 鼠标移动显示图片的简单实例
Dec 25 Javascript
jquery form 隐藏的input 选择
Apr 29 Javascript
js和jquery如何获取图片真实的宽度和高度
Sep 28 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
Jun 10 Javascript
jQuery实现模拟marquee标签效果
Jul 14 Javascript
微信小程序 条件渲染详解
Oct 09 Javascript
ES6教程之for循环和Map,Set用法分析
Apr 10 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
Mar 29 Javascript
详解如何在Canvas中添加事件的方法
Apr 17 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数组是否为空的代码
2011/09/08 PHP
PHP中数组的三种排序方法分享
2012/05/07 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
php组合排序简单实现方法
2016/10/15 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
mysqli扩展无法在PHP7下升级问题的解决
2019/09/10 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
css与javascript跨浏览器兼容性总结
2014/09/15 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
jQuery增加自定义函数的方法
2015/07/18 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
小程序实现列表倒计时功能
2021/01/29 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python使用random和tertools模块解一些经典概率问题
2015/01/28 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
对python 调用类属性的方法详解
2019/07/02 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
什么是.net
2015/08/03 面试题
安全在我心中演讲稿
2014/09/01 职场文书
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技