侧边广告

  在逛网站我们可能都会看到靠近网页右边的中间位置有个小广告,不管我们向上还是向下滑动页面它都始终垂直居中。最简单的方式是用固定定位。

  先来布局(为了让滚动条出现强行给个2000px的高。。。。。。)

<body style="height:2000px">
	<div id="div1"></div>
</body>

css

#div1{
	width: 100px;        height: 100px;        background: red;        position: fixed;        right: 0;        top: calc(50% - 50px);
}

 这样div就差不多在中间的位置了并且不会随页面滚动。

  这就完了?每当这种时候我们就问问自己,IE6呢?然后当我们放在IE6测试之后发现果然不行。。。。。。那怎么办呢?那是时候请出我们的js了。

不过我们先把样式改一下

#div1{
	width: 100px;
	height: 100px;
	background: red;
	position: absolute;
	right: 0;     top: calc(50% - 50px);
}

然后我们在分析一下,一开始是广告栏处于中间。但随着页面的滚动,它会往上移动直至不见。居中的关键就在于计算广告栏离页面顶部的距离。在此之前我们先来看看这段距离,它实际上是页面顶部到广告栏顶部的距离,等于滚动条滚动的距离+(可视区的高度-广告栏的高度)/2

  将计算方法转化为代码就是

window.onscroll = function(){
	var oDiv = document.getElementById(‘div1‘);
	var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;  //滚动条滚动的距离

	var t = scrollTop+(document.documentElement.clientHeight-oDiv.offsetHeight)/2;  //广告栏距离页面顶部的实际距离  
}

  距离算出来了,我们还需要一个让广告栏滚动的函数startMove(iTarget)。为了让效果自然,选择用定时器由快到慢的让广告栏移动到中间。所以速度可以设置为(目标位置-当前位置)/8,这样越靠近中间速度就越慢。

  

window.onscroll = function(){
	var oDiv = document.getElementById(‘div1‘);
	var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;

	var t = scrollTop+(document.documentElement.clientHeight-oDiv.offsetHeight)/2;

	startMove(parseInt(t));
}
var timer = null;
function startMove(iTarget){
	var oDiv = document.getElementById(‘div1‘);
	var oTxt = document.getElementById(‘txt‘);
	clearInterval(timer);
	timer = setInterval(function(){
		var speed = (iTarget-oDiv.offsetTop)/8;
		speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
		if(oDiv.offsetTop == iTarget){
			clearInterval(timer);
		}else{
			oDiv.style.top = oDiv.offsetTop+speed+‘px‘;
		}
	},30)
}

  

时间: 2024-08-10 15:04:59

侧边广告的相关文章

js鼠标滑轮侧边广告(仅IE可用)

<!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"><head><meta http-equiv="Content-Typ

JS实现简单的运行代码 &amp; 侧边广告

/* JS实现简单的运行代码功能 */<!doctype html> <html> <head> <meta charset="utf-8" /> <script> window.onload = function() { var oTxt = document.getElementById('codeText'); var oBtn = document.getElementById('btn'); oBtn.onclick

CSS框架960Grid从入门到精通一步登天

http://blog.chinaunix.net/uid-22414998-id-2878529.html 1.什么是CSS框架? CSS框架是一种你能够使用在你的web项目中概念上的结构,是别人已经写完的,而且很完善的CSS定义集合.CSS框架一般是CSS文件的集合,包括基本风格的字体排版,表单样式,表格布局等等,比如: * grid.css 表格布局 * layout.css 布局 * form.css 表单 * general.css CSS常规设置 2.CSS框架的种类: CSS框架很

960网格,一个web时代的标志。

闲言少叙,废话不说,直入正题: 1.什么是CSS框架? CSS框架是一种你能够使用在你的web项目中概念上的结构,是别人已经写完的,而且很完善的CSS定义集合.CSS框架一般是CSS文件的集合,包括基本风格的字体排版,表单样式,表格布局等等,比如: * grid.css 表格布局 * layout.css 布局 * form.css 表单 * general.css CSS常规设置 2.CSS框架的种类: CSS框架很多,可以说太多了,最近几年像潮水般涌出.只是国内用CSS框架的不多,倒是PHP

关于侧边栏固定广告

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

产品设计课程——TAB导航与侧边抽屉的交互方式

如果你是个产品设计经理,或是说你是一个产品设计师.现在的你需要设计一个含有许多页面和模块,不能在一屏内显示完全的应用.你一定会首先想到去设计一个底部或顶部的Tab导航.可是这样的话,多出来的一排导航看上去有点碍眼.如果尝试把他们收到侧边栏里,比如“侧边抽屉导航”又会如何呢?今天就让我们围绕这产品设计课程,将这一个问题仔细探讨一下,本文来自于e良师益友网,elsyy.com. 如果你们的应用的也是多视图的,在你们的团队里,以下话题一定常常引发激烈讨论: 是把导航选项都显示在屏幕上,让你们的用户可以

侧边横幅动画效果

我们在写页面的时候,常见的侧边横幅广告是通过position:fixed实现的,这样定位的好处是无论主体内容怎么变化,侧边的位置永远保持不变,当然,这也是这种效果的弊端,网页效果死板单一,所以,我们今天就要为这种侧边横幅添加一个动画效果. 具体的实现思路是,也是通过定位,但不是position:fixed,而是position:absolute,这种定位的效果是保持距离最近的position:relative的元素的距离不变,所以当外层元素滚动时,该元素也会随之滚动和发生位置变化,下面我们来实现

40个互联网广告专业术语,信息流/SEM必备!

40个互联网广告专业术语,信息流/SEM必备! --安阳师范学院互联网+应用技术学院网络营销方向讲师 毛东升一.行业相关1.信息流(Feeds)广告顾名思义,即是出现在社交媒体用户好友动态中的广告.它最早于2006年出现在社交巨头Facebook上,随后Twitter.Pinterest.Instagram 和 LinkedIn 以及国内的QQ空间.微博和人人网等社交媒体也相继推出信息流广告.它以一种十分自然的方式融入到用户所接受的信息当中,用户触达率高.2.SEM(搜索引擎营销:Search

博客园自定义样式(去广告、公告栏加头像、按钮样式)

前言: 简单的操作 1)可以通过审查元素的方法,来设置自己满意的样式.操作是F12.F12操作可以打开控制面板,具体的样式可以直接在上面修改,然后把修改后的样式保存下来. 2)保存后的样式,复制到[ 管理 ] - [ 设置 ] - 页面定制CSS代码上面,然后[ 保存 ] 1.隐藏广告 /*隐藏广告*/ #ad_t2, #cnblogs_c1, #under_post_news, #cnblogs_c2, #under_post_kb { display: none; } 2.按钮样式 /* 关