如何设计页面固定广告的效果

JavaScript 动态网页实例 —— 广告效果 广告是现代网页设计中不可或缺的内容。广告可以有很多种形式,但最终目的都是要吸引观众的注意力。尽管广告少不了画面、音效和广告语等效果,但其实现主要还是应用JavaScript 代码,只要很好掌握了JavaScript程序设计,剩下的就是创意和美工了。本章介绍几种广告效果,包括对联广告、飘动广告、滚动广告和特殊视觉效果的广告,相信读者会从中受到启发。 阅读详情

转自:http://www.cnblogs.com/dennisit/archive/2013/03/20/2971969.html

处于盈利的需要,很多网页上都会放置文字或图片广告,固定位置的广告出现在页面固定的位置,在用户拖动滚动条浏览网页的过程中,广告会根据页面滚动的位置自动调整,保持出现在用户的视野内.

 

接下来介绍如何设计该种效果

固定广告的设计思路

1.广告的设计

  因为希望广告放置于页面特定的位置中,所以应该通过CSS广告元素的布局方式为绝对布局方式(position:absolute),具体做法是将广告图片与关闭广告的文字放入一个div层中.在通过css指定层的样式.

 

2.事件的处理

单击广告内容,进行相应的页面跳转

/*单击触发的事件*/ 
function adOnClick(){ 
	window.location.href=http://www.cnblogs.com/dennisit/; 
}
单击广告关闭按钮,执行层获取,样式隐藏,使用divobj.innerHTML=””,进行广告销毁
 
/*关闭触发的事件*/
            function adClosed(){
                var ad = document.getElementById("ad");
                //隐藏层,并清空层中的内容
                ad.style.display="none";
                ad.innerHTML="";
            }
 

 

3.广告位置固定

使用Javascript进行事件监听操作,因为要监听的是窗体滚动事件,所以应对window对象添加onscroll事件.为了让广告保持在页面可视范围中的固定位置,

广告的纵坐标应该为:广告距离页面上端的相对距离+垂直滚动条滚动距离.

广告的横坐标应该为:广告距离页面左端的相对距离+水平滚动条滚动距离.

可以通过document.body的scrollTop属性获取垂直滚动条的滚动距离,通过document.body的scrollLeft属性获取水平滚动条的滚动距离.

为了视觉上的动态效果,使用window对象的setTimeout方法定时进行移动.每次移动坐标距离的1/5.

//记录widow.setTimeout定时操作的句柄
            var timeHandler;

            window.onscroll = function() {
                //如果上一次的移动效果还未完成则终止
                if (timeHandler) window.clearTimeout(timeHandler);
                var ad = document.getElementById('ad');
                /*
                    #ad中的相应属性值    left:10px; top:90px;
                */
                var oldX = ad.offsetLeft;    //获取广告的当前位置   
                var oldY = ad.offsetTop;    //获取广告的当前位置
                var targetX = 10 + document.body.scrollLeft;  //计算出希望移动到的新位置
                var targetY = 90 + document.body.scrollTop;  //计算出希望移动到的新位置
                //开始移动效果
                move(oldX,oldY,targetX,targetY);
            }

            function move(oldX,oldY,targetX,targetY) {
                var isMove = false;    //是否需要移动
                var ad = document.getElementById('ad');
                //Y方向的判断
                //判断是否已经接近了目标位置
                if (oldY + (targetY - oldY) / 5 >= targetY) {
                    //如果已经接近了目标职位,将图片移动到目标位置
                    ad.style.top = targetY;
                    //释放句柄引用
                    timeHandler = null;
                } else {
                    //如果远离目标位置,每次移动相距距离的1/5
                    oldY += (targetY - oldY) / 5;
                    ad.style.top = oldY;
                    isMove  = true; //需要移动
                }
                //X方向判断
                //判断是否已经接近了目标位置
                if (oldX + (targetX - oldX) / 5 >= targetX) {
                    //如果已经接近了目标职位,将图片移动到目标位置
                    ad.style.left = targetX;
                    //释放句柄引用
                    timeHandler = null;
                } else {
                    //如果远离目标位置,每次移动相距距离的1/5
                    oldX += (targetX - oldX) / 5;
                    ad.style.left = oldX;
                    isMove = true;    //需要移动
                }
                //0.05秒后进行下一次移动
                if(isMove){
                    timeHandler = window.setTimeout('move(' + oldX + ', ' + oldY + ',' + targetX + ', ' + targetY + ')', 50);
                }
            }

4.特殊处理

当用户拖动滚动条时,如果上一次的移动距离效果还没有完成,则需要终止上一次的移动,从当前的位置开始新的移动效果.否则会出现连续拖动滚动条后广告图片抖动的不良效果.

 

效果图:

