整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

用html和js做的抽奖效果仅仅是一个效果哦

单的html和js做的抽奖效果,自己也做过抽奖程序,用作年会上面的抽奖,效果不错,赛光时代小编会后续的分享出来供大家使用得。近些年互联网飞速发展,周边的产业不断的完善微信、手机等等都需要我们企业不断的扩展和适应。

抽奖效果

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>抽奖程序-saiguangw.com</title>

<script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>

<style>

* {

margin:0;

padding:0;

}

a {

text-decoration:none;

}

img {

border:none;

}

li {

list-style:none outside none;

}

body {

background:#c9c9c9;

font-size:14px;

font-family:"宋体";

}

.myBox {

margin:50px auto 0;

}

.myBox ul {

margin:0 auto 0;

position:relative;

width:500px;

height:100px;

overflow:hidden;

}

.myBox li {

width:100px;

height:100px;

text-align:center;

line-height:100px;

font-size:40px;

color:#fff;

background:rgba(222,122,155,0.5);

}

.myBox li.on {

background:rgba(66,56,222,0.5);

}

.text {

height:50px;

overflow:hidden;

width:500px;

margin:20px auto 0;

font-size:20px;

line-height:50px;

text-align:center;

}

.bt,.jg,.zt {

float:left;

width:200px;

}

.bt {

width:100px;

height:50px;

background:rgb(200,100,55);

color:#fff;

cursor:pointer;

}

em {

font-size:30px;

font-style:normal;

color:red;

}

</style>

</head>

<body>

<div class="myBox">

<ul class="cj2">

<li>1</li>

</ul>

<div class="text">

<div class="bt bt2">点我抽奖</div>

<div class="jg jg2">中奖者为"<em></em>"号</div>

</div>

</div><script>

//by zyp

;(function($, window, document, undefined) {

var LuckDraw = function(ele, opt) {

this.$element = ele,

this.defaults = {

row: 4, //行

column: 4, //列

spacing: 0,

click: null,

time: 3,

end: function(e) {}

},

this.target,

this.options = $.extend({}, this.defaults, opt);

}

LuckDraw.prototype = {

init: function() {

var $this = this.$element;

var row = this.options.row;

var col = this.options.column;

var spacing = this.options.spacing;

var click = this.options.click;

var allNumber = 2 * (row + col) - 4;

var line = row - 2; //除去上下de行数

var length = $this.children('li').length;

var options = this.options;

if (length < allNumber) {

for (var i = length; i <= (allNumber - length); i++) {

$this.append("<li>" + (i + 1) + "</li>");

}

}

var children = $this.children('li');

var width = children.eq(0).width() || 0;

var height = children.eq(0).height() || 0;

//元素初始化

$this.css({

position: 'relative',

width: col * width + (col - 1) * spacing,

height: row * height + (row - 1) * spacing

});

children.css({

position: 'absolute'

});

if (line == 0) {

initOne();

} else {

initTwo();

}

//初始化函数

//此时分成4个部分,上、右、下、左

//上: 0 ~ col-1

//右: col ~ col+line

//下: col+line+1 ~ 2*col+line-1

//左: else

//如果只有两行

//此时分成4个部分,上、右、下、左

function initOne() {

children.each(function(index) {

if (index >= 0 && index <= (col - 1)) {

$(this).css({

top: 0,

left: index * width + index * spacing

});

} else {

$(this).css({

bottom: 0,

right: index % col * width

});

}

});

}

//如果大于两行

function initTwo() {

children.each(function(index) {

if (index >= 0 && index <= (col - 1)) {

$(this).css({

top: 0,

left: index * width + index * spacing

});

} else if (index >= col && index <= (col + line - 1)) {

$(this).css({

top: ((index + 1 - col)) * (height + spacing),

right: 0

});

} else if (index >= (col + line) && index <= (2 * col + line - 1)) {

$(this).css({

bottom: 0,

right: (index - ((col + line))) * (width + spacing)

});

} else {

$(this).css({

left: 0,

bottom: (index - (2 * col + line - 1)) * (height + spacing)

});

}

});

}

var target = $this.target || Math.floor(Math.random() * allNumber + 1); //目标,指定或随机

var ix = 0; //位置

var stop;

var flg = false; //抽奖是否正在运行

/*

加速度公式

v1 = v0 + a*t;注意加速度的v代表时间

此时的t可以我们自己定义,所以是常量,所以只需要求a的值

*/

var a = -25.0;

var v0 = 500.0;

var t = 0.0,

v;

var time = this.options.time * 1000; //匀速运行的时间,单位秒

$(click).on('click', function() {

if (!flg) {

flg = true;

target = $this.target || Math.floor(Math.random() * allNumber + 1);

speedUp();

} else {

return;

}

});

//加速

function speedUp() {

runner(ix);

if (v <= 50) {

clearTimeout(stop);

v = 50;

t = 0.0;

uniform(); //跳转到匀速

} else {

t++;

v = v0 + a * t;

stop = setTimeout(speedUp, v);

}

}

//匀速

function uniform() {

stop = setTimeout(uniform, v);

if (t == time / 50) {

clearTimeout(stop);

t = 0.0;

speedDown();

} else {

t++;

}

runner(ix);

}

//减速

function speedDown() {

var stop3 = setTimeout(speedDown, v);

if (v >= 500) {

v = 500;

if (ix == target - 1) {

clearTimeout(stop3);

options.end(target);

flg = false;

}

} else {

t++;

v = v - a * t;

}

runner(ix);

}

//ix++

function runner(i) {

children.removeClass('on').eq(ix).addClass('on');

i++;

if (i == allNumber) {

ix = 0;

} else {

ix = i;

}

}

},

setTarget: function(options) {

var $this = this.$element;

$this.target = options;

}

}

$.fn.myLuckDraw = function(options, target) {

var Ld = new LuckDraw(this, options);

Ld.setTarget(target);

Ld.init();

return this;

}

})(jQuery, window, document);

