[Vue]Scoped Css与Css Modules的区别

均为解决CSS全局作用域问题(样式冲突(污染))的一个解决方案。

1.Scoped CSS

当 <style> 标签有 scoped 属性时,相当于在元素中添加了一个唯一属性用来区分

<style scoped>
.example {
  color: red;
}
</style>

<template>
  <div class="example">hi</div>
</template>

它通过使用 PostCSS 来实现以下转换,转换结果:

<style>
.example[data-v-f3f3eg9] {
  color: red;
}
</style>

<template>
  <div class="example" data-v-f3f3eg9>hi</div>
</template>

2.CSS Modules

通过给样式名加hash字符串后缀的方式,实现特定作用域语境中的样式编译后的样式在全局唯一。

<template>
 <p :class="$style.gray">
 Im gray
 </p>
</template>
<style module>
.gray {
 color: gray;
}
</style>

使用module的结果编译如下:

<p class="gray_3FI3s6uz">Im gray</p>
.gray_3FI3s6uz {
 color: gray;
}

由此可见,css module直接替换了类名,排除了用户设置类名影响组件样式的可能性。

推荐使用CSS Modules

详细见官方文档:https://vue-loader.vuejs.org/zh/guide/scoped-css.html#混用本地和全局样式

原文地址:https://www.cnblogs.com/vickylinj/p/9573395.html

时间: 2024-08-29 00:34:53

[Vue]Scoped Css与Css Modules的区别的相关文章

vue项目引入自定义.css的样式文件

ES6的引入方式: .vue文件中 css文件引入 <template></template> <style scoped> @import "../assets/common/common.css";//自定义.css的样式路径 </style> js文件的引入 在main.js中: import API from './assets/api/api.config.js' Vue.prototype.$API = API; P.S.:传

css absolute与relative的区别

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

在Vue中使用 animate.css 库

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>在Vue中使用 animate.css 库</title> <script src="./vue.js"></script> <link rel="stylesheet" type=&qu

3. vue中导入animate.css动画库、Swiper轮播图组件

1. vue中导入animate.css动画库 2. vue中使用Swiper轮播图插件 注意:swiper常用设置 原文地址:https://www.cnblogs.com/qfshini/p/12120612.html

第十一篇:Vue全局配置自定义css与js

全局配置自定义css与js 配置全局css 首先在src下的assets目录下创建css文件夹,用于存放css全局文件 1.在创建好的css文件夹下创建global.css文件,内容如下: html, body { margin: 0; } a { color: black; text-decoration: none; } ul { margin: 0; padding: 0; } 2.在全局入口文件main.js中导入 //1) 配置全局css import '@/assets/css/gl

vue文件单独打包css

单独打包需要使用extract-text-webpack-plugin插件: 我用的[email protected]这个版本,webpack用的webpack2 配置如下: 1.先定义      const ExtractTextPlugin = require('extract-text-webpack-plugin'); 2.配置css和less { test: /\.css$/, use: ExtractTextPlugin.extract({ fallback:'style-loade

Vue与React两个框架的区别对比

简单介绍 React--Facebook创建的JavaScript UI框架.它支撑着包括Instagram在内的大多数Facebook网站.React与当时流行的jQuery,Backbone.js和Angular 1等框架不同,它的诞生改变了JavaScript的世界.其中最大的变化是React推广了Virtual DOM(虚拟DOM)并创造了新的语法--JSX,JSX允许开发者在JavaScript中书写HTML(译者注:即HTML in JavaScript). Vue致力解决的问题与R

奇妙的 CSS shapes(CSS图形)

CSS 发展到今天已经越来越强大了.其语法的日新月异,让很多以前完成不了的事情,现在可以非常轻松的做到.今天就向大家介绍几个比较新的强大的 CSS 功能: clip-path shape-outside shape 的意思是图形,CSS shapes 也就是 CSS 图形的意思,也就是使用 CSS 生成各种图形(圆形.矩形.椭圆.多边形等几何图形). CSS3之前,我们能做的只有矩形,四四方方,条条框框. CSS3 CSS3出来后,我们有了更广阔的施展空间,通过 border-radius bo

Vue与REACT两个框架的区别和优势对比

VUE和REACT两个JavaScript框架都是当下比较受欢迎的,他们两者之间的区别有那些,各自的优缺点是什么,本文将为你呈现. 简单介绍 除非你最近一直不关注前端的发展,不然你肯定听说过由Facebook创建的JavaScript UI框架--REACT.它支撑包括Instagram在内的大多数Facebook网站.REACT与当时流行的jQuery,backbone.js和Angular 等框架不同,它的诞生改变了JavaScript的世界.其中最大的变化是REACT推广了Virtual

HTML/CSS从零开始-CSS基础(二)

一.css定义 (cascading style sheets) 层叠样式表 表现标准语言,对网页信息显示进行控制 二.css的建立 2.1内部建立 (建立在head里用标签<style>)语法:      <head>      <style type="text/css">      div{widtn:300px;height:300px;border:1px solid red;}      </style>      说明:(1