vue中scss使用js的变量

一、前言

在项目开发中,很多时候会涉及到scss样式变量,正常定义方式 $primary-color: rgb(188, 0, 194);;使用时直接使用即可:color: $primary-color。但是,如果,这些变量是在js中定义的怎么办

二、实现
  1. 动态绑定::style="{'--str-length': strLength}"
  2. scss 中使用 v-bind(strLength) => strLength 是js变量
html 复制代码
<template>
    <div class="typing-demo-wrapper" :style="{'--str-length': strLength}">
      <div class="typing-demo">{{ text }}</div>
    </div>
</template>

<script lang="ts" setup>
const text = ref("你好;欢迎来到自定义布局页面。");
const strLength = text.value.length; // 计算字符串长度;
</script>

<style lang="scss" scoped>
.typing-demo-wrapper {
    height: 200px;  // 父元素的元素可按实际情况处理
    overflow: auto;

    /* 实现从左到右打字效果 */
    @keyframes typing {
      from {
        width: 0
      }
    }
    /* 实现鼠标闪烁效果 */
    @keyframes blink {
      50% {
        border-color: transparent
      }
    } 
    .typing-demo {
      font-family: monospace; /* 使用等宽字体,保证每个字的宽度一致 */      
      // width: 30ch; /* 设置宽度为字符串长度 */

      // 根据字符串长度设置宽度
      width: calc(var(--str-length) * 2ch); // 使用动态绑定的css变量,计算宽度
      // width: calc(v-bind(strLength) * 2ch); // 直接使用v-bind绑定js变量

      /* typing 3s 表示3秒内打完这15个字  blink  .5s表示0.5秒闪烁一下光标*/
      animation: typing 3s steps(v-bind(strLength)), blink .5s step-end infinite alternate;
      white-space: nowrap;
      overflow: hidden;
      /* 鼠标光标用右边的边框代替 */
      border-right: 2px solid red;
      font-size: 2em; 
    }
  }
</style>

文章仅为本人学习过程的一个记录,仅供参考,如有问题,欢迎指出!

相关推荐
小白勇闯网安圈1 分钟前
Vue 工程化开发:组件复用、插槽、项目结构与 ES6 模块化
javascript·vue.js·es6
这是个栗子1 小时前
前端开发中的常用工具函数(十):JavaScript 数组遍历
javascript·map·遍历·filter·foreach·for·for...of
FYKJ_20101 小时前
django学习成绩预警系统10905
java·javascript·spring boot·python·spark·django·php
云浪1 小时前
给大模型装上"手":三分钟看懂 AI Agent 的 Tool 工具调用
javascript·人工智能·node.js
风月说与山鬼1 小时前
六、React事件
前端·javascript·react.js
岁岁种桃花儿1 小时前
Vue核心语法第十四篇:列表过滤
前端·javascript·vue.js
晓得迷路了1 小时前
栗子前端技术周刊第 143 期 - npm 攻击事件、Bun 1.4...
前端·javascript
常宇佳1 小时前
vue3 实战系列之踩过的一些坑
javascript·vue.js·elementui
研☆香14 小时前
聊一聊前端的常见字 关键字
开发语言·前端·javascript
日光倾16 小时前
TypeScript 随手记 —— 1
前端·javascript·typescript