$(function() {

var tar = 5;

$('.cj2').myLuckDraw({

row: 3, //行

column: 5, //列

spacing: 5, //空隙

click: '.bt2', //点击触发

time: 3, //匀速运动的时间

end: function(e) {

//抽奖执行完毕的回调函数,参数e为获奖编号

//因为这里是指定的,所以e == 12

$('.jg2 em').text(e);

}

});

});</script>

</body>

</html>

面制作技术详解


演示视频在文章底部

1.页面内容居中显示方法

将这段代码<div style="width:50%;margin:auto;">放置在<body>标签之下。

将</div>放置在</body>之上。

将全部内容包裹在这个div中,就可以实现整个页面居中。

内容显示宽度为浏览器视窗宽度的50%。

margin(外边距)是在CSS布局中经常用到的属性,它指定了该div元素距离四周的距离。使用“auto”值,可以实现居中。

2.导航栏悬停顶端方法

把四个a标签装到一个div中。

将<div style="position:fixed; top:0px;">添加到<a style="margin: 0px 30px 0px 10px;" href="#chapter1">试飞进程</a>之上。

将</div>添加到<a style="margin: 0px 30px 0px 0px;"href="#chapter4">总体评价</a>之下。

position是css布局中指定位置的属性,“fixed”值是让该div悬停于固定位置。

默认下,该div距离视窗顶端有10px左右的距离,因此为了让它与视窗顶部对齐,添加top:0px。

3.鼠标滑过导航标题或链接时改变背景色提示

这就要介绍关于css的写法了。

简单来说,就是在<head></head>标签中添加

<style>

a:hover

{

background-color:#ffff00;

}

</style>

学过HTML页面中head标签有啥用?——零基础自学网页制作的小伙伴应该知道,CSS脚本是可以添加在head元素中的。

其中,a:hover中的a指的是所有<a></a>标签。

hover指的是:当鼠标悬停在a上面时的状态

使用:连接。

这个状态下要执行的内容在{}中。

background-color:#ffff00;即背景色为黄色。

3.隐藏滚动条方法

首先,我们要明确一点,就是,滚动条是在内容长度超过视窗高度时产生的。

如果要取消视窗最右侧滚动条,就要控制内容高度。

把<p></p>和<img/><map></map>全部装进<div></div>中,控制该div的高度可以实现。

在<p>标签色上面添加<div>。

在</map>标签下面添加</div>。

下面,为div规定尺寸,添加style="width:610px; height:530px;"。

这样,就不会超出视窗。但是代码写完后发现并不是,如图:

多出的文字内容超出div范围,右侧滚动条依然存在。

这就要在div的style中再增加一条语句"overflow-y:scroll;"

这句话的意思是“overflow-y”(超出最大高度)就显示滚动条(scroll)。而不是让内容超出div的边框。

<div style="width:610px; height:530px; overflow-y:scroll;" >

如图:

