解决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 相关文章推荐
JS BASE64编码 window.atob(), window.btoa()
Mar 09 Javascript
javascript数组使用调用方法汇总
Dec 08 Javascript
Jquery取得iframe下内容的方法
Nov 18 Javascript
javascript实现文本域写入字符时限定字数
Feb 12 Javascript
父节点获取子节点的字符串示例代码
Feb 26 Javascript
Underscore源码分析
Dec 30 Javascript
AngularJS入门教程之链接与图片模板详解
Aug 19 Javascript
JS仿JQuery选择器功能
Mar 08 Javascript
vue通过watch对input做字数限定的方法
Jul 13 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
Nov 27 jQuery
在Vue项目中引入JQuery-ui插件的讲解
Jan 27 jQuery
Bootstrap table 实现树形表格联动选中联动取消功能
Sep 30 Javascript
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警告错误信息的解决方法
2013/06/03 PHP
php魔术变量用法实例详解
2014/11/13 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
2017/12/18 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
Django中使用group_by的方法
2015/05/26 Python
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
Python3实现Web网页图片下载
2016/01/28 Python
Python遍历文件夹和读写文件的实现代码
2016/08/28 Python
Python实现Logger打印功能的方法详解
2017/09/01 Python
python实现共轭梯度法
2019/07/03 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
python空元组在all中返回结果详解
2020/12/15 Python
银行职业规划书范文
2013/12/28 职场文书
运动会广播稿500字
2014/01/28 职场文书
优秀员工事迹材料
2014/12/20 职场文书
司考复习计划
2015/01/19 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
学校捐书活动总结
2015/05/08 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
python神经网络Xception模型
2022/05/06 Python