vue vux x-header组件的返回图标颜色修改

业务场景:自己在x-header的基础上再封装了一下,要求根据父页面传来的参数设置x-header的标题背景色、标题字色和返回颜色

动态修改背景色比较简单

<template>
    <x-header :style='backColor'>
    </x-header>
</template>

data () {
  return {
  backColor: {
    backgroundColor: '#fff' //默认白色
  }
}
mounted () {
    //一些条件...
    this.backColor = {backgroundColor: this.cHeaderColor}
}

动态修改字体的话方法稍微有点寒碜了,需要直接操作dom了

mounted () {
    //一些条件...
    let headColor = document.getElementsByClassName('vux-header-title')[0]
    headColor.style.color = '#fff'
}

最头疼的就是修改修改返回图标的颜色了,因为这是一个before伪元素,用第二种方法也行不通,搜"left-arrow::before"是undefine。

网上搜了js怎么修改伪元素样式发现要用到removeClass()和addClass(),然后发现报错,

当时我是用的document 按照类名获取出来的元素去addClass,最后才发现这个东西不是这么用的(因为没怎么用过JQuery,基础还不够),后来吭哧吭哧按照教程引入了JQuery

$('.left-arrow').removeClass('left-arrow').addClass('returnIcon')

这边就是把left-arrow的样式复制以下然后修改里面的before里的border-color为你要的颜色

.returnIcon {
    position: absolute;
    width: 30px;
    height: 30px;
    left: -5px;
    &::before {
      content: "";
      position: absolute;
      width: 12px;
      height: 12px;
      border: 1px solid #fff;  //这边要改
      border-width: 1px 0 0 1px;
      -webkit-transform: rotate(315deg);
      transform: rotate(315deg);
      top: 8px;
      left: 7px;
    }
  }

刷新下页面就有了。

然后我觉得这么搞也太麻烦了,就很难受呀,就又去看扒了下官方文档,找到了一条更简单的方法,重载overwrite-left插槽

<template>
    <x-header>
        <div slot="overwrite-left" class="goBack" :style="borderColor"></div>
    </x-header>
</template>

data () {
  return {
    borderColor: {
      borderColor: 'black'
    }
  }
},

//这边copy刚才的before伪元素就行
.goBack {
  position: absolute;
  width: 12px;
  height: 12px;
  border-style: solid;
  border-color: white;
  border-width: 1px 0 0 1px;
  -webkit-transform: rotate(315deg);
  transform: rotate(315deg);
  top: 8px;
}

到此,完工。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值