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 相关文章推荐
jquery下操作HTML控件的实现代码
Jan 12 Javascript
javascript开发技术大全 第4章 直接量与字符集
Jul 03 Javascript
jQuery EasyUI API 中文文档 搜索框
Sep 29 Javascript
禁止拷贝网页内容的js代码
Jan 22 Javascript
JavaScript中getUTCSeconds()方法的使用详解
Jun 11 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
Dec 08 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
Sep 28 Javascript
layui实现table加载的示例代码
Aug 14 Javascript
微信小程序之swiper滑动面板用法示例
Dec 04 Javascript
React 使用recharts实现散点地图的示例代码
Dec 07 Javascript
js实现拾色器插件(ColorPicker)
May 21 Javascript
Vue router安装及使用方法解析
Dec 02 Vue.js
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递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
python访问类中docstring注释的实现方法
2015/05/04 Python
python 执行shell命令并将结果保存的实例
2018/05/11 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
python多线程与多进程及其区别详解
2019/08/08 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
露营世界:Camping World
2017/02/02 全球购物
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
一套带网友答案的.NET笔试题
2016/12/06 面试题
什么时候用assert
2015/05/08 面试题
应届大学生求职的自我评价
2013/11/17 职场文书
机电一体化求职信
2014/03/10 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
毕业生银行实习自我鉴定
2014/10/14 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
Python socket如何解析HTTP请求内容
2022/02/12 Python