vue 瀑布流 图片加载动画?
vue里这个图片加载动画怎么做的
回答:
首先你要实现一个瀑布流的效果,然后再考虑怎么实现图片的出现效果。
瀑布流的效果,网上有太多的代码,copy 一下就好了。
动画出现的话,从图中看,应该就是改变 opacity
透明度的一个过渡效果。然后利用 transition-delay
过渡效果的延迟来实现。
而 transition-delay
的值就应该是一个随机值,比如 随机数*100ms
这样,通过 vue 里获得随机数后,把值给 transition-delay
,再写入到 style
属性中就可以了。
回答:
简单思路就是骨架屏 + 一个预置的透明度。然后主要就是监听一下图片的onload事件之后移除透明度样式就好了。
在线Demo
但一般这样的都会有一个 Color Placeholder
(色彩预置) 去设置渐变的背景色。
这里是完整的一篇相关文章 ? 实现类似Pinterest 的图片预加载功能
Edit
如果有网络问题无法加载在线Demo的:
<!-- Use preprocessors via the lang attribute! e.g. <template lang="pug"> --><template>
<div id="app">
<div class="demo">
<img class="loading" src="https://assets.codepen.io/2540759/internal/avatars/users/default.jpg?format=auto&version=1562062266&width=200&height=200" @load='onImageLoad'>
</div>
</div>
</template>
<script>
export default {
data() {
return {
};
},
methods: {
onImageLoad(e) {
// 模拟延迟
setTimeout(() => {
e.target.className = e.target.className.replace('loading', 'complete')
// e.target.className = 'complete'
}, 1500)
}
}
};
</script>
<!-- Use preprocessors via the lang attribute! e.g. <style lang="scss"> -->
<style>
.demo {
width: 200px;
height: 200px;
background: linear-gradient(to bottom, #4e5c6a, #232830);
border-radius: 6px;
margin: 12px;
overflow: hidden;
img {
transition: opacity 2s;
}
}
.loading {
opacity: 0
}
.complete {
opacity: 1
}
</style>
以上是 vue 瀑布流 图片加载动画? 的全部内容, 来源链接: utcz.com/p/935074.html