jQuery实现适用于移动端的跑马灯抽奖特效示例

下面是详细的jQuery实现适用于移动端的跑马灯抽奖特效的攻略:

1. 准备工作

在实现跑马灯抽奖特效之前,我们需要先准备一些基本的素材,包括CSS样式表和HTML结构。在CSS样式表中,我们一般需要定义一些基本的样式,例如设置背景颜色、边框样式等等。在HTML结构中,我们需要定义一个容器元素和一个跑马灯元素。

示例代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>jQuery实现适用于移动端的跑马灯抽奖特效</title>
    <style type="text/css">
        body {
            background-color: #f5f5f5;
        }
        .container {
            width: 300px;
            height: 150px;
            margin: 0 auto;
            border: 1px solid #ccc;
            position: relative;
            overflow: hidden;
        }
        .marquee {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: #fff;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="marquee"></div>
    </div>
</body>
</html>

2. 实现滚动效果

接下来,我们需要使用jQuery库来实现跑马灯的滚动效果。在实现滚动效果之前,我们需要先导入jQuery库。

示例代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>jQuery实现适用于移动端的跑马灯抽奖特效</title>
    <style type="text/css">
        body {
            background-color: #f5f5f5;
        }
        .container {
            width: 300px;
            height: 150px;
            margin: 0 auto;
            border: 1px solid #ccc;
            position: relative;
            overflow: hidden;
        }
        .marquee {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: #fff;
        }
    </style>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <script>
        $(function() {
            var marquee = $('.marquee');
            var container = $('.container');
            var clone = marquee.clone();
            container.append(clone);//容器中再添加一个marquee元素作为克隆跑马灯
            var marqueeWidth = marquee.width();
            var containerWidth = container.width();
            var speed = 50;//数值越小速度越快
            var timer = null;

            var start = function() {
                var x = container.scrollLeft();
                if(x >= marqueeWidth) {
                    container.scrollLeft(x - marqueeWidth);
                } else {
                    container.scrollLeft(x + 1);
                }
            };

            var stop = function() {
                clearInterval(timer);
                timer = null;
            }

            //鼠标进入容器暂停滚动
            container.on('mouseenter', function() {
                stop();
            });

            //鼠标离开容器恢复滚动
            container.on('mouseleave', function() {
                timer = setInterval(start, speed);
            });

            timer = setInterval(start, speed);//启动滚动效果
        });
    </script>
</head>
<body>
    <div class="container">
        <div class="marquee"></div>
    </div>
</body>
</html>

3. 实现抽奖效果

最后,我们需要使用jQuery库来实现跑马灯的抽奖效果。在实现跑马灯的抽奖效果之前,我们需要先准备一些中奖数据,例如奖品名称、奖品图片等等。

示例代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>jQuery实现适用于移动端的跑马灯抽奖特效</title>
    <style type="text/css">
        body {
            background-color: #f5f5f5;
        }
        .container {
            width: 300px;
            height: 150px;
            margin: 0 auto;
            border: 1px solid #ccc;
            position: relative;
            overflow: hidden;
        }
        .marquee {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: #fff;
        }
        .item {
            float: left;
            width: 100px;
            height: 150px;
            text-align: center;
            line-height: 150px;
            font-size: 20px;
            color: #333;
        }
        .item img {
            display: block;
            margin: 0 auto;
            width: 50%;
            height: auto;
            margin-top: 10px;
        }
        .mask {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0,0,0,0.5);
            z-index: 999;
            text-align: center;
            line-height: 150px;
            font-size: 30px;
            color: #fff;
            display: none;
        }
    </style>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <script>
        $(function() {
            var marquee = $('.marquee');
            var container = $('.container');
            var clone = marquee.clone();
            container.append(clone);
            var marqueeWidth = marquee.width();
            var containerWidth = container.width();
            var speed = 50;
            var timer = null;

            var start = function() {
                var x = container.scrollLeft();
                if(x >= marqueeWidth) {
                    container.scrollLeft(x - marqueeWidth);
                } else {
                    container.scrollLeft(x + 1);
                }
            };

            var stop = function() {
                clearInterval(timer);
                timer = null;
            }

            var prize = [
                {name:'奖品1',imgUrl:'./img/prize1.jpg'},
                {name:'奖品2',imgUrl:'./img/prize2.jpg'},
                {name:'奖品3',imgUrl:'./img/prize3.jpg'},
                {name:'奖品4',imgUrl:'./img/prize4.jpg'},
                {name:'奖品5',imgUrl:'./img/prize5.jpg'},
                {name:'奖品6',imgUrl:'./img/prize6.jpg'}
            ];

            //鼠标进入容器暂停滚动,显示抽奖结果
            container.on('mouseenter', function() {
                stop();
                var random = Math.floor(Math.random() * prize.length);
                var selectedPrize = prize[random];
                $('.mask').html(selectedPrize.name + '<br/><img src="' + selectedPrize.imgUrl + '">').fadeIn(1000, function() {
                    setTimeout(function() {
                        $('.mask').fadeOut(1000, function() {
                            timer = setInterval(start, speed);
                        });
                    }, 3000);
                });
            });

            //鼠标离开容器恢复滚动
            container.on('mouseleave', function() {
                timer = setInterval(start, speed);
            });

            timer = setInterval(start, speed);
        });
    </script>