因为图片宽度的问题,下方的x轴的scroll也出现了,我们不想看到它,影响美观。

添加“overflow-x:hidden”即可,hidden(隐藏)。

<div style="width:610px; height:530px; overflow-y:scroll; overflow-x:hidden;" >

如图:hidden之后,将无法滚动或拖动画面。

最后,我们要把右侧的scroll也隐藏掉,因为点击鼠标,滚动滚轮就够了,滚动条实在碍眼。

从前面的例子可知,hidden是不行的,有没有别的办法?

那就是在盖div的外部再添加一个div,让这个div的宽度略小于里面div的宽度,小到刚刚挡住滚动条既可以。如图:

这个div这样写即可

<div style="margin:30px 0px 0px 0px;width:600px;overflow:hidden;">

</div>

同时还要给里面的div添加margin来让它们对齐

<div style="margin:30px 0px 0px 0px;width:600px;overflow:hidden;">

<div style="margin:0px 0px 0px 8px;width:610px; height:530px; overflow-y:scroll;overflow-x:hidden;" >

<!--省略了p img map 请自行脑补或参考源码-->

</div>

</div>

完整代码:用HTML制作一个简单页面(代码阅读练习)——零基础自学网页制作


页动画图像、Flash 动画和 JavaScript 实现的效果图片,我们用最基础的CSS也能实现。制作一个简单的gif动画图,上图就是效果图。

用CSS3制作动画图,你需要了解两个css属性。

其一是 @keyframes

因为它限定了CSS 样式和动画逐步从目前的样式更改为新的样式的变化过程。浏览器兼容的时候需要在keyframes上加前缀,-webkit-, -ms- 或 -moz- 。

keyframes中有两个属性,from和to,from里面的内容定义动画开始的状态,to记录动画结束的状态。@keyframes后面紧跟的是动画的名字,这个可以自定义取名字,比如我取 gifname,页面某个标签元素使用这个动画时候,就需要用到这个名字。

@keyframes gifname
{
    from {background: red;}
    to {background: yellow;}
}
 
@-webkit-keyframes gifname /* Safari 与 Chrome */
{
    from {background: red;}
    to {background: yellow;}
}

from和to也可以用百分比来表示动画的过程,可以用百分比的话,就可以把动画的内容定义得更加丰富了。

@keyframes gifname
{
    0%   {background: red;}
    25%  {background: yellow;}
    50%  {background: blue;}
    100% {background: green;}
}
 
@-webkit-keyframes gifname /* Safari 与 Chrome */
{
    0%   {background: red;}
    25%  {background: yellow;}
    50%  {background: blue;}
    100% {background: green;}
}

比如我在一个div元素上用到这个动画

div
{
    animation: gifname 5s;
    -webkit-animation: gifname 5s; /* Safari 与 Chrome */
}

其二是 animation

刚刚我们在div元素中看到的animation就是我们要认识的第二个属性。animation其实是一堆属性的简写。比如看下面一句代码:

 animation:gifname 2s step-start 1s infinite alternate;

这一句其实可以写成

    animation-name: gifname;
    animation-duration: 2s;
    animation-timing-function: step-start;
    animation-delay: 1s;
    animation-iteration-count: infinite;
    animation-direction: alternate;

animation-name:动画名称

这里是 引入 @keyframes 动画的名称。

animation-duration:动画的持续时间

单位可以是秒(s),也可以是毫秒(ms)

animation-timing-function:动画的过度类型

属性值 :默认是 "ease"

linear:线性过渡。等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0)

ease:平滑过渡。等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0)

ease-in:由慢到快。等同于贝塞尔曲线(0.42, 0, 1.0, 1.0)

ease-out:由快到慢。等同于贝塞尔曲线(0, 0, 0.58, 1.0)

ease-in-out:由慢到快再到慢。等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)

cubic-bezier(n,n,n,n):在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。

step-start:马上跳到动画每一结束帧的状态

animation-delay:动画延迟时间

默认是 0。

animation-iteration-count:动画循环次数

默认是 1。属性值infinite 代表无数次。

animation-direction:动画是否在下一周期逆向地播放

属性值

normal:正常方向

reverse:反方向运行

alternate:动画先正常运行再反方向运行,并持续交替运行

alternate-reverse:动画先反运行再正方向运行,并持续交替运行

另外还有两项属性:

animation-fill-mode:设置动画播放后的效果

取值:

none:初始样式,不改变默认行为.(默认行为)

forwards:动画播放结束后保持最后一个状态;

