vue动态设置css样式,设置class以及::before伪元素背景图片

1.动态设置div的class

可以通过传给:class一个对象,以动态地切换class

<div :class="{ active: isActive,'text-danger': hasError }"></div>

上面表示active这个class是否存在。取决于数据property isActive的真假,'text-danger'这个class同理

数组语法,可以把一个数组传给:class,以应用一个class列表

<div  class="reletivediv">
          <div :class="['d-title',active===1?'actived':'',]" @click="changeActive(1)">今日元气</div>
          <div :class="['d-title',active===2?'actived':'']" @click="changeActive(2)">大航海</div>
          <a class="alink"><span class="v-mid">更多排行榜&gt;&nbsp;&nbsp;</span></a>
</div>

reletivediv里面的两个div都有d-title这个class,再根据当前active的值,给其中一个加上actived这个class

2.动态设置style

<div class="card-citm" v-for="item in zhibocardList" :key="item.id">
        <div><img :src="item.imgUrl" width="80"  height="80"/></div>
        <div class="cardright-info"><p  :style="{color: item.color, backgroundImage:'url('+item.imgUrl+')', }"><span style="font-size:25px">{{item.name}}</span></p>
          <p>{{item.smallDesc}}</p>
        </div>
</div>

3.动态设置伪元素:before的背景图片

使用css变量,声明css变量时,变量名字前加两根连词线,var函数用于读取变量。

<template>
  <div class="hello">
    <ul class="ulsty">
      <div v-for="item in [1,2,3,4,5]" :key="item" >
        <li 
        :style="{'--bgurl': item%2===0 ? ('url('+img1+')'): ('url('+img2+')')}"
         :class="item%2 === 1? 'odd':'even'"
      >
        {{item%2 === 0? '偶数': '奇数'}}
      </li>
      </div>
    </ul>
  </div>
</template>

<script>
import img1 from '../img/live/small1.png'
import img2 from '../img/live/small2.png'
export default {
  data() {
    return {
      img1: img1,
      img2: img2,
    }
  },
}
</script>
<style scoped>
.hello ul {
  display: block;
  position: relative;
  list-style-type: none;
  padding-inline-start: 40px;
}

.ulsty li {
  position: relative;
  padding-left: 60px;
}
.odd {
  border: 1px solid rebeccapurple;
  height: 70px;
}
.odd::before {
  content: '';
  position: absolute;
  border: 1px solid blue;
  background-image: var(--bgurl);
  background-size: 50px 50px;
  left: 0;
  top: 0;
  width: 50px;
  height: 50px;
}
.even {
  border: 1px solid rgb(218, 135, 76);
  height: 70px;
} 
.even::before {
  content: '';
  background-image: var(--bgurl);
  background-size: 50px 50px;
  left: 0;
  border: 1px solid blue;
  top: 0;
  width: 50px;
  height: 50px;
  position: absolute;
}
</style>

参考链接 https://blog.csdn.net/qq_44827891/article/details/106413564

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值