首页>>前端>>Vue->Vue 在 CSS 中使用 data 中定义的数据

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

时间:2023-11-30 本站 点击:1

CSS 中使用 data 中定义的数据

考虑一个问题, 后端传来一个数据, 比如是某个百分比, 需要在页面做进度展示. 一般的情况都会在 CSS 中设置数据展示, 但是 CSS 中如何获取到后端传来的数据呢?

使用自定义属性: data-

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

<template>  <div>    <div class="box"     :data-content="obj.desc"     :data-percent="obj.percent"></div>  </div></template><script>  export default {    data() {      return {        obj: {          percent: '30%',          desc: '哈哈哈哈哈哈'        }      }    },  }</script><style>.box {  width: 400px;  height: 200px;  border: 1px solid salmon;  position: relative;}.box::before, .box::after {  position: absolute;  top: 0; bottom: 0;}.box::before {  content: attr(data-content);  left: 0;  right: calc(100% - attr(data-percent));  background-color: deepskyblue;}.box::after {  content: attr(data-content);  right: 0;  left: attr(data-percent);  background-color: deeppink;}</style>

最后页面展示

?计算 right 部分失效了, 原因是 attr() 函数不能在 calc() 中使用! 怎么办呢?

自定义 CSS 变量

通过在 HTMLstyle 属性以 v-bind 的形式绑定定义的 CSS 变量, 继而在 CSS 中使用该变量达到效果

<template>  <div>    <div class="box"     :style="{'--percent': obj.percent}"    :data-content="obj.desc"     :data-percent="obj.percent"></div>  </div></template><style>  .box {    width: 400px;    height: 200px;    border: 1px solid salmon;    position: relative;  }  .box::before, .box::after {    position: absolute;    top: 0; bottom: 0;  }  .box::before {    content: attr(data-content);    left: 0;    /* right: calc(100% - attr(data-percent)); */    right: calc(100% - var(--percent));    background-color: deepskyblue;  }  .box::after {    content: attr(data-content);    right: 0;    /* left: attr(data-percent); */    left: var(--percent);    background-color: deeppink;  }  </style>

上面的代码省略了 <script> 标签部分, 因为这部分没有改动

?当当当当! 成功!?

原文:https://juejin.cn/post/7094854059089199135


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Vue/3738.html