杨校老师课堂之JavaScript右下角广告弹框教程
案例制作思路:
1、先制作界面
添加一个盒子包含一个按钮,使盒子绝对定位在右上角
添加一个大盒子,同理,将盒子居于左下角;其中内部包含一个顶端盒子和底部盒子
顶端盒子因为是属于大盒子内部的存在,所以宽度是占满整个大盒子的宽度,内部文本设置字体12号、居中显示、加粗
底部盒子因为也是属于大盒子内部的存在,所以宽度也是占满整个大盒子的宽度,内部文本设置字体12号、居中显示、加粗、行高等
2、经思考分析,因为页面是在打开后3秒中进行跳转,所以需要一个延迟定时器(SetTimeout(code,millisec); code是代表一个函数的引用,millisec代表定时的毫秒数) 。所以页面一打开是没有广告存在的,所以在大盒子的css中不存在高度的设置,另设置了隐藏显示的属性!
3、获取盒子的位置,并且设置其高度,进行接收。但是因为后的是一个对象,需要将对象进行转换成为数字。
4、如果该数字等于0 ,表示该盒子处于隐藏的状态,则将其通过display属性中的block块状 来显现出来。【此时在右下角已然存在盒子了,只不过高度为0,需要放大进行查看】
5、接下来,我们来操作盒子的高度问题。
解决方案:我们可以通过定时器去完成盒子的高度设置。
5.1.1、获取盒子
5.1.2、获取盒子的高度
5.1.3、判断接收到的参数是盒子高度递增或递减,若是递增参数,则需要判断盒子是否依然显示,若没有,将其递增显示,否则清除递增定时器。 若是递减参数,则需要判断盒子是否依然显示,若显示,将其递减到0,否则清除递增定时器并且隐藏盒子。
预览效果图:
Html代码:
<html> </head> <body> <div id="div"> <button onclick="tips_pop()">3秒后会在右下角自动弹出窗口,如果没有弹出请点击这个按钮</button> </div> <!--大盒子--> <div id="ad"> <!--顶端小盒子--> <div class="toppop"> <b>您有新的短消息!</b><span onclick="tips_pop()">X</span> </div> <!--底端小盒子--> <div class="bottompop">1条未读信息(...)</div> </div> </body> </html>
Css代码:
#div{ /*按钮盒子*/ position: absolute; /*大盒子的定位为绝对定位*/ right: 0; /*大盒子距离右方为0像素*/ top: 0; /*大盒子距离上方为0像素*/ } #ad{ /*大盒子*/ width: 200px; /*大盒子的宽度*/ height: 0; /*大盒子的高度*/ border: 1px solid #666;/*边框线为1像素 实线 灰黑色*/ position:absolute; /*大盒子的定位为绝对定位*/ bottom: 0px; /*大盒子距离下方为0像素*/ right: 0px; /*大盒子距离右方为0像素*/ display: none; /*不显示*/ } .toppop{ /*顶端盒子*/ width: 100%; /*宽度自动适应到最宽*/ height: 22px; /*上面的盒子高22像素*/ background: gold; /*背景颜色为金黄色*/ text-align: center; /*字体居中*/ font-size: 12px; /*字号为12像素*/ } .toppop span{ /*顶端盒子 中的 X*/ position: absolute; /*位置:绝对定位*/ right: 0; /*距离右侧边距为0*/ top: -1px; /*距离顶端距离为-1像素*/ color: #fff; /*“X”的颜色为白色*/ cursor: pointer; /*cursor 代表的是光标的类型;pointer代表 的是 一只小手*/ } .bottompop{ /*底端盒子*/ width: 100%; /*宽度自动适应到最宽*/ height: 88px; /*下面的盒子高88像素*/ font-size: 12px; /*字号为12像素*/ text-align: center; /*字体居中*/ font-weight: 900px; /*字体为粗体*/ color: #ff0000; /*颜色为红色*/ line-height: 80px; /*字体的行高为80像素*/
JavaScript代码:
<script type="text/javascript"> window.onload = function(){ // 页面加载 document.getElementById("ad").style.height = '0px' // setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。 setTimeout("tips_pop()",3000); // 设置定时器(每过3秒执行一次tips_pop) } function tips_pop(){ var Msgpop = document.getElementById("ad"); // parseInt() 函数可解析一个对象,并返回一个整数 var popH = parseInt(Msgpop.style.height) // 将对象的高度转换成为数字 if(popH == 0){ //如果盒子的高度等于0 ,表示看不到 所以 处于一个隐藏状态 Msgpop.style.display="block"; //如果等于0,则去显示出来 show = setInterval("changeH('up')",3)// 设置定时器(显示的函数) }else{ hide = setInterval("changeH('down')",3)// 设置定时器(隐藏的函数) } } function changeH(str){ var Msgpop = document.getElementById("ad");//Msgpop 代表的是大盒子 var popH = parseInt(Msgpop.style.height);//将对象的高度转换成为数字 //popH 代表盒子的高度 [是数字] if(str == 'up'){ // 判断接受的参数是否是 up 如果是 则执行下方内容 if(popH <= 100){ //JavaScript toString()把数字转换为字符串: Msgpop.style.height = (popH + 4).toString() + 'px';//设置大盒子的高度 }else{ clearInterval(show); } } if(str == 'down'){ if(popH>=4){ Msgpop.style.height = (popH - 4).toString() + 'px';//设置大盒子的高度 }else{ clearInterval(hide); // 清除定时器(隐藏的函数) Msgpop.style.display = 'none'; //隐藏该盒子 div } } }
作者: 杨校
出处: http://www.cnblogs.com/xiaoxiao5016
分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(397583050@qq.com)咨询。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
2018-05-11 第五天
一、条件运算符: java 中唯一的一个三目运算符。 需要三个操作数(三个表达式)。 语法:表达式-1 ? 表达式-2 :表达式-3 ; 表达式-1: 必须是一个boolean 表达式(返回值是boolean值的表达式)。 表达式-2,3 是java 任意的表达式,但是两个表达式的返回值的类型要兼容。 执行过程: 1:计算表达式-1的返回值。 2:根据表达式-1 的返回值 ,如果是true,那么就执行表达式-2 并返回该值作为整个条件表达式的返回值。 3:如果 表达式-1 的返回值 是 false,那么就跳过表达式-2 ,执行并返回表达式-3 的值。 //条件运算符 public class TestThree{ public static void main(String[] args){ // 随机得到两个随机数,[10-30],打印结果。 // 将两个随机数中比较大的值输出。 //定义区间 final int MIN = 10,MAX = 31; int num1 = (int)(Math.random()*(MAX-MIN)+MIN); int num2 = (int...
-
下一篇
SpringBoot自定义拦截器实现IP白名单功能
SpringBoot自定义拦截器实现IP白名单功能 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8993331.html 首先,相关功能已经上线了,且先让我先祷告一番: 阿门~ (-__-) 额,正文开始前我先说两句吧,能完成这个功能十分感谢csdn网友的一篇帖子的帮助,在此深表以感谢! 这位朋友的源贴也很不错,如觉得我写的不好,可以移步这里:https://blog.csdn.net/u011244202/article/details/54895038 先,我简要的说下这样做的原因,公司现在的主体架构是thinkphp的,由于php的开发人员走的已经差不多了再加上php岗位一时半会也很难补上,另外工头也是写java的...,算是元婴种种吧,现在所有的主体功能代码都慢慢的往java方向迁移,同时,请注意,java的开发人员目前来看只有我一个,遂架构迁移只能以springboot模块功能的方式逐步走,前端的架构刚开始走,又不能上线,只能将开发出来的模块给php后端调用,两种语言的后端数据交互又不能太复杂(就是不能加Auth),否则会加重php与...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2配置默认Tomcat设置,开启更多高级功能