完整代码:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=GBK">   
        <title>固定位置的广告</title>
        <style>
            /*用来模拟大页面,使页面出现垂直和水平滚动条*/
            #container{   
                width:2000px;
                height:800px;
                background-color:#E6EEF9;
            }
            #ad{
                position:absolute;
                left:10px;
                top:90px;
                width:116px;
                height:190px;
                background-color:#eee;
                font-size:12px;
            }
           
            .adtitle{
                width:116px;
                height:25px;
                line-height:25px;
                text-align:center;
                color:white;
                background-color:#C80901;
                padding:0px;
            }
            .adcontent{
                width:116px;
                height:142px;
                cursor:pointer;
                padding:0px;
                margin:0px;
            }
            .adclose{
                padding:0px;
                text-align:center;
                width:116px;
                height:25px;
                line-height:25px;
                background-color:#3E3E3E;
                cursor:pointer;
            }
        </style>
        <script>
            //记录widow.setTimeout定时操作的句柄
            var timeHandler;

            window.onscroll = function() {
                //如果上一次的移动效果还未完成则终止
                if (timeHandler) window.clearTimeout(timeHandler);
                var ad = document.getElementById('ad');
                /*
                    #ad中的相应属性值    left:10px; top:90px;
                */
                var oldX = ad.offsetLeft;    //获取广告的当前位置   
                var oldY = ad.offsetTop;    //获取广告的当前位置
                var targetX = 10 + document.body.scrollLeft;  //计算出希望移动到的新位置
                var targetY = 90 + document.body.scrollTop;  //计算出希望移动到的新位置
                //开始移动效果
                move(oldX,oldY,targetX,targetY);
            }

            function move(oldX,oldY,targetX,targetY) {
                var isMove = false;    //是否需要移动
                var ad = document.getElementById('ad');
                //Y方向的判断
                //判断是否已经接近了目标位置
                if (oldY + (targetY - oldY) / 5 >= targetY) {
                    //如果已经接近了目标职位,将图片移动到目标位置
                    ad.style.top = targetY;
                    //释放句柄引用
                    timeHandler = null;
                } else {
                    //如果远离目标位置,每次移动相距距离的1/5
                    oldY += (targetY - oldY) / 5;
                    ad.style.top = oldY;
                    isMove  = true; //需要移动
                }
                //X方向判断
                //判断是否已经接近了目标位置
                if (oldX + (targetX - oldX) / 5 >= targetX) {
                    //如果已经接近了目标职位,将图片移动到目标位置
                    ad.style.left = targetX;
                    //释放句柄引用
                    timeHandler = null;
                } else {
                    //如果远离目标位置,每次移动相距距离的1/5
                    oldX += (targetX - oldX) / 5;
                    ad.style.left = oldX;
                    isMove = true;    //需要移动
                }
                //0.05秒后进行下一次移动
                if(isMove){
                    timeHandler = window.setTimeout('move(' + oldX + ', ' + oldY + ',' + targetX + ', ' + targetY + ')', 50);
                }
            }

            /*单击触发的事件*/
            function adOnClick(){
                window.location.href="http://www.cnblogs.com/dennisit/";
            }
            /*关闭触发的事件*/
            function adClosed(){
                var ad = document.getElementById("ad");
                //隐藏层,并清空层中的内容
                ad.style.display="none";
                ad.innerHTML="";
            }
        </script>
    </head>
    <body>
        <div id="ad">
            <div class="adtitle">广告标题</div>
            <div class="adcontent">
                <img src="images/info.png" onClick="adOnClick()"/>
            </div>
            <div class="adclose" onClick="adClosed()">关闭</div>
        </div>
        <div id="container">
        </div>
    </body>
</html>

HTML&CSS案例---咖啡店 HTML&CSS案例—咖啡店 最终页面效果 页面结构为:最上面header是一个头部,主要是一张图片;下面的nav是一个导航栏,包含五个链接;下面是主体部分,左侧的上面是一个表格,下面是四张图片,当鼠标放到图片上会有一个放大的效果,右侧有4个div是四种咖啡的详细介绍;最下面有一个脚本。具体代码如下; HTML代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &l 阅读详情

相关推荐

Arduino+esp8266+blinker物联网开发

文章目录blinker点灯一.简介二.开发环境的搭建1.arduino的安装2.添加esp8266开发板3. blinker库的导入4.驱动的安装4.手机端安装app三.开发第一个点灯程序1.添加设备2.载入示例3.代码部分4.代码讲解5.程序烧写四.总结 blinker点灯 一.简介 为了加深为物联网知识的认识,今天就教大家如何用手机app来控制我们的开发板。我们的开发环境是以arduino I...

weixin_45631738的博客 3万+

JavaScript前端——小广告固定相对页面位置不变(window事件)笔记(一)

