解决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拖拽并简单保存的实现代码
Nov 28 Javascript
jquery控制左右箭头滚动图片列表的实例
May 20 Javascript
jQuery中Ajax的load方法详解
Jan 14 Javascript
jQuery网页右侧广告跟随滚动代码分享
Apr 20 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
May 19 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
Sep 01 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
Mar 04 Javascript
微信小程序如何获知用户运行小程序的场景教程
May 17 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
Jul 13 Javascript
Bootstrap table使用方法记录
Aug 23 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
May 17 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
Aug 03 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
一个改进的UBB类
2006/10/09 PHP
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
PHP使用数组实现矩阵数学运算的方法示例
2017/05/29 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
python用插值法绘制平滑曲线
2021/02/19 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
Python urllib2运行过程原理解析
2020/06/04 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
印度在线杂货店:bigbasket
2018/08/23 全球购物
安踏官方商城:anta.cn
2019/12/16 全球购物
光声世纪笔试题目
2012/08/25 面试题
小学生班会演讲稿
2014/01/09 职场文书
给交警的表扬信
2014/01/12 职场文书
工作自我评价怎么写
2014/01/29 职场文书
集体备课反思
2014/02/12 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书