解决vue scoped scss 无效的问题


Posted in Javascript onSeptember 04, 2020

今天遇到scoped内部的scss设置无效,解决办法如下:

/deep/

<style scoped lang="scss">
.position-el-steps {
 /deep/ .el-step.is-vertical {
 .el-step__description {
  margin-top: -20px;
 }
 
 .el-step__line {
  border-left: 2px dashed #c0c4cc;
  background-color: transparent;
  visibility: visible !important;
 }
 }
}

补充知识:【vue scoped 样式修改 】框架或插件组件样式更改及/deep/ 警告

前言

在做vue项目的时候,很多人应该已经碰到在vue 组件中,style 局部修改样式更改不了

<!-- 这个是 B 组件 -->
<template>
 <div>
 <h1 class="my">我是B组件</h1>
 </div>
</template>
<!-- A组件 -->
<template>
 <div class="boxA">
 <A/>
 </div>
</template>
<script>
 import A from './a'
 export default {
 name: 'index',
 components:{
 A
 }
 }
</script>
<style scoped>
 /* 使用 scoped 更改的组件样式。 */
 /*
 此处只是举个栗子使用,没有经过验证。很多人会下面这摸写,但是发现改变不了B组件的样式,其实是 scoped 局部的,所以不能。
 .boxA .my {
 color:red;
 }
 */
 .boxA /deep/ .my {
 color:red;
 }
</style>

修改 vue 插件或者 框架内组件使用

语法: .自己定义的类名 /deep/ .组件内的类名 { /* 代码块 */ }

看下图:

解决vue scoped scss 无效的问题

修改组件样式三种方式

以下例子以 vux 来弄。 /deep/ 和 >>> 在vue中会自动生成选择器的选择属性,你在页面中,会看到控制台中的会有 [data-v-xxxxxx] 的。

注意:在谷歌中,也有这个 /deep/ 中间选择器,但是谷歌放弃这个,如果在你控制台出现下面的图片的警告,证明你写错了,多写了 /deep/ https://www.chromestatus.com/features/4964279606312960

vue /deep/ 警告

解决vue scoped scss 无效的问题

解决方案:只要在页面中去查找下即可,利用vue渲染后会把所有的,会在控制台能看到

解决vue scoped scss 无效的问题

第一种:使用 /deep/

推荐的。看下面例子。注意:使用 cass 和 less 只能使用 /deep/ 这个方法

<template>
 <div class="box-out">
 <step v-model="step1" background-color='#fbf9fe'>
  <step-item title="步骤一" description="step 1"></step-item>
  <step-item title="步骤二" description="step 2"></step-item>
  <step-item title="步骤三" description="step 3"></step-item>
 </step>
 </div>
</template>

<script>
import { Step, StepItem, XButton, XHr } from 'vux'
export default {
 name: 'box',
 data () {
 return {
  step1: 1,
  step2: 0
 }
 },components: {
  Step,
  StepItem,
  XButton,
  XHr
 }
}
</script>

<style scoped>
 /*
 修改样式
 通过使用 box-out 的class类,找到下面组件内的class类,中间必须得使用 /deep/ 才能找到下面的class类。
 */
 .box-out /deep/ .xxxxx组件样式类 {
 color: red;
 }
</style>

方法二:使用 >>>

使用这三个大于号就可以找到,跟上面的 /deep/ 差不多。

<template>
 <div class="box-out">
 <step v-model="step1" background-color='#fbf9fe'>
  <step-item title="步骤一" description="step 1"></step-item>
  <step-item title="步骤二" description="step 2"></step-item>
  <step-item title="步骤三" description="step 3"></step-item>
 </step>
 </div>
</template>

<script>
import { Step, StepItem, XButton, XHr } from 'vux'
export default {
 name: 'box',
 data () {
 return {
  step1: 1,
  step2: 0
 }
 },components: {
  Step,
  StepItem,
  XButton,
  XHr
 }
}
</script>

<style scoped>
 /*
 修改样式
 通过使用 box-out 的class类,找到下面组件内的class类,中间必须得使用 >>> 才能找到下面的class类。
 */
 .box-out >>> .xxxxx组件样式类 {
 color: red;
 }
</style>

方法三:使用全局样式表(不推荐)

前面两种方式是都是局部的(推荐),也是可以通过全局样式表改,当然记得在外面添加命名空间(不懂css 的命名空间的话,自行百度)。这个推不推荐的得看个人。希望能够根据业务需求进行增加修改。

<!-- 情况下,引入全局得样式,或者是直接在 app.vue 文件中写全局得。下面是在全局得app.vue中写 -->
<template>
 <div id="app">
 <router-view/>
 </div>
</template>

<script>
export default {
 name: 'App'
}

</script>

<style>
/* 上面没加 scoped 属性,所以全局样式 */ 
.box-out .xxxxx组件样式类 {
 color: red;
 }
</style>

另外说点其他技巧

如果在浏览器中,看到当前的 vue组件属性 [data-v-xxxxxx] 的话,那么可以直接拿过来使用,碧如下面:

解决vue scoped scss 无效的问题

以上这篇解决vue scoped scss 无效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用jquery实现div的tab切换实例代码
May 27 Javascript
返回上一页并自动刷新的JavaScript代码
Feb 19 Javascript
使用jquery.qrcode生成彩色二维码实例
Aug 08 Javascript
jquery实现的仿天猫侧导航tab切换效果
Aug 24 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
Nov 02 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
Dec 05 Javascript
Javascript中return的使用与闭包详解
Jan 11 Javascript
vue+vue-router转场动画的实例代码
Sep 01 Javascript
微信小程序自定义单项选择器样式
Jul 25 Javascript
Vue使用NProgress的操作过程解析
Oct 10 Javascript
Javascript confirm多种使用方法解析
Sep 25 Javascript
vuex Module将 store 分割成模块的操作
Dec 07 Vue.js
vue-admin-template配置快捷导航的代码(标签导航栏)
Sep 04 #Javascript
基于vue中的scoped坑点解说
Sep 04 #Javascript
VUE : vue-cli中去掉路由中的井号#操作
Sep 04 #Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
Sep 04 #Javascript
vue-cli3中配置alias和打包加hash值操作
Sep 04 #Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
Sep 04 #Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
Sep 04 #Javascript
You might like
php获取QQ头像并显示的方法
2014/12/23 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
js 分栏效果实现代码
2009/08/29 Javascript
判断用户是否在线的代码
2011/03/05 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
Python中用Spark模块的使用教程
2015/04/13 Python
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
曼城官方网上商店:Manchester City
2019/09/10 全球购物
简历中自我评价范文3则
2013/12/14 职场文书
工作自我推荐信范文
2015/03/25 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
导游词之河北野三坡
2019/12/11 职场文书
MySQL基于索引的压力测试的实现
2021/11/07 MySQL