吸顶广告效果:小广告固定在页面顶端,随着翻页相对页面位置不变 HTML部分——插入一张图片(小广告)用css设置其大小及位置 <img src="imge/t1.jpg" id="ad" style="position:absolute; left: 0px;top:0px;z-index: 1; width: 100px;height: 50px;"> <div id="" style="height: 1500px;background-color: lightblue

懒猫 878

TekTronix 高速信号完整性基础以及测试方法分析

如果信号速率比较高,则CTLE与FFE都无法满足要求,尤其是大于10G,比如USB3.1Gen2 10Gbps,PCIe4.0 16Gbps,这些场合都会采用DFE均衡,DFE的优点是,它既可以识别当前比特,并且可以判决前面的n个比特(Tap的阶数越高,看到的前面的比特数越多),根据前面比特的变化来计算出要处理当前比特所要变化的幅度,来补偿由于前面比特变化所引起的信号幅度的变化。10G以下,一般都不太关心这个串扰,高于10G的信号,会发现相互之间的串扰越来越明显,已经成为引起误码的重要的原因之一。

weixin_45365488的博客 4143

页面左右两边跟随式广告框

当我们浏览一些网页时我们会发现页面的的边上会有广告图片,当滚动滚动条的时候这些广告图片会跟随性的随页面一起运动(这里我叫它为广告框)。一些网页的广告框是固定在浏览器上的用background:fixed;便可实现。这里我用JavaScript简单的制作了一个随滚动缓冲运动的广告框。 制作的原理比较简单,大家都有一个完美的js运动框架,这里的缓冲运动需要用到。这里的广告框设定的是跟随滚动条缓冲运动并运

梵海 4031

vivado下ECO操作-不重新综合实现修改属性并生成.bit

ECO即engineer change order,即工程变更指令,可以对设计做局部小改动并只对改动部分重新布局布线并生成.bit。在一个工程动辄编译几个小时情况下,可以在调试中节省大量时间。比如我们在调试中,需要改变时钟占空比或者相位,需要改变寄存器初值等等,此时用ECO暂时改动,待验证后在重新编译无疑是最有效率的方法。 实现ECO通常有两种方式,一是通过vivado界面完成,另一种方法就是tcl脚本。所有的ECO操作都可以通过tcl操作完成,有的操作用vivado界面无法完成,只能通过tcl。以下主要

4657

摄像头模组选型避坑指南:如何根据Sensor和Lens参数匹配最佳组合

本文深入解析摄像头模组选型中Sensor与Lens的核心参数匹配要点。重点阐述了主光线角(CRA)匹配对边缘画质的关键影响,并提供了传感器尺寸、像素尺寸、焦距、光圈等参数的协同选型策略与实战避坑指南,帮助工程师在手机、安防、车载等不同应用场景下实现性能与成本的最佳平衡。

ee345的博客 619

html固定广告位置,如何将广告始终定位到网页右下角

互联网提供了很多种“将广告始终定位到网页右下角”的解决方案,大多会用到javascript,其实仅调用样式表就可以实现该效果。万恶的代码主要是写给IE6的,在IE7和FF浏览器中,只需要position:fixed就可以将图层定义到网页的任意位置。演示页面如下:fixd-layer-in-ie6有一句非常重要的话需要理解。fixed元素的绝对位置是相对于HTML元素来说,滚动条是body元素的。才...

weixin_28882363的博客 1738

30分钟搭建AI科研写作工作台:基于WorkBuddy的论文全流程加速实践

在人工智能技术日益普及的今天,如何利用智能工具提升专业领域工作效率成为关键课题。其核心原理在于通过模块化设计,将复杂的任务流程拆解为可复用、可编排的标准化技能单元,并结合精准的指令控制,实现从通用对话到深度任务执行的转变。这一技术价值在于显著降低重复性劳动强度,将人的创造力聚焦于核心决策与创新环节。在科研写作、数据分析、代码开发等场景中,这类智能工作台能有效辅助完成文献调研、内容生成、格式校验等繁琐步骤。本文以科研论文写作为具体应用场景,深入探讨如何利用WorkBuddy这一智能工作台,通过配置核心科研技能

weixin_29032489的博客 1524

关于侧边栏固定广告

