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系统错误:-1072896658的解决办法
Jul 08 Javascript
js调试系列 控制台命令行API使用方法
Jun 18 Javascript
javascript中声明函数的方法及调用函数的返回值
Jul 22 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
Sep 26 Javascript
JS中处理时间之setUTCMinutes()方法的使用
Jun 12 Javascript
有关jQuery中parent()和siblings()的小问题
Jun 01 Javascript
Javascript中级语法快速入手
Jul 30 Javascript
AngularJS控制器详解及示例代码
Aug 16 Javascript
详解react如何在组件中获取路由参数
Jun 15 Javascript
vue cli构建的项目中请求代理与项目打包问题
Feb 26 Javascript
使用Vue动态生成form表单的实例代码
Apr 26 Javascript
详解Node.JS模块 process
Aug 31 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连接Oracle数据库
2006/10/09 PHP
php中请求url的五种方法总结
2017/07/13 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
vue中的适配px2rem示例代码
2018/11/19 Javascript
基于iview的router常用控制方式
2019/05/30 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
深入理解Python中range和xrange的区别
2017/11/26 Python
Python中的Numpy矩阵操作
2018/08/12 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
python基于openpyxl生成excel文件
2020/12/23 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
国外软件测试工程师面试题
2016/12/09 面试题
大学生最常用的自我评价
2013/12/07 职场文书
服务宗旨标语
2014/07/01 职场文书
医德考评自我评价
2014/09/14 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
交警失职检讨书
2015/01/26 职场文书
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python