首页 > 其他分享 >css实现一个三排数组滚动抽奖

css实现一个三排数组滚动抽奖

时间:2024-03-18 18:25:44浏览次数:33  
标签:抽奖 linear top 三排 height Item animation webkit css

简单理解可视化版本:

<div class="slot-machine">
        <div class="reel">
            <div>Item 1</div>
            <div>Item 2</div>
            <div>Item 3</div>
            <div>Item 1</div>
            <div>Item 2</div>
            <div>Item 3</div>
            <!-- ... 其他项目 ... -->
        </div>
        <div class="reel">
            <div>Item 4</div>
            <div>Item 5</div>
            <div>Item 6</div>
            <div>Item 4</div>
            <div>Item 5</div>
            <div>Item 6</div>
            <!-- ... 其他项目 ... -->
        </div>
        <div class="reel">
            <div>Item 7</div>
            <div>Item 8</div>
            <div>Item 9</div>
            <div>Item 7</div>
            <div>Item 8</div>
            <div>Item 9</div>
            <!-- ... 其他项目 ... -->
        </div>
    </div>
.slot-machine {
        // margin-top: 200px;
        display: flex;
        overflow: hidden;
        height: 50px;
    }

    .reel {
        animation-name: spin;
        animation-duration: 2s;
        animation-timing-function: linear;
        animation-iteration-count: infinite;
        // transform-origin: linear;
        div {
            height: 40px;
        }
    }

    @keyframes spin {
        0% {
            transform: translateY(0);
        }
        100% {
            transform: translateY(-120px);
        }
    }

公司前端负责人大佬写的,优雅:

<View class="lucky-box" :class="{ 'active-scroll': state.activeScroll }">
            <View class="box-item" v-for="item in 3" :key="item">
                <View class="ul" :style="{ transform: `translateY(-${state.prizeStatus}%)` }">
                    <View class="li">
                        <Image class="prize-img" :src="require('./assets/prize-init.png')"></Image>
                    </View>
                    <View class="li">
                        <Image class="prize-img" :src="require('./assets/prize-5.png')"></Image>
                    </View>
                    <View class="li">
                        <Image class="prize-img" :src="require('./assets/prize-0.png')"></Image>
                    </View>
                    <View class="li">
                        <Image class="prize-img" :src="require('./assets/prize-10.png')"></Image>
                    </View>
                    <View class="li">
                        <Image class="prize-img" :src="require('./assets/prize-100.png')"></Image>
                    </View>
                    <View class="li">
                        <Image class="prize-img" :src="require('./assets/prize-5.png')"></Image>
                    </View>
                    <View class="li">
                        <Image class="prize-img" :src="require('./assets/prize-0.png')"></Image>
                    </View>
                    <View class="li">
                        <Image class="prize-img" :src="require('./assets/prize-10.png')"></Image>
                    </View>
                </View>
            </View>
        </View>

```vue
.lucky-box {
            top: 52.5%;
            left: 50%;
            transform: translateX(-50.2%);
            position: absolute;
            height: 5.9%;
            width: 51%;
            display: flex;
            align-items: center;
            pointer-events: none;
            // background-color: rgba(81, 0, 255, 0.605);
            .box-item {
                flex: 1;
                height: 100%;
                overflow: hidden;
                .ul {
                    position: relative;
                }

                .li {
                    height: 150px;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    .prize-img {
                        width: 87px;
                        height: 88px;
                    }
                }
            }
        }

        .active-scroll {
            :nth-child(1) {
                .ul {
                    -webkit-animation: anim1 0.5s linear infinite;
                }
            }
            :nth-child(2) {
                .ul {
                    -webkit-animation: anim2 0.5s linear infinite;
                }
            }
            :nth-child(3) {
                .ul {
                    -webkit-animation: anim3 0.5s linear infinite;
                }
            }
        }

@-webkit-keyframes anim1 {
        0% {
            top: 0;
        }
        100% {
            top: -600px;
        }
    }
    @-webkit-keyframes anim2 {
        0% {
            top: 0;
        }
        100% {
            top: -900px;
        }
    }
    @-webkit-keyframes anim3 {
        0% {
            top: 0;
        }
        100% {
            top: -1200px;
        }
    }

标签:抽奖,linear,top,三排,height,Item,animation,webkit,css
From: https://www.cnblogs.com/yoona-lin/p/18081113

相关文章

  • html css 两栏 三栏布局
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device......
  • 关于scss手动遍历生成类名
    1、自动生成宽度类名$width-name:300,100;@each$namein$width-name{.w#{$name}{width:$name+px;}};//以上代码将会生成.w300{width:300px;};.w100{width:100px;}2、自动生成间距类名$margin-name:(mt:(16,24,10),mb:(16),ml:......
  • css的基本使用
    CSS2.3结构伪类选择器伪类<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><style>ulli:first-child{background:brown;}......
  • 详细了解前端中css的相对定位和绝对定位
    序言:今天要说的是前端中css经常使用的相对定位和绝对定位,相信你在看完这篇文章后,对它的使用,以及它们出现的各种嵌套都会了如指掌,得心应手。目录概念理解:1、对相对定位的概念理解2、对绝对定位的概念理解应用实践:1、在相对定位方框体内的其他方框的定位情况分析:<1>在相......
  • CSS3一些总结
    1.标准流2.浮动3.定位1.relative[相对定位]以当前相对定位的元素原有的位置作为参照物移动指定的距离相对定位的元素移动后,原有的位置仍然会被占用2.absolute[绝对定位]绝对定位的元素移动后,原有的位置不会被占用以其他定位的元素[默认值static不算]作为参照物移......
  • CSS常见选择器
    1.基础选择器   选择器作用:查找标签设置样式标签选择器:使用标签名作为选择器类选择器:(1)定义类选择器-->.类名(2)使用类选择器标签添加class="类名"<style>/*定义*/.green{color:green;}.size{font-size:10px;}<......
  • CSS——字体和文本样式
    1.字体样式1.1.字体大小属性名:font-size取值:数字+px注意点:谷歌浏览器默认文字大小是16px单位需要设置,否则无效1.2.字体粗细属性名:font-weight取值:关键字:正常normal加粗bold纯数字:100~900的整百数:正常400加粗700注意点:不是所有字体都提供了......
  • HTML学习笔记3: CSS选择器
    CSS选择器元素选择器<style>p{color:lightcoral;}</style><!--元素选择器:设置了某个元素(span,p,h1)的样式--><p>元素选择器</p>类选择器<style>.hclass{color:lightgoldenrodyellow;}</style><!--类选择器:给标签指定一个类--><......
  • HTML学习笔记2: CSS样式
    【HTML】CSS样式设置CSS样式的三种方式行内样式(不推荐)内嵌样式(写在style标签中,可以写在页面各种位置,一般写在head标签中)外联样式写在单独的css文件中,需要通过link在网页中引入行内样式<h1style="color:rgb(66,139,92);">行内样式</h1>内嵌样式<style> ......
  • css简直 恐怖如斯!!! css之前端必知属性!!!
    一、css中实现元素隐藏的几种方法1.opsition:0;        通过透明实现元素隐藏,视觉上隐藏但仍然存在2.display:none;        标签消失,不占页面位置,不显示3.display:block;        独占一行,可设置宽高,块显示二、如何进行元素转换1.    行元......