javascript实现倒计时并弹窗提示特效


Posted in Javascript onJune 05, 2015

在前端开发中,难免会用到倒计时。如做的双十一活动,在距活动开始的半个月前需要做些宣传工作,需要告知用户优惠活动什么时候开始。这个时候就要用到倒计时,如在整站的某个页面提醒用户活动什么时候开始等。而在活动的后期,特别是在距活动结束仅有1天左右时,就要用到弹窗倒计时。这个倒计时设置在整站的首页顶部(当然也可以设置在其它地方,如首页中部等),并设置弹窗弹出10秒后自动消失,由用户决定是否点击到相应的活动页面,购买产品。

需要的技术支持:CSS3,jQuery库;

HTML代码如下:

<section class="the_body">
  <div class="countdown">
    <h3>距中国雄于地球之日还有</h3>
    <div class="countdown_time">
     <span class="the_days"><i>0</i><i>3</i></span>
     <i class="date_text">天</i>
     <span class="the_hours"><i>0</i><i>7</i></span>
     <i class="date_text">时</i>
     <span class="the_minutes"><i>4</i><i>7</i></span>
     <i class="date_text">分</i>
     <span class="the_seconds"><i>1</i><i>1</i></span>
     <i class="date_text">秒</i>
    </div>
  </div>
</section>

css代码如下:

