欢迎大家来到IT世界,在知识的湖畔探索吧!
最近在网上逛,突然发现Element-plus官网的效果非常”fashion”。
顶部导航栏区域在页面滚动的时候,所有经过导航栏区域的内容都会变成像 “像素画” 一样,效果非常有意思。
欢迎大家来到IT世界,在知识的湖畔探索吧!
我用CSS复刻了一下这个效果,后面简单分析一下原理。
<template> <div class="wrap"> <el-switch v-model="isPixel" active-text="像素" inactive-text="正常">切换</el-switch> <div style="display: flex;align-items: center"> <div style="width: 80px">渐变:</div><el-slider v-model="gradient" max="10" :disabled="!isPixel" /> </div> <div style="display: flex;align-items: center"> <div style="width: 80px">大小:</div><el-slider v-model="size" max="10" :disabled="!isPixel" /> </div> <div style="display: flex;align-items: center"> <div style="width: 80px">模糊:</div><el-slider v-model="drop" max="10" :disabled="!isPixel" /> </div> <div class="content"> <div class="pixel" :style="pixelStyle"></div> <el-image style="width: 300px;" src="https://fuss10.elemecdn.com/d/e6/c4d93a3805b3ce3f323f7974e6f78jpeg.jpeg" lazy /> </div> </div> </template> <script> export default { name: 'PixelStyle', data() { return { isPixel: false, gradient: 1, size: 4, drop: 4, } }, computed: { pixelStyle() { if(this.isPixel) { return { backgroundImage: `radial-gradient(transparent ${this.gradient}px, #fff ${this.gradient}px)`, backgroundSize: `${this.size}px ${this.size}px`, backdropFilter: `blur(${this.drop}px)`, } }else { return {} } } } } </script> <style scoped> .wrap { width: 340px; margin: 0 auto; border: 1px solid #ddd; padding: 20px; box-sizing: border-box; } .content { width: 300px; position: relative; } .pixel { position: absolute; top: 0; left: 0; width: 300px; height: 200px; z-index: 99; } </style>
欢迎大家来到IT世界,在知识的湖畔探索吧!
原理:
本质上就是先在图片上盖上一层模糊层(backdrop-filter),然后设置”模糊层”的背景图为一个个径向渐变的颜色块,并且设置一下大小。
这样图片部分被遮挡住,还有部分露出来,在人视觉效果中感觉就像是像素画。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/138829.html