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 异步调用框架 (Part 4 - 链式调用)
Aug 04 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
Jul 05 Javascript
JavaScript中的函数模式详解
Feb 11 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
Sep 19 Javascript
javascript生成随机数方法汇总
Nov 12 Javascript
JavaScript暂停和继续定时器的实现方法
Jul 18 Javascript
Vue.js每天必学之指令系统与自定义指令
Sep 07 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
Mar 24 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
Sep 28 Javascript
vue2配置scss的方法步骤
Jun 06 Javascript
JavaScript继承的三种方法实例
May 12 Javascript
AJAX实现指定部分页面刷新效果
Oct 16 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
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
实例解析php的数据类型
2018/10/24 PHP
js DOM的学习笔记
2011/12/22 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
页面使用密码保护代码
2013/04/10 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
基于iview的router常用控制方式
2019/05/30 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
Python3实现简单可学习的手写体识别(实例讲解)
2017/10/21 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
火车的故事教学反思
2014/02/11 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
财务人员岗位职责
2015/02/03 职场文书
2015年中个人总结范文
2015/03/10 职场文书
公司员工奖惩制度
2015/08/04 职场文书
小学班级口号大全
2015/12/25 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android
什么是Python装饰器?如何定义和使用?
2022/04/11 Python