• 单独修改组件库样式/样式穿透/深度选择器


    目录

    一、修改组件库样式方法

    深度选择器的几种写法:

    1.sass和less的样式穿透 使用:(/deep/)

    2. stylus的样式穿透 使用:(>>>)

    3. 通用的样式穿透 使用:(::v-deep)

    二、单独修改当前页面内的单个组件样式

    样式穿透其他场景应用:v-html


    存在问题:

    Ant Design of Vue、Element UI、Vant等各种组件库固然好用,但官方给定的样式却不符合自家ui的设计风格,我们想要修改却又无从下手,改了却又产生连锁反应,当前页面所有含此类的组件元素都会受影响。在实际项目开发中或在面试中常会遇到如何单独修改当前页面单个组件样式,并且不影响当前页面其他组件样式。

    解决方案:

    一、修改组件库样式方法

    使用样式穿透即可修改,样式穿透要用深度选择器来实现。

    首先来介绍此事件的主角 --- 深度选择器

    深度选择器的几种写法:

    1. sass和less的样式穿透 使用:(/deep/)
    2. stylus的样式穿透 使用:(>>>)
    3. 通用的样式穿透 使用:(::v-deep)

    具体使用介绍:

    1.sass和less的样式穿透 使用:(/deep/)

    1. <style lang="scss" scoped>
    2. .AStockOutDetailTable{
    3. /deep/ .ant-table-tbody .ant-table-row td {
    4. padding-top: 8px;
    5. padding-bottom: 8px;
    6. }
    7. 自定义类名 /deep/ .需修改样式的元素身上的组件库自带类名 {
    8. 想要修改的样式
    9. }
    10. 当然前方也可以不写自定义的类名 下方两个同样可不加
    11. /deep/ .需修改样式的元素身上的组件库自带类名 {
    12. 想要修改的样式
    13. }
    14. }
    15. style>

    2. stylus的样式穿透 使用:(>>>)

    1. <style lang="stylus" scoped>
    2. .AStockOutDetailTable >>> .ant-table-tbody .ant-table-row td {
    3. padding-top: 8px;
    4. padding-bottom: 8px;
    5. }
    6. 自定义类名 >>> .需修改样式的元素身上的组件库自带类名 {
    7. 想要修改的样式
    8. }
    9. style>

    3. 通用的样式穿透 使用:(::v-deep)

    1. <style scoped>
    2. ::v-deep .ant-table-tbody .ant-table-row td {
    3. padding-top: 8px;
    4. padding-bottom: 8px;
    5. }
    6. 自定义类名 ::v-deep .需修改样式的元素身上的组件库自带类名 {
    7. 想要修改的样式
    8. }
    9. style>

    二、单独修改当前页面内的单个组件样式

    单独修改当前页面单个组件样式,并且不影响当前页面其他组件样式其实很简单

    首先给需修改样式元素的父元素添加自定义类名,(注:用于限制样式范围,类似于组合选择器的效果)样式穿透时在深度选择器前添加当前元素的父元素类名即可。(注:为何给父元素添加类名?直接给当前元素添加不更好吗?首先当前元素不好获取,即便获取到了后续也要进行复杂操作,所以不推荐)。

    代码实例

    1. <templent>
    2. <div class="particularly" style="width:597px;height:368px;">
    3. <a-checkbox-group @change="onChange" v-model="checkedList">
    4. <a-row>
    5. <a-col :span="8">
    6. <template v-for="item in plainOptions">
    7. <a-checkbox v-if="item != '策略19' && item != '策略20'" :value="item">
    8. {{ item }}
    9. a-checkbox>
    10. <a-checkbox v-else disabled :value="item">
    11. {{ item }}
    12. a-checkbox>
    13. template>
    14. a-col>
    15. a-row>
    16. a-checkbox-group>
    17. div>
    18. templent>
    19. <style scoped>
    20. 此类.particularl 用于限制范围
    21. 控制台中找到需修改的相关类,如.ant-checkbox-wrapper
    22. 限制范围 样式穿透 目标类样式
    23. .particularly >>> .ant-checkbox-wrapper {
    24. min-width: 85px;
    25. height: 32px;
    26. margin: 10px 15px;
    27. padding-left: 4px;
    28. line-height: 32px;
    29. text-align: center;
    30. border-radius: 4px;
    31. background-color: #f2f5fd;
    32. }
    33. 若是较多元素都含有此类,只想修改其中一项的样式,结合css选择器使用即可
    34. .particularly >>> .ant-checkbox-wrapper>div:first-child{}
    35. style>

    样式穿透其他场景应用:v-html

     v-html编译生成的元素要使用深度选择器  >>> 或 ::v-deep 才能添加样式

    1. /* v-html编译生成的元素要使用 >>> 或 ::v-deep 才能添加样式 */
    2. .aaaa::v-deep p img {
    3. width: 100%;
    4. }
    5. .aaaa>>> p img {
    6. width: 100%;
    7. }
    8. .父容器 >>> v-html 生成的元素 {
    9. 样式
    10. }

  • 相关阅读:
    Java数字处理类--数字格式化
    Drogon源码剖析
    如何写一篇提升自己的文章
    如何正确操作封箱机
    洛谷 P1028 [NOIP2001 普及组] 数的计算
    mmclassification 训练自定义数据
    看好多人都在劝退学计算机,可是张雪峰又 推荐过计算机,所以计算机到底是什么样 的?
    微信小程序实现拍照并拿到图片对象功能
    数组与链表算法-单向链表算法
    SpringBoot中最常用的5个内置对象
  • 原文地址:https://blog.csdn.net/TKY666/article/details/127770950