解决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基础知识小结
Dec 22 Javascript
实现前后端数据交互方法汇总
Apr 07 Javascript
js实现仿爱微网两级导航菜单效果代码
Aug 31 Javascript
jQuery的ajax下载blob文件
Jul 21 Javascript
js实现StringBuffer的简单实例
Sep 02 Javascript
自己封装的一个简单的倒计时功能实例
Nov 23 Javascript
Bootstrap3下拉菜单的实现
Feb 22 Javascript
JS正则表达式验证中文字符
May 08 Javascript
在使用JSON格式处理数据时应该注意的问题小结
May 20 Javascript
js处理包含中文的字符串实例
Oct 11 Javascript
Vue-Router的使用方法
Sep 05 Javascript
详解webpack-dev-server使用方法
Sep 14 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 变量的定义方法
2010/01/26 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
2019/10/23 PHP
PHP7 新增功能
2021/03/09 PHP
学习ExtJS fit布局使用说明
2009/10/08 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
Vue程序调试的方法
2019/06/17 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
Python脚本实现代码行数统计代码分享
2015/03/10 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
python 调用c语言函数的方法
2017/09/29 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
python mock测试的示例
2020/10/19 Python
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
军训自我鉴定
2013/12/14 职场文书
庆中秋节主题活动方案
2014/02/03 职场文书
网络编辑岗位职责
2014/03/18 职场文书
还款承诺书范文
2014/05/20 职场文书
高中生旷课检讨书
2014/10/08 职场文书
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技
一文搞懂MySQL索引页结构
2022/02/28 MySQL