1.固定导航栏
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
padding: 0;
margin: 0;
}
img{
vertical-align: top;
}
.main{
margin: 0 auto;
width: 1000px;
margin-top: 5px;
}
.fixed{
position: fixed;
left: 0;
top: 0;
}
</style>
</head>
<body>
<div class="top">
<img src="images/top.png" alt=""/>
</div>
<div class="nav">
<img src="images/nav.png" />
</div>
<div class="main">
<img src="images/main.png" />
</div>
<script>
window.onload=function(){
var top=document.getElementsByClassName("top")[0];
var height = top.offsetHeight;
var nav=document.getElementsByClassName("nav")[0];
var main=document.getElementsByClassName("main")[0];
window.onscroll=function(){
if(scroll().top>height){
nav.className="fixed";
main.style.paddingTop=nav.offsetHeight+"px";
}else{
nav.className="";
main.style.paddingTop=0;
}
}
}
function scroll(){
if(window.pageYOffset!==undefined){
var json={
"top":window.pageYOffset,
"left":window.pageXOffset
}
return json;
}else if(document.compatMode=="CSS1Compat"){
var json={
"top":document.documentElement.scrollTop,
"left":window.documentElement.scrollLeft
}
return json;
}else{
var json={
"top":document.body.scrollTop,
"left":window.body.scrollLeft
}
return json;
}
}
</script>
</body>
</html>
2.两侧跟随广告
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.img1{
position: absolute;
top: 80px;
left: 10px;
}
.img2{
position: absolute;
top: 80px;
right: 10px;
}
div{
height: 2000px;
}
</style>
</head>
<body>
<img class="img1" src="images/aside.jpg" />
<img class="img2" src="images/aside.jpg" />
<div>
</div>
<script>
var imgArr=document.getElementsByTagName("img");
window.onscroll=function(){
var val=scroll().top;
animate(imgArr[0],val+80);
animate(imgArr[1],val+80);
}
//缓动动画封装
function animate(ele,target){
clearInterval(ele.timer);
ele.timer=setInterval(function(){
var step=(target-ele.offsetTop)/10;
step=step>0?Math.ceil(step):Math.floor(step);
ele.style.top=ele.offsetTop+step+"px";
if(Math.abs(target-ele.offsetTop)<=Math.abs(step)){
ele.style.top=target+"px";
clearInterval(ele.timer);
}
},30)
}
//封装scrollTop
function scroll() { // 开始封装自己的scrollTop
if(window.pageYOffset != null) { // ie9+ 高版本浏览器
// 因为 window.pageYOffset 默认的是 0 所以这里需要判断
return {
left: window.pageXOffset,
top: window.pageYOffset
}
}
else if(document.compatMode === "CSS1Compat") { // 标准浏览器 来判断有没有声明DTD
return {
left: document.documentElement.scrollLeft,
top: document.documentElement.scrollTop
}
}
return { // 未声明 DTD
left: document.body.scrollLeft,
top: document.body.scrollTop
}
}
</script>
</body>
</html>
3.返回头部小箭头
被卷去的头部超过100显示小火箭,然后点击小火箭屏幕缓慢移动到最顶端。我们以前是移动盒子,现在是移动屏幕,我们没有学过如何移动屏幕。 技术点:window.scrollTo(x,y);浏览器显示区域跳转到指定区域
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
img{
position: fixed;
bottom: 100px;
right: 50px;
cursor: pointer;
display: none;
}
div{
height: 2000px;
}
</style>
</head>
<body>
<img src="images/Top.jpg" />
<div></div>
<script>
window.onload=function(){
var img=document.getElementsByTagName("img")[0];
window.onscroll=function(){
if(scroll().top>200){
img.style.display="block";
}else{
img.style.display="none";
}
leader=scroll().top;
}
var timer=null;
var target=0;
var leader=0;
img.onclick=function(){
//window.scrollTo(0,0);
clearInterval(timer);
timer=setInterval(function(){
var step=(target-leader)/10;
step>0?Math.ceil(step):Math.floor(step);
leader=leader+step;
window.scrollTo(0,leader);
if(leader==0){
clearInterval(timer);
}
},20)
}
}
function scroll() { // 开始封装自己的scrollTop
if(window.pageYOffset != null) { // ie9+ 高版本浏览器
// 因为 window.pageYOffset 默认的是 0 所以这里需要判断
return {
left: window.pageXOffset,
top: window.pageYOffset
}
}
else if(document.compatMode === "CSS1Compat") { // 标准浏览器 来判断有没有声明DTD
return {
left: document.documentElement.scrollLeft,
top: document.documentElement.scrollTop
}
}
return { // 未声明 DTD
left: document.body.scrollLeft,
top: document.body.scrollTop
}
}
</script>
</body>
</html>
三个案例合并
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.main{
width: 990px;
margin: 0 auto;
}
*{
padding: 0;
margin: 0;
}
img{
vertical-align: top;
}
.fixed{
position: fixed;
left: 0;
top: 0;
}
.img1{
position: absolute;
top: 150px;
left: 10px;
}
.img2{
position: absolute;
top: 150px;
right: 10px;
}
.header{
position: fixed;
bottom: 50px;
right: 50px;
cursor: pointer;
display: none;
}
</style>
</head>
<body>
<img class="img1" src="images/aside.jpg" />
<img class="img2" src="images/aside.jpg" />
<img src="images/Top.jpg" class="header"/>
<div class="top">
<img src="images/top.png" />
</div>
<div class="nav">
<img src="images/nav.png" />
</div>
<div class="main">
<img src="images/main.png" />
</div>
<script>
window.onload=function(){
var top=document.getElementsByClassName("top")[0];
var height=top.offsetHeight;
var nav=document.getElementsByClassName("nav")[0];
var main=document.getElementsByClassName("main")[0];
var imgArr=document.getElementsByTagName("img");
window.onscroll=function(){
var val=scroll().top;
animate(imgArr[0],val+150);
animate(imgArr[1],val+150);
if(val>height){
imgArr[2].style.display="block";
nav.className="fixed";
main.style.paddingTop=nav.offsetHeight+"px";
}else{
imgArr[2].style.display="none";
nav.className="";
main.style.paddingTop=0;
}
}
var timer=null;
var target=0;
var leader=scroll().top;
imgArr[2].onclick=function(){
clearInterval(timer);
timer=setInterval(function(){
var step=(target-leader)/10;
step>0?Math.ceil(step):Math.floor(step);
leader=leader+step;
window.scrollTo(0,leader);
if(leader==0){
clearInterval(timer);
}
},20)
}
}
//缓动动画封装
function animate(ele,target){
clearInterval(ele.timer);
ele.timer=setInterval(function(){
var step=(target-ele.offsetTop)/10;
step=step>0?Math.ceil(step):Math.floor(step);
ele.style.top=ele.offsetTop+step+"px";
if(Math.abs(target-ele.offsetTop)<=Math.abs(step)){
ele.style.top=target+"px";
clearInterval(ele.timer);
}
},30)
}
//scroll封装
function scroll(){
if(window.pageYOffset!==undefined){
var json={
"top":window.pageYOffset,
"left":window.pageXOffset
}
return json;
}else if(document.compatMode=="CSS1Compat"){
var json={
"top":document.documentElement.scrollTop,
"left":window.documentElement.scrollLeft
}
return json;
}else{
var json={
"top":document.body.scrollTop,
"left":window.body.scrollLeft
}
return json;
}
}
</script>
</body>
</html>