关于各类浮动的侧边栏小广告的实现. 纯css的方式实现:主要在于position属性中的fixed,固定侧边,在设置方位后,就能始终处于页面左侧或者右侧.这是最简便的实现方式.但是又一个兼容性的问题,就是在ie6下是无法设置的.所以需要一些额外 .fixed{ position:fixed; clip:rect(0 100% 100% 0); _positio...

weixin_34104341的博客 371

Xilinx Chip2Chip IP核实战:Aurora PHY通信配置与仿真避坑指南

本文深入解析Xilinx Chip2Chip IP核与Aurora PHY的通信配置与仿真优化,提供实战避坑指南。通过AXI协议转换桥实现FPGA间高速数据传输,详细讲解Aurora PHY参数设置、仿真加速技巧及常见问题解决方案,帮助工程师快速部署稳定高效的芯片间通信系统。

g5h6i7j的博客 1007

在线考试题库抓取:Python 爬虫抓取各类在线考试平台题库和试题

通过这些技术,您可以抓取各类在线考试平台上的题库数据,进行数据分析、生成练习题集,甚至用于考试准备。为了演示抓取过程,本篇博客选择了两个常见的在线考试平台进行数据抓取:一个是教育考试平台(如“中小学题库”),另一个是职业考试平台(如“华图教育”)。对于这些网站,我们需要找到包含题库信息的页面,并分析每一页的 HTML 结构,从而定位到题目、选项、答案等数据。大多数在线考试平台的题库是分页显示的,因此我们需要遍历多个页面,抓取所有的题库数据。因此,我们需要设置合适的请求头来模拟真实的浏览器请求。

2201_76125261的博客 3445

html固定广告,css如何实现广告固定动态漂浮

隔江千里红框区域用position: fixed;定位,那个熊用position: absolute;定位,熊是红框的子元素 .box{ width: 500px; height: 500px; border: 1px solid red; position: fixed; top: 0; left: 0;...

weixin_35940173的博客 665

DeepSeek+Dify之一安装部署

DeepSeek添加知识库

yilvyangguang520的博客 1545

js学习笔记(吸顶、侧边广告、返回顶部)

案例1:中部导航吸顶 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>吸顶</title> <style type="text/css"> *{ margin:...

dawanhjiao的博客 443

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

顶部滑动下拉广告

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><h...

dianyi7318的博客 125

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

好看的网页右下角广告特效代码 手机版自适应

一个固定在页面右下角的游戏广告悬浮窗的实现方案。广告采用圆角白色背景,包含logo、宣传文案和3个功能按钮。通过CSS实现了鼠标悬停时的动画效果,并针对移动端做了响应式设计(底部全宽显示)。JavaScript部分实现了关闭按钮功能,使用cookie保存关闭状态以避免24小时内重复显示。整体设计注重用户体验,包括渐变按钮、阴影效果和过渡动画等交互细节。

981

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

小demo:通过jquery的scroll实现两侧广告栏

效果如下 当页面卷曲距离超过一定值时才出现两侧广告栏,这在实际中是经常用到的 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> .left img{ position: fixed; left: 0; top:300px; width: 200px; hei

weixin_43797908的博客 212

jquery滚动监听,并且固定表头

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>测试实例</title> <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>...

AinUser的博客 511

HTML5+CSS3实现小米商城(课程设计版)

这个小米商城用到了html+css+js,内容是今年6月份的。 结构相对简单,比较容易理解。 如果想要纯html+css实现的小米商城,可以看我的这个作品 HTML+CSS实现小米商城 如果需要其他网页作品了,可以看主页其他作品。 HTML+CSS实现华为商城 HTML+CSS实现华为官网 HTML+CSS实现哔哩哔哩首页 HTML+CSS实现小米官网 HTML+CSS实现QQ注册页面 下面先展示一个页面整体结构,然后再分析一下实现代码吧! 文章末尾附项目源代码!!! 2.广告块部分 3.右侧固定

m0_63512120的博客 4837

固对定位(fixed)的适用场合,表现得与任何元素都无关

固对定位(fixed)适用于悬浮在一个固定位置的场合,达到悬浮效果,如侧边的广告和扫描位。 转载于:https://www.cnblogs.com/npk19195global/p/4463911.html

weixin_30325971的博客 226

浮动广告代码

浮动广告代码 <div id="img" style="position:absolute;; width: 200; height: 151">广告内容</div><script LANGUAGE="JavaScript">var xPos = 20;var yPos = 10;img.style.left= xPos;img.styl...

aimojian6194的博客 171

页面滚动条位置触发事件

网站实现页面滚动相应位置后广告图片位置固定不变 JS部分: $(window).scroll(function(){ var $scroll=$(document).scrollTop(); console.log($scroll); if($scroll>2300){ $("div.mRs").addClass("ac"); $("div.mRse").addC...

weixin_30483495的博客 1399

jQuery实现广告对联

广告对联:当scroll滚动到一定的距离左右两边会出现广告 代码如下 <html> <head> <title></title> </head> <style> *{ margin:0; padding:0; ...

dongciqiu0026的博客 191
上一篇: jquery文件上传例子(两种方式)
下一篇: query多选下拉框插件 jquery-multiselect
boyss0214
博客等级 码龄20年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值