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 相关文章推荐
日期函数扩展类Ver0.1.1
Sep 07 Javascript
javascript 动态添加事件代码
Nov 30 Javascript
javascript实现页面内关键词高亮显示代码
Apr 03 Javascript
Node.js的npm包管理器基础使用教程
May 26 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
Jul 14 Javascript
详解微信小程序——自定义圆形进度条
Dec 29 Javascript
jQuery手风琴的简单制作
May 12 jQuery
JS+HTML+CSS实现轮播效果
Nov 28 Javascript
Vue.js更改调试地址端口号的实例
Sep 19 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
Sep 02 Javascript
vue 限制input只能输入正数的操作
Aug 05 Javascript
如何利用js在两个html窗口间通信
Apr 27 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边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
ThinkPHP空模块和空操作详解
2014/06/30 PHP
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
python urllib爬取百度云连接的实例代码
2017/06/19 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
Python基于smtplib协议实现发送邮件
2020/06/03 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
为什么会有内存对齐
2016/10/10 面试题
科研先进个人典型材料
2014/01/31 职场文书
简历中自我评价怎么写
2014/02/12 职场文书
公司寄语大全
2014/04/10 职场文书
升职演讲稿范文
2014/05/23 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
公司年会晚会开幕词
2019/04/02 职场文书