backwards:结束后保持第一个状态;


animation-play-state :检索或设置对象动画的状态

属性值

animation-play-state:running | paused;

running:运动

paused: 暂停

animation-play-state:paused; 当鼠标经过时动画停止,鼠标移开动画继续执行

到此为止,属性我们都学习完了,开始实践部分:

首先准备好我们需要的图片,这里我使用了九张图片。


我把九张图片放在九个<li></li>标签里。所有li标签用ul标签包含起来。然后把ul放在一个div标签里,div设置成一张图片的大小,然后通过逐帧移动ul元素实现动画。

最后的处理,把超出div元素的部分隐藏即可。然后就得到了文章开始时候的图片了。

最关键的,上代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>css动画</title>
<style>
    *{
        margin: 0;
        padding: 0;
    }
    li{
        list-style: none;
        margin-right: 0;
    }
#div{
    width:100px;
	height:100px;
    border: 1px solid #fff;
    overflow: hidden;
	margin: 100px 0 0 100px;
    }
    #box{
     width:900px;
     height:100px;   
    border: 1px solid #fff;
    overflow:visible;
    position:relative;
    animation:myfirst 2s step-start 1s infinite ;
    /* Firefox: */
	-moz-animation:myfirst 2s step-start 1s infinite ;
	/* Safari and Chrome: */
	-webkit-animation:myfirst 2s step-start 1s infinite ;
	/* Opera: */
	-o-animation:myfirst 2s step-start 1s infinite ;
    }
    #box li{
        float: left;
        width:98px;
        height:100px; 
        border:1px solid #fff;
    }
    li img{
        width:100%;
        height:100%;
    }
    @keyframes myfirst
{
	0%   { left:0px; top:0;}
	11.1%  { left:-100px; top:0;}
	22.2%  { left:-200px; top:0;}
	33.3%  { left:-300px; top:0;}
	44.4%  { left:-400px; top:0;}
    55.5%  { left:-500px; top:0;}
	66.6%  { left:-600px; top:0;}
	77.7%  { left:-700px; top:0;}
	88.8%  { left:-800px; top:0;}
  100% {left:0px; top:0;}
}
@-moz-keyframes myfirst /* Firefox */
{
	0%   { left:0px; top:0;}
	11.1%  { left:-100px; top:0;}
	22.2%  { left:-200px; top:0;}
	33.3%  { left:-300px; top:0;}
	44.4%  { left:-400px; top:0;}
  55.5%  { left:-500px; top:0;}
	66.6%  { left:-600px; top:0;}
	77.7%  { left:-700px; top:0;}
	88.8%  { left:-800px; top:0;}
  100% {left:0px; top:0;}
}

@-webkit-keyframes myfirst /* Safari and Chrome */
{
	0%   { left:0px; top:0;}
	11.1%  { left:-100px; top:0;}
	22.2%  { left:-200px; top:0;}
	33.3%  { left:-300px; top:0;}
	44.4%  { left:-400px; top:0;}
  55.5%  { left:-500px; top:0;}
	66.6%  { left:-600px; top:0;}
	77.7%  { left:-700px; top:0;}
	88.8%  { left:-800px; top:0;}
  100% {left:0px; top:0;}
}

@-o-keyframes myfirst /* Opera */
{
	0%   { left:0px; top:0;}
	11.1%  { left:-100px; top:0;}
	22.2%  { left:-200px; top:0;}
	33.3%  { left:-300px; top:0;}
	44.4%  { left:-400px; top:0;}
  55.5%  { left:-500px; top:0;}
	66.6%  { left:-600px; top:0;}
	77.7%  { left:-700px; top:0;}
	88.8%  { left:-800px; top:0;}
   100% {left:0px; top:0;}
}

    </style>
</head>
<body>
    <div id="div">
        <ul id="box">
            <li><img src="./img/o1.jpg"/></li>
            <li><img src="./img/o2.jpg"/></li>
            <li><img src="./img/o3.jpg"/></li>
            <li><img src="./img/o4.jpg"/></li>
            <li><img src="./img/o5.jpg"/></li>
            <li><img src="./img/o6.jpg"/></li>
            <li><img src="./img/o7.jpg"/></li>
            <li><img src="./img/o8.jpg"/></li>
            <li><img src="./img/o9.jpg"/></li>
        </ul>
    </div>
</body>
</html>

最后唠叨一句,该动画不支持IE9及更早版本的IE浏览器


喜欢的话,就点赞支持一下吧!