Vue 如何在CSS中使用data定义的数据

此时虽然是vue3 ,vue2也是一样的
1、使用自定义属性: data-

通过 v-bind 将后端的数据绑定在自定义 HTML 属性上, 然后通过 CSS 的 attr() 函数获取该属性

<template>
  <div class="home">
    <div class="top">
      <NavBar @click.native="aa"></NavBar>
    </div>
    <div class="content">
      
      <div class="box" @click="bbb" v-if="navName">
        <div ref="subtitle" 
        :data-tiem="tiem" 
        :style="{'--tiem': tiem}"
        data-typed-text="瞌睡的博客主页">{{title}}</div>
      </div>

      <div style="height: 300px;border: 1px solid red;">
        <router-view v-slot="{ Component }">
          <transition name="component-fade">
            <component :is="Component" />
          </transition>
        </router-view>
      </div>
    </div>
  </div>
</template>
<!--  -->
<script setup>
import { NavBar } from '@layout/index.js'
import { ref, reactive, nextTick, watch, provide } from "vue";
let subtitle = ref(null)
let title = ref('瞌睡的博客主页')
let tiem = ref()
const aa = async function name(params) {
  title.value = '瞌睡的博客主页瞌睡的博客主页瞌睡的博客主页瞌睡的博客主页'
  tiem.value = Number(title.value.length)
   await subtitle.value.classList.remove('up')
   setTimeout(() => {
    subtitle.value.classList.add('up')
   }, 300);

}
const navName = ref()
const sendGrandson = function (value) { 
  navName.value = value 
}
provide('sendHandle', sendGrandson)
 
</script>

<style lang="scss" scoped >
.home {
  height: 800px;
  display: flex;
  flex-direction: column;
  background: url("../../assets/img/01.jpg") no-repeat;
  .content {
    height: 100%;
    flex: 1;
  }
  .box {
    display: inline-block;
    div {
      width: 0;
      margin-left: .25rem;
      overflow: hidden;
      border-right: .125rem solid #000;
      white-space: nowrap;
      font-size: 1.6rem;
    }
  }
}

.up {
  animation:
    typing calc(0.25s * var(--tiem )) steps( var(--tiem) , end) forwards,
    blink 1s infinite;
}
@keyframes typing {
  from {
    width: 0
  }
  to {
    width: 100%
  }
}

@keyframes blink {
  from {
    border-color: transparent
  }
  to {
    border-color: #000;
  }
}
</style>

在这里插入图片描述

效果

在这里插入图片描述
在这里插入图片描述

注意
1. attr() 函数不能在 calc()steps() 中使用(存在嵌套),需在元素中传值 :style="{'--tiem': tiem}" (名称可自定义),在css直接使用var(--tiem)即可,否则失效
2. 如没有嵌套函数,可直接使用自定义属性attr(data-tiem)

在这里插入图片描述

虽然animation 属性没有被画横线 ,但这条css是不生效的

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值