实现效果
扫描效果
参考链接
关键代码

示例代码
html
<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>
css
.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
属性来提示浏览器提前优化动画元素