在.vue文件里使用less,使用extend继承的样式没有生效?

<style lang="less" scoped>
@import "../../../assets/styles/varibles.less";
.header {****
  .header-content {
    width: 7.3rem;
    height: 1.6rem;
    margin: 0 auto;
    margin-bottom: -1rem; 
    background: @bgc-yellow;
    display: flex;
    
    .header-left {
      width: 1.58rem;
      height: 100%;
      font-size: 0.8rem;
      text-align: center;
      color: #fff;
      float: left;
    }
    .header-search {
      flex: 1;
      background-color: #fff;
      border-radius: 0.8rem;
      height: 0.62rem;
      font-size: .28rem ;
      line-height: .62rem;
      float: left;
      white-space: nowrap;
      padding-left: 0.15rem;
    }
    .header-right:extend(.header-left) {
      width: 0.8rem;
      float: right;
    }
  }
}
</style>
阅读 7.4k
5 个回答

是不是样式冲突了,导致你继承看上去没生效

新手上路,请多包涵

请问找到原因了吗

css 引用
@前面要加 ~

~@import "../../../assets/styles/varibles.less";
新手上路,请多包涵

需要将继承这段样式放在style的最外层才可以,不要包裹在其他嵌套样式中

<style lang="less" scoped>

.header-right:extend(.header-left) {
      width: 0.8rem;
      float: right;
    }
</style>
新手上路,请多包涵

scoped 导致样式匹配规则失效 父组件引入是包含一个_scopeId值 所以父组件的样式都是 .xx[data-v-fatherxxx] 子组件的的_scopeId值为data-v-childxxx 所以样式规则不匹配

这里提供一个hack方法
const component = {
extends: Plan
}

Object.defineProperty(component, '_scopeId', {
get: () => Plan._scopeId,
set: () => {}
})

export default component

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题