来写一个讨人厌牛皮癣的广告
我们在浏览网页的时候,有时会看到一直在屏幕动的很烦人的广告,它会游走于整个页面,直到碰到边缘框才换方向。我称它为牛皮癣广告。
下面我们用js原生来写这样一个牛皮癣的广告。
Html代码
<img src="img/img04.jpg" id='demo' class="demo" alt="" /> <!-- 随便找一个图片 -->
js代码
<script>function $(str) {return document.getElementById(str);}function move() {//0 代表向右移动 1代表向左移动var leftState = 0;var topState = 0;setInterval(function() {var left = parseInt($('demo').style.left);left = isNaN(left) ? 0 : left;var winW = window.innerWidth;//如果左移动的下次距离 大于浏览器的宽度//左边距-图片的宽度+下次运行的距离>浏览器宽度if (left - 2 > 0 && leftState == 1) {$('demo').style.left = left - 2 + 'px';} else if ((left + 100 + 2) < winW && leftState == 0) {$('demo').style.left = left + 2 + 'px';} else if ((left + 100 + 2) >= winW && leftState == 0) {leftState = 1;} else if (left - 2 <= 0 && leftState == 1) {leftState = 0;}var top = parseInt($('demo').style.top);top = isNaN(top) ? 0 : top;var winH = window.innerHeight;//如果左移动的下次距离 大于浏览器的宽度 //左边距-图片的宽度+下次运行的距离>浏览器宽度if (top - 2 > 0 && topState == 1) {$('demo').style.top = top - 2 + 'px';} else if ((top + 100 + 2) < winH && topState == 0) {$('demo').style.top = top + 2 + 'px';} else if ((top + 100 + 2) >= winH && topState == 0) {topState = 1;} else if (top - 2 <= 0 && topState == 1) {topState = 0;}}, 20)}window.onload = function() {move();}</script>
var left = parseInt($('demo').style.left);
left是左移动的距离,console.log的结果一开始是NaN,后面是不同的数字。如下图:
window.innerWidth返回窗口的文档显示区的宽度。
window.innerheight返回窗口的文档显示区的高度。
更多window对象相关可参考Window 对象
其实原理很简单,就是利用了广告与窗口的距离,与窗口的宽度相比较,从而确定下一步广告与窗口的距离,形成移动的效果。
最后我们来看一下效果:
来写一个讨人厌牛皮癣的广告相关推荐
- 用C++写一个三人表决器
昨天离散数学老师布置了一道编程题: 设计并编程实现一个3人表决开关电路.设三个裁判分别为A.B.C,有两个及以上裁判同意,则通过表决:否则,未通过表决.同意与否通过键盘输入,可以用0.1或T.F表示. ...
- 用小程序云开发写一个多人记账小程序
应女朋友要求,用小程序云开发写一个记账小程序,适合情人记账.家庭记账.团队记账.多人记账的小程序 先上成品图吧 主页: 记账页: 详情页: 个人中心页: 统计页: 其余的页面就不一一展示了,使用到的主 ...
- 用JS写右下角烦人的弹窗小广告
啦啦啦啦,写一下最近JS的学习进度. 最近JS学了DOM.正则.定时器- 用定时器写了一个右下角的弹窗广告. 先写一下定时器的基本概念 周期定时器:setInterval(function,每间隔多少 ...
- 如何设计一个不讨人厌的AI?“恐怖谷”了解一下
随着AI时代的到来,越来越多的智能设备进入了我们的生活.它们在给我们带来更多功能和便利的同时,也被赋予了更多"人性化"的特征,比如能说会动,有人格有情绪,甚至会思考. 面对这么多越 ...
- 用C++写一个没人用的ECS
github地址:https://github.com/yangrc1234/Resecs 在做大作业的时候自己实现了一个简单的ECS,起了个名字叫Resecs. 这里提一下一些实现的细节,作为回顾. ...
- 一分钟学会如何写一个让人有点击欲望的自媒体文章标题
文章的标题和首图就决定了文章的用户的阅读量.内容再好,标题和首图没吸引力= 白费功夫!所以标题和首图直接关系到用户有没有点开这篇文章的欲望!下面介绍热门标题的五个重要元素 数字:常见公式是数字+好处 ...
- html一排小标题怎么写,如何写标题吸引人,100个优美小标题推荐
我们自媒体人都知道标题的重要性,一个好的标题可以给我们带来巨大的流量,如果你想写一个吸引人的标题的话,可以按照下面的方法来写. 1.经历型标题 经历型标题是指通过实践得出的经验然后分享,这类标题获得用 ...
- 打印工资条怎么做到每个人都有表头明细_朋友说:能不能用python,帮我写一个“制作工资条”的自动化程序?...
本文说明 今天和一个朋友吃饭,她说我经常使用Excel制作工资条,但是每个月都要做一遍,你能不能用python写一个代码,能够自动化完成这个工作.这当然可以啦,就是这么牛逼! 我们先来看看原始数据是什 ...
- 如何彻底解决烦人的 MySQL 分库分表问题?写一个更好的数据库!
作者 | 黄东旭 责编 | 郭 芮 我还清楚记得,五年前的这个时候,当时还在豌豆荚,午后与刘奇和崔秋的闲聊关于未来数据库的想象,就像一粒种子一样,到了今天看起来也竟枝繁叶茂郁郁葱葱,有点感慨.按照 ...
最新文章
- linux系统下的“静态库和动态库”专题之二:库的创建和使用
- java 强制清除缓存_IDEA强制清除Maven缓存的方法示例
- nginx限制上传大小和超时时间设置说明/php限制上传大小
- 采用install.sh安装脚本进行快速安装astercc
- 12.UNIX 环境高级编程--线程控制
- 微信小程序云数据库使用讲解
- 人民搜索再体验 标题抽取存在问题
- HTML a 标签详解
- 操作系统 - startx/xinit
- 喜欢看漫画的小伙伴就不要错过啦,python批量爬取动漫免费看
- 做一款仿打车软件需要多少钱?
- smb.php如何使用,win10smb1协议怎么开
- java中画幅相机推荐_中画幅数码相机推荐
- ArcGIS地理标记照片转点
- 安装银河麒麟桌面系统V10【超详细图文教程】
- 自动转义json的两种方法
- Dropout技术之随机神经元与随机深度
- 培训人要转型?先回答这6个问题
- 首届“网刃杯”网络安全大赛部分WP
- 中国彻底放弃2G网络仍需十年时间
热门文章
- shell编程的MD5校验
- 【U8 15.1】采购发票金额错了如何调整?
- Java job interview:项目架构研发使用Apache Kylin搭建企业级开源大数据分析平台
- CentOS安装外部源,然后通过yum安装rhythmbox音乐播放插件
- 深入浅出地理解STM32中的定时器工作原理
- 百度、Google 的搜索参数
- CUDA ERROR: device-side assert triggered at 和unable to get repr for <class ‘torch.Tensor‘>问题及解决思路
- C. Discrete Acceleration
- oracle ash 脚本 查询,[20210112]ashtop查询特定表的SQL语句.txt
- 当当网---你怎么了?