死亡是一座永恒的灯塔

0%

vue中修改css属性无效

问题描述

vue中修改css属性无效,img设置的宽度无效,p设置的颜色有效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<template>
<div>
<carousel></carousel>
<p> 555555</p>
</div>
</template>

<script>
import carousel from './carousel.vue';
export default {
name: "home",
components: {
carousel
}
}
</script>

<style rel="stylesheet/scss" lang="scss" scoped>

img{
width: 100%;
}
p{
color: red;
}
</style>

问题解决过程

使用F12代码调试
elements页面,发现img的宽度属性没有覆盖,甚至没有出现,不是权重的问题。
查看sources,发现css文件里面有我编写的img宽度属性,不是scss编译的问题。

尝试使用其他标签选择器修改属性,发现修改p标签的属性有效,观察他们两个的区别,发现template中没有img标签,猜测可能时该css只能修改当前组件的属性。

问题出现原因

没有仔细查看官方文档,scoped表示当前style只对当前组件有效,避免组件间样式相互影响

1
2
<style scoped>
</style>

问题解决方案

  • 去除scoped
  • 在对应组件修改img属性
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <template>
    <a-carousel arrows>
    <div
    slot="prevArrow"
    slot-scope="props"
    class="custom-slick-arrow"
    style="left: 10px;zIndex: 1"
    >
    <a-icon type="left-circle" />
    </div>
    <div slot="nextArrow" slot-scope="props" class="custom-slick-arrow" style="right: 10px">
    <a-icon type="right-circle" />
    </div>
    <div><img src="https://btsstatic.oss-cn-shanghai.aliyuncs.com/official/about1.jpg"></img></div>
    <div><img src="https://btsstatic.oss-cn-shanghai.aliyuncs.com/official/about1.jpg"></img></div>
    <div><img src="https://btsstatic.oss-cn-shanghai.aliyuncs.com/official/about1.jpg"></img></div>
    <div><img src="https://btsstatic.oss-cn-shanghai.aliyuncs.com/official/about1.jpg"></img></div>
    </a-carousel>
    </template>
    <script>
    export default {};
    </script>
    <style scoped>
    /*样式覆盖*/
    img{
    width: 100%;
    }
    /* For demo */
    .ant-carousel >>> .slick-slide {
    text-align: center;
    height: 160px;
    line-height: 160px;
    background: #364d79;
    overflow: hidden;
    }

    .ant-carousel >>> .custom-slick-arrow {
    width: 25px;
    height: 25px;
    font-size: 25px;
    color: #fff;
    background-color: rgba(31, 45, 61, 0.11);
    opacity: 0.3;
    }
    .ant-carousel >>> .custom-slick-arrow:before {
    display: none;
    }
    .ant-carousel >>> .custom-slick-arrow:hover {
    opacity: 0.5;
    }

    .ant-carousel >>> .slick-slide h3 {
    color: #fff;
    }
    </style>

感想

还是对解决问题的流程不够熟悉,导致解决问题耗费过长的时间。

  1. 确认Bug是否在本地可以重现。
  2. 确认Bug在哪一段代码中。
  3. 去除掉所有无关代码,只去调试和Bug相关的代码。
  4. 和之前正常运行的版本对比,尝试恢复到之前可以正常运行的代码。
  5. 重新写一个小Demo,确认是否可以正常运行,可以的话,移动代码到原有的代码中。
  6. 如果本地无法重现,打日志,观察线上行为。
  7. 重启服务,重启IDE,重启笔记本,重启服务器。
  8. 跟产品经理说这个Bug解决不了,花费的代价很大,不值得。
坚持技术分享,您的支持将鼓励我继续创作!