基于Vue与SCSS的数字滚动动画:两处核心代码逻辑问询
问题解答
1. HTML中i变量的来源
这个i是Vue循环渲染时的索引变量,来自包裹这段代码的v-for循环。
比如原代码里应该有类似这样的循环逻辑:
<div v-for="i in numberString.length" :key="i" class="item__digit"> <!-- 你提问里的style绑定代码 --> </div>
这里的i是循环的序号(从1开始),用i-1是因为字符串的charAt方法是从0开始索引的,这样就能精准取到numberString对应位置的数字字符,再转成数字乘以-100%,通过transform: translateY控制数字列表滚动到目标数字的位置。
2. SCSS代码的作用与实现逻辑
这段代码就是用来生成滚动所需的0-9数字列表,实现逻辑如下:
&-list是SCSS的父选择器嵌套语法,比如如果父类是.item__digit,这里就会编译成.item__digit-list。- 通过
:before伪元素来生成内容,初始化$content为空字符串。 - 用
@for $i from 0 through 9循环遍历0到9的数字,每次把当前数字$i、换行符\A(让每个数字单独占一行)和空格拼到$content里。 - 最后把拼接好的
$content赋值给伪元素的content属性,这样伪元素就会渲染出0到9每个数字各占一行的内容。
配合CSS中设置的固定高度和line-height: 100%,每个数字刚好占满容器高度,后续通过Vue绑定的transform值,就能让列表滚动到对应数字的位置,实现滚动动画。
内容的提问来源于stack exchange,提问作者jyyam
相关产品推荐
相关产品推荐

