Vue+css实现扫描动画效果(使用@keyframes scan)
实现效果
扫描效果
参考链接
MDN Web Docs: CSS Animations
关键代码
示例代码
<div class="scanner-container"><div class="scanner-line"></div><div class="scanner-icon">📷</div><p>Scan material barcode to map to this box</p><el-input v-model="form.boxStr" @keyup.enter.native="getPosNameChange()" />
</div>
.scanner-container {border-radius: 4px;padding: 16px;text-align: center;margin: 16px 0;position: relative;min-height: 180px;display: flex;flex-direction: column;align-items: center;justify-content: center;::v-deep .el-input--small .el-input__inner {background-color: #363838;color: #e0e0e0;height: 55px;line-height: 55px;}p {font-size: 14px;color: #e0e0e0;margin-bottom: 16px;}
}.scanner-line {position: absolute;width: 100%;height: 2px;background-color: #5c6bc0;top: 50%;left: 0;animation: scan 2s linear infinite;z-index: 1;
}@keyframes scan {0% {top: 25%;}50% {top: 75%;}100% {top: 25%;}
}
常见问题及解决方法
动画不生效:
确保CSS选择器正确,能够选中需要应用动画的元素。
检查
@keyframes
定义是否正确,关键帧的百分比和样式是否正确。确保元素的
position
属性设置为relative
或absolute
,以便动画能够正确应用。 动画性能问题:尽量避免在动画中使用复杂的CSS属性,如
box-shadow
、border-radius
等。使用
will-change
属性来提示浏览器提前优化动画元素