.the_body{width: 100%;max-width: 640px;min-width: 320px;margin: 0 auto;}
.countdown{background:#ffec20;padding: 10px 0;}
.countdown h3{margin:0;padding:5px 0;color:#f53544;text-align:center;font-size:14px;}
.countdown .countdown_time{display:block;width:100%;text-align:center;}
.countdown .countdown_time i{display:inline-block;position:relative;padding:0 3px;font-style:normal;background:#fff;
margin:0 2px;border-radius:3px;box-shadow:0px 1px 1px #ccc;border-bottom:1px solid #cfcfcf;font-weight
:bold;}
.countdown .countdown_time i:after{content:"";width:100%;border:1px solid #cfcfcf;border-width:1px 0 0;position:absolute;
bottom:1px;left:0;}
.countdown .countdown_time i:before{content:"";width:100%;border:1px solid #cfcfcf;border-width:1px 0 0;position:absolute;
bottom:3px;left:0;}
.countdown .countdown_time .date_text{background:transparent;font-weight:bold;box-shadow:none;
border-bottom:none;text-decoration:none;padding: 0;}
.countdown .countdown_time .date_text:after{content:"";border:none;}
.countdown .countdown_time .date_text:before{content:"";border:none;}

JavaScript代码如下:

<script>
function remaintime() {
 var date = new Date("Jan 1,2015 00:00:00");//设置倒计时结束时间
 var nowdate = new Date();//获取当前日期
 var remaintime = date.getTime() - nowdate.getTime();//获取现在到倒计时结束时间的毫秒数
 var remainday = Math.floor(remaintime / (1000 * 60 * 60 * 24));//计算求得剩余天数
 var remainhour = Math.floor((remaintime - remainday * 1000 * 60* 60 * 24)/ (1000 * 60 * 60));//计算求得剩余小时数
 var remainminute = Math.floor((remaintime - remainday * 1000 * 60* 60 * 24 - remainhour * 1000 * 60 * 60)/ (1000 * 60));//计算求得剩余分钟数
 var remainsecond = Math.floor((remaintime - remainday * 1000 * 60 * 60 * 24- remainhour * 1000 * 60 * 60 - remainminute *
    1000 * 60) / (1000));//计算求得剩余秒数
 //当剩余天数小于10时,就在其前加一个0,以下剩余小时数、分钟数与秒数与此相同
 if (remainday < 10) {
  remainday = "0" + remainday;
 }else{remainday+="";
 //当剩余天数大于10时,剩余天数为数值,这是需要将该值转换为字符串,以下的剩余小时数、分钟数与秒数与此相同
}
 if (remainhour < 10) {
  remainhour = "0" + remainhour;
 }else{remainhour+="";}
 if (remainminute < 10) {
  remainminute = "0" + remainminute;
 }else{remainminute+="";}
 if (remainsecond < 10) {
  remainsecond = "0" + remainsecond;
 }else{remainsecond+="";}
 $(".the_days i:first-child").html(remainday.substr(0, 1));
 $(".the_days i:last-child").html(remainday.substr(1, 2));
 $(".the_hours i:first-child").html(remainhour.substr(0, 1));
 $(".the_hours i:last-child").html(remainhour.substr(1, 2));
 $(".the_minutes i:first-child").html(remainminute.substr(0, 1));
 $(".the_minutes i:last-child").html(remainminute.substr(1, 2));
 $(".the_seconds i:first-child").html(remainsecond.substr(0, 1));
 $(".the_seconds i:last-child").html(remainsecond.substr(1, 2));
 setTimeout("remaintime()",1000);//设置1秒后调用remaintime函数
}
remaintime();
setTimeout(function(){$(".countdown").hide();},10000);//在首页设置的弹窗效果,在分页这段代码可以不设置
</script>

这是我自己写的倒计时效果,当然每个人都可以根据自己的爱好,设置倒计时的效果。如你可以只显示“几天几时几分”,但个人觉得没有设置到“几天几时几分几秒”够气氛。这里的样式也都可以根据自己的喜好改动,但最终的效果都是制造活动开始前的火热氛围。

至于这里的html代码、css代码及JavaScript代码需要注意的也说下:

1.html代码就不多说,主要就是怎么设置dom,以易于JavaScript操作;

2.css代码,这里主要用了:before与:after伪类,设置倒计时数值的立体效果;

3.JavaScript代码也是很简单的一个函数,这里你需要将得到的剩余时间转换为字符串,以便于字符串的截取显示等。另外,用setTimeout函数设置隔1秒执行一次函数,以动态显示剩余时间,当然也可以用setInterval函数,这两个函数设置的效果基本相同。

至此,一个简单的倒计时效果就做出来了。如果要在首页设置弹窗倒计时,你可以把背景设置的更炫酷一点,这样可以吸引用户点击,并设置10秒后弹窗自动消失(或者设置一个关闭按钮等)。

倒计时的实现可以有很多种方式,在这里也就先介绍这一种,以后有时间将会继续总结。

以上所述就是本文的全部内容了,希望能够对大家了解javascript有所帮助。

Javascript 相关文章推荐
jQuery 使用手册(三)
Sep 23 Javascript
jquery的$(document).ready()和onload的加载顺序
May 26 Javascript
理解JavaScript中的对象 推荐
Jan 09 Javascript
改进版通过Json对象实现深复制的方法
Oct 24 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
Nov 13 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
jQuery实现左右切换焦点图
Apr 03 Javascript
jQuery点击其他地方时菜单消失的实现方法
Apr 22 Javascript
JavaScript奇技淫巧44招【实用】
Dec 11 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
Feb 20 Javascript
jQuery实用密码强度检测
Mar 02 Javascript
Vue-CLI项目中路由传参的方式详解
Sep 01 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
Jun 05 #Javascript
基于jQuery+JSON的省市二三级联动效果
Jun 05 #Javascript
简介JavaScript中Boolean.toSource()方法的使用
Jun 05 #Javascript
判断访客终端类型集锦
Jun 05 #Javascript
JavaScript中constructor()方法的使用简介
Jun 05 #Javascript
JavaScript中的原型prototype属性使用详解
Jun 05 #Javascript
HTML5使用DeviceOrientation实现摇一摇功能
Jun 05 #Javascript
You might like
php入门学习知识点三 PHP上传
2011/07/14 PHP
php处理斐波那契数列非递归方法
2012/02/04 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
2011/07/11 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
详解jquery中$.ajax方法提交表单
2014/11/03 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
jQuery解决input超多的表单提交
2015/08/10 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
Python用for循环实现九九乘法表
2018/05/31 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
SQL Server面试题
2016/10/17 面试题
迟到检讨书800字
2014/01/13 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
会议主持词
2014/03/17 职场文书
违反交通法规检讨书
2014/09/10 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
幼儿园大班见习报告
2014/10/31 职场文书
初中家长评语和期望
2014/12/26 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
妇产科护理心得体会
2016/01/22 职场文书
公司转让协议书
2016/03/19 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
详解python的内存分配机制
2021/05/10 Python