html - 如何使用内联 css 为宽度设置动画

标签 html css sass vue.js

我正在尝试在页面加载时使用来自 API 的数据为元素的宽度设置动画,我正在使用 Vue js。我所做的是使用内联 css 并应用宽度值(来自 API 数据)。我可以添加元素宽度,但它没有动画。

Vue 模板已编辑:

<li v-for="(stats, index) in teamStats[0]">
    <div class="bar">
        <span :style="'width:'+ stats +'%;'">
            {{stats}}
        </span>
    </div>
</li>

萨斯:

.bar {
    span {
        text-align: $l;
        right: 0;
        width: 0%;
        -webkit-transition: width 1s;
        -moz-transition: width 1s;
        -o-transition: width 1s;
        transition: width 1s;
    }
}

最佳答案

您可能需要使用 JavaScript transition hooks .这是一个例子。

new Vue({
  el: '#app',
  
  data: {
    stats: [],
  },
  
  created() {
    // Simulate loading data from server
    setTimeout(() => {
      this.stats = [0.1, 0.15, 0.32, 0.55, 0.88, 0.96];
    }, 500);
  },
  
  methods: {
    onEnter(el) {
      var stat = +el.dataset.stat;
      var index = +el.dataset.index;
      el.style.transitionDelay = index * 0.05 + 's';
      el.style.width = (stat * 100) + '%';
      el.style.backgroundColor = `hsl(${50 - 50 * stat | 0}, 100%, 50%)`;
    },
  },
});
.bars {
  width: 400px;
}

.bar {
  margin: 5px 0;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  color: white;
  font-family: sans-serif;
  font-weight: bold;
  padding: 5px;
  box-sizing: border-box;
  white-space: nowrap;
  overflow: hidden;
}

.bar.v-enter-active {
  transition: all 1s cubic-bezier(0, 1, 0.5, 1);
}

.bar.v-enter {
  /* Needs !important to override inline styles */
  opacity: 0;
  width: 0% !important;
  background-color: hsl(50, 100%, 50%) !important;
}
<script src="https://cdn.rawgit.com/vuejs/vue/dev/dist/vue.min.js"></script>

<div id="app">
  <transition-group tag="div" class="bars" @enter="onEnter">
    <div class="bar" v-for="stat, index of stats" :key="stat" :data-stat="stat" :data-index="index">
      {{ (stat * 100 | 0) }}%
    </div>
  </transition-group>
</div>

关于html - 如何使用内联 css 为宽度设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45027813/

相关文章:

php - 制作没有框架的网站

javascript - 按钮在注册表单中不起作用

css - 在 angular2 中使用 highcharts 呈现的图表不采用父级的高度

javascript - 根据内容调整 Bootstrap 模态表单的大小/适合

javascript - 如何查找给定数组中包含值的 HTML 元素?

javascript - 在新窗口中的新 html 页面中创建并设置链接元素

jquery - 如何防止崩溃 bootstrap-3 菜单

.sass文件的Netbeans 7.x语法突出显示?

css - 用变量编写 SASS 循环

html - 使 div 100% 浏览器窗口的宽度