<!DOCTYPE html>
<html>
<head>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
} a {
color: #000;
text-decoration: none;
} .list {
display: none;
width: 50px;
position: fixed;
height: 150px;
left: 0;
top: 50%;
margin-top: -75px;
} ul {
list-style: none;
border: 1px solid #ccc;
} li {
height: 50px;
line-height: 50px;
} li a {
display: block;
width: 100%;
height: 100%
} .n2 {
border: 1px solid #ccc;
border-left: 0;
border-right: 0
} li.active a {
background-color: green;
color: #fff;
} .long {
width: 500px;
height: 800px;
} .con {
margin-left: 300px;
} .floor {
height: 500px;
width: 500px;
background: red;
} .floor span {
display: block;
width: 100%;
height: 50px;
line-height: 50px; font-size: 25px;
/*animation:scaleDisc 1s;*/
} @-webkit-keyframes scaleDisc {
0% {
opacity: 0;
height: 0
}
100% {
opacity: 1;
height: 50px
}
} @-moz-keyframes scaleDisc {
0% {
opacity: 0;
height: 0
}
100% {
opacity: 1;
height: 50px
}
} @keyframes scaleDisc {
0% {
opacity: 0;
height: 0
}
100% {
opacity: 1;
height: 50px
}
}
</style>
<meta charset="utf-8">
<title>楼层效果</title>
</head>
<body>
<div class="list">
<ul>
<li><a href="#floor1" class="smooth">楼层1</a></li>
<li class="n2"><a href="#floor2" class="smooth">楼层2</a></li>
<li><a href="#floor3" class="smooth">楼层3</a></li>
</ul>
</div>
<div class="long">
内容区
</div>
<div class="con">
<div class="long1 floor" id="floor1">
<span>楼层1</span>
</div>
<div class="long2 floor" id="floor2">
<span>楼层2</span>
</div>
<div class="long3 floor" id="floor3">
<span>楼层3</span>
</div>
</div>
</body>
<script src="jquery-1.11.3.min.js"></script>
<script>
$(function () {
$(window).scroll(function () {
var clientH = $(window).height();
var $scroll = $(window).scrollTop();
//判断当楼层内容区域显示在可视窗口时,显示楼层列表,否则隐藏
if($(".con").offset().top-$scroll<clientH){
$(".list").css("display","block");
}else{
$(".list").css("display","none");
}
$(".floor").each(function () {
/*var clientH = window.screen.availHeight;*/
var $height = $(this).height();
var $off = $(this).offset().top;
var $index = $(this).index();
/*if ($off + $height - $scroll >$height && $off + $height - $scroll <= clientH) {*/
if ($off - $scroll < clientH/2) {
$(this).css("background","green");
$(this).siblings().css("background","red");
$(".list li").eq($index).addClass("active");
$(".list li").eq($index).siblings().removeClass("active");
} else {
$(this).css("background", "red");
$(".list li").eq($index).removeClass("active");
} }) });
$(".smooth").on("click", function () {
var href = $(this).attr("href");
var $step = $(href).offset().top;
$("body").animate({"scrollTop": $step}, 500);
return false;
})
})
</script>
</html>

效果说明:

1)当楼层内容没有显示在可视区域时,隐藏楼层列表,否则显示

2)当楼层内容距离屏幕顶端距离小于屏幕可视高度的一半时,给当前楼层设置为绿色背景

3)点击楼层列表时,跳转到对应的楼层内容

