Vue scoped

scoped:样式私有化

在vue文件的style标签上添加scoped属性,样式属性只作用于当前组件,不受其他组件样式影响,实现了样式的模块化

组件样式

<template>
  <div class="button-warp">
    <button class="button">text</button>
  </div>
</template>
...
<style scoped>
  .button-warp{
    display:inline-block;
  }
  .button{
    padding: 5px 10px;
    font-size: 12px;
    border-radus: 2px;
  }
</style>

浏览器渲染后

<div data-v-2311c06a class="button-warp">
  <button data-v-2311c06a class="button">text</button>
</div>

.button-warp[data-v-2311c06a]{
  display:inline-block;
}
.button[data-v-2311c06a]{
  padding: 5px 10px;
  font-size: 12px;
  border-radus: 2px;
}

编译过后给dom节点加了一个不重复的data属性来表示唯一性,在css选择器末尾添加了data选择器来实现私有化(深度作用选择器)

虽然scoped实现组件样式私有化,但是由于css优先级的问题,使用scoped导致组件样式权重加重,外部修改组件内部样式需要更高的权重,层级过深会极大增加复杂度

scoped使用:组件样式使用场景单一,几乎不需要来自外部的样式修改

建议给组件最外层标签添加与name相同的class,其他样式通过嵌套的方式写在里面

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值