</head>
<body>
    <div class="container">
        <div class="marquee">
            <div class="item">奖品1<img src="./img/prize1.jpg"></div>
            <div class="item">奖品2<img src="./img/prize2.jpg"></div>
            <div class="item">奖品3<img src="./img/prize3.jpg"></div>
            <div class="item">奖品4<img src="./img/prize4.jpg"></div>
            <div class="item">奖品5<img src="./img/prize5.jpg"></div>
            <div class="item">奖品6<img src="./img/prize6.jpg"></div>
        </div>
        <div class="mask"></div>
    </div>
</body>
</html>

在上面的代码中,我们创建了一个名为prize的数组,其中包含了6个奖品的信息。在鼠标进入容器并暂停滚动时,我们随机选取一个奖品信息并在遮罩层中显示出来。3秒后,遮罩层消失,滚动效果重新开始。

至此,我们已经成功实现了适用于移动端的跑马灯抽奖特效。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery实现适用于移动端的跑马灯抽奖特效示例 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • 纯CSS制作的响应式折叠菜单分享

    下面我将详细讲解“纯CSS制作的响应式折叠菜单分享”的完整攻略。 1. 准备工作 在开始制作之前,我们需要准备好以下工具: 编辑器:如Sublime Text、VSCode等。 前端框架:这里我们使用Bootstrap框架。 浏览器:建议使用Chrome浏览器,方便调试。 2. 制作HTML结构 HTML结构是实现菜单的基础,以下是一个基本的HTML结构示例…

    css 2023年6月10日
    00
  • r.js来合并压缩css文件的示例

    我们来详细讲解一下如何使用r.js来合并压缩CSS文件。在开始前,需要先确认以下两点: 确保已经安装了Node.js和r.js 准备好需要合并压缩的CSS文件 流程大致如下: 创建一个配置文件 运行r.js进行压缩合并 下面我们将具体讲解这两个步骤。 1.创建一个配置文件 在命令行中进入包含CSS文件的目录,输入以下命令: r.js -cssIn=style…

    css 2023年6月9日
    00
  • jQuery niceScroll滚动条错位问题的解决方法

    接下来我会分享一下关于“jQuery niceScroll滚动条错位问题的解决方法”的完整攻略,主要包括以下几个部分: 问题描述: 在使用 jQuery niceScroll 插件时,有时候会出现滚动条错位的问题。具体表现为滚动条的位置与内容不匹配,无法正常滚动,影响用户体验。接下来我们将探讨如何解决这个问题。 解决方法: (1)第一种解决方法: 可以通过在…

    css 2023年6月10日
    00
  • CSS 数字和字母将容器撑大问题解决

    当我们使用CSS设置一个容器的大小时,通常会使用 width 和 height 属性,但是有时候我们会遇到这样的问题:当我们在容器内添加一些装饰性的元素,如边框或阴影等,这些元素都会增加容器的宽度和高度,让容器撑大,而我们设置的原本的 width 和 height 属性将会失效。这个问题可以通过使用CSS数字和字母的组合来解决。 1. 使用 padding …

    css 2023年6月10日
    00
  • 利用CSS3参考手册和CSS3代码生成工具加速来学习网页制

    学习网页制作时,可以利用 CSS3 参考手册和 CSS3 代码生成工具来加快学习进度,以下是具体的攻略: 步骤一:选择合适的 CSS3 参考手册 CSS3 参考手册有很多,建议选择比较全面、详细、易懂的手册,推荐的有 Mozilla Developer Network、W3C、CSS Diner等。 选择好参考手册后,可以根据自己的需求进行搜索,比如要了解某…

    css 2023年6月9日
    00
  • CSS 布局一个漂亮的滑块

    下面详细讲解一下如何用CSS布局一个漂亮的滑块。 首先,我们需要明确滑块的设计需求和效果,例如滑块的外观、大小和交互效果等。然后我们就可以使用CSS来实现这些需求了。在实现过程中,我们将使用CSS的一些常用属性,并通过一些例子来进行说明。 设置滑块的基本样式 我们可以先设置滑块的基本样式,包括它的颜色、边框、大小和圆角等属性。如下所示: .slider { …

    css 2023年6月11日
    00
  • 加速Webpack构建技巧总结

    当我们在进行前端开发时,Webpack构建时间较长是一个令人头痛的问题。因此,我们需要一些加速Webpack构建的技巧,以提高工作效率。接下来,我将就如何加速Webpack构建进行详细讲解,并提供两个实际示例说明。 1. 使用缓存 当我们重新启动Webpack打包时,Webpack会花费一些时间来对每个模块进行重新解析和编译。而使用缓存可以避免重新编译相同的…

    css 2023年6月9日
    00
  • IE7.0以下版本列表li中的元素错位一个上一个下的解决方法

    首先介绍一下这个问题的原因:IE7.0以及更低版本的浏览器在处理列表元素(<li>)高度不一致的情况下会出现错位的问题。具体而言,当一个 <li> 元素高度较短,而下一个 <li> 元素高度较高时,两个元素之间的间距会变得比正常情况下大一些。 现在给出两种解决方法: 方法一:使用float来清除浮动 在IE7及以下版本的浏…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部