jq实现楼层切换效果的更多相关文章

  1. tab切换的效果——仿照今日头条APP的切换效果

    说点废话;不知道是哪一版本起头条的tab切换效果就变了,一直琢磨着这个事,去度娘那里也没有什么结果:正好这两天有空就尝试做了一下:用前端的技术来实现: 先看效果吧:上面的tab随着slide滑动,上面 ...

  2. weui 多网页切换效果分析

    weui的文档写的不怎么详尽,简单的来讲WeUI 为微信 Web 服务量身设计的h5框架. WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户 ...

  3. 使用ViewPager+Fragment实现选项卡切换效果

    实现效果 本实例主要实现用ViewPage和Fragment实现选项卡切换效果,选项卡个数为3个,点击选项卡或滑动屏幕会切换Fragment并实现选项卡下方下边框条跟随移动效果. 本程序用androi ...

  4. js鼠标滚轮滚动图片切换效果

    效果体验网址:http://keleyi.com/keleyi/phtml/image/12.htm HTML文件代码: <!DOCTYPE html PUBLIC "-//W3C// ...

  5. jQuery手机端触摸卡片切换效果

    效果:http://hovertree.com/code/run/jquery/a1gr3gm9.html 可以用手机查看效果. 代码如下: <!doctype html> <htm ...

  6. javascript马赛克遮罩图片切换效果:XMosaic.js(转)

    新鲜出炉的javascript图片切换特效,实现的是马赛克遮罩切换.在flash里,好实现遮罩动画很简单,不过JS实现起来就有些困难了. XMosaic.js,与XScroll.js和XScroll2 ...

  7. CSS3 :target伪类实现Tab切换效果

    用:target伪类实现Tab切换效果真的非常简单!简单到什么程度呢?它只需要下面这些代码. style.css: .song-info { position: absolute; backgroun ...

  8. 精致3D图片切换效果,最适合企业产品展示

    这是一个精致的立体图片切换效果,特别适合企业产品展示,可立即用于实际项目中.支持导航和自动播放功能, 基于 CSS3 实现,推荐使用最新的 Chrome,Firefox 和 Safari 浏览器浏览效 ...

  9. Midnight.js – 实现奇妙的固定头部切换效果

    Midnight.js 是一款 jQuery 插件,在页面滚动的时候实现多个头设计之间的切换,所以你总是有一个头与它下面的内容层叠,看起来效果很不错. Midnight.js 可以让你轻松实现这种切换 ...

随机推荐

  1. uafxcwd.lib(afxmem.obj) : error LNK2005 解决方法

    项目为非MFC,但要用到MFC的库,使用过程中遇到的问题总结一下 uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl opera ...

  2. ruby学习总结02

    1.条件判断(nil或alse为假,其他值均为真) 1.if语句  if/elsif/else/end     条件成立时执行相关操作 2.unless语句   unless/else/end  条件 ...

  3. 将linux默认python升级到2.7.4版本

    第一步:下载python2.7.4版本源码: wget http://python.org/ftp/python/2.7.4/Python-2.7.4.tgz 解压文件 [aa@localhost ~ ...

  4. Map Columns From Different Tables and Create Insert and Update Statements in Oracle Forms

    This is one of my most needed tool to create Insert and Update statements using select or alias from ...

  5. vsftp软链接ln遇到550错误

    centos 6.3上新建了vsftp ,用于文件下载使用 ./var/ftp/pub可以匿名登陆下载 .如果想要上传则需要使用密码验证 . 登陆使用的账号是ftpclient ,路径在/home/f ...

  6. jquery获取当前时间

    一.获取当前时间 new Date()方法---------得到结果是当前电脑时间如2011-11-6,10:07 二.获取有个固定的时间方法---------var endtime=new Date ...

  7. 时间函数 time.h 详解

    C++对时间的操作也有许多值得大家注意的地方.最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作.获取和显示等等的问题.下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法 ...

  8. Redis基础知识之————使用技巧(持续更新中.....)

    一.key 设计技巧 把表名转换为key前缀 如, tag: 第2段放置用于区分区key的字段--对应mysql中的主键的列名,如userid 第3段放置主键值,如2,3,4...., a , b , ...

  9. TAROT.

    /* * * */ #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int t ...

  10. [转载] 理解 epoll 的事件触发机制

    原文: http://weibo.com/p/1001603862394207076573?sudaref=weibo.com epoll的I/O事件触发方式有两种模式:ET(Edge Trigger ...