jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果


Posted in Javascript onSeptember 26, 2011

很有意思。小邪就跟着做了一个Demo,木有用插件,只挂了jQuery。
Demo 演示页面

jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果

一. CSS+jQuery实现随滚动条增减汽水瓶中的液体:

话说喝汽水的那个网站是用一个瓶子的图片,分为瓶口、瓶身、吸管还有瓶底。在这些图片中瓶子内部都是透明的,所以我们可以在底下一层按 x 轴平铺液体的图片,当然记得弄好吸管,吸管则是按照 y 轴平铺。其他具体的请看代码中注释。

啊,对了,那家公司的地址在这里 - http://janploch.de/

jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果

body {background:#fff url(bg_site.png);margin:0;} 
#juice, #juice .inner, #bottle, #bottle .footer, #bottle .content, #bottle .header, #mid .inner {margin:0 auto;} 
/* 
* #juice 加不加 margin:0 auto; 无所谓啦 
* 因为 position:fixed; 了所以 margin:0 auto; 自然就失效了 
* 因为 #bottle 无法准确设置宽度,所以自然加 margin:0 auto; 也没用了 
* 嘿嘿,这些都是小邪的错误 
* 
* #bottle .footer, #bottle .content, #bottle .header 这几个 
* 分别是瓶底、瓶身、瓶口几个位置的图片 
* 剩下的 #juice .inner 和 #mid .inner 则分别 
* 是居中按 x 轴平铺的液体和居中按 y 轴平铺的吸管咯 
*/ 
#monitor { 
position:fixed; 
top:10px; 
left:10px; 
color:#f0f0f0; 
z-index:999; 
} 
/* 
* #monitor 则是左上角的提示文字区域,具体查看JS注释部分 
*/ 
#juice { 
width:99%; 
position:fixed; 
top:2000px; 
} 
#juice .inner { 
width:1165px; 
background:url(juice.png) repeat-x; 
height:2000px; 
} 
/* 
* #juice 在外层设置为 position:fixed; width:99%; 
* position:fixed; 的意思是绝对定位的元素,相对于浏览器窗口定位 
* #juice .inner 在里层设置为 margin:0 auto; width:1165px; 
* 这样配合好就能做出既是居中又是不随滚动条移动的效果 
*/ 
#bottle { 
width:99%; 
text-align:center; 
position:absolute; 
top:0; 
} 
/* 
* position:absolute; top:0; 
* 这样做因为绝对定位的东西多了,防止妨碍到瓶体的位置 
* text-align:center; 纯蛋疼勿在意 
*/ 
#bottle .header { 
background:url(bottle_top.png) no-repeat; 
width:1175px; 
height:2648px; 
} 
#bottle .content { 
background:url(content_bg.png) repeat-y; 
height:500px; 
width:1186px; 
} 
#bottle .footer { 
background:url(bg_footer.png) no-repeat; 
width:1184px; 
height:567px; 
} 
/* 
* 分别瓶子三部分,很简单的 o(* ̄? ̄*)? 
*/ 
#mid { 
width:99%; 
position:fixed; 
z-index:-999; 
} 
/* 
* 此处效果同 #juice,z-index:-999; 表示放到最底层 
*/ 
#mid .inner { 
width:92px; 
height:2000px; 
background:url(strohalm_mid.png) repeat-y; 
} 
/* 
* #mid .inner 则是吸管的图片设置 
*/ 
</style> 
<script type="text/javascript"> 
jQuery(document).ready(function($){ 
//记得在这段代码前面挂上 jQuery 库哈,忘记的童鞋拉出去切JJ一小时 
$(window).scroll(function() { 
//滚动条触发事件,目标则是整个窗口,即此窗口的滚动条 
$("#monitor").html("scrollTop: "+$(window).scrollTop()); 
//在 #monitor 里面随时监视 $(window).scrollTop() 的值 
if ($(window).scrollTop()<1108) $("#juice").css('top',490+815-$(window).scrollTop()); 
else $("#juice").css('top',$(window).scrollTop()/2900*580) 
//$(window).scrollTop()<1108 则液体停止增加,并且随滚动条上拉而下移 
//反之则按滚动条滚动的比例增减 
//1108是液体应该停止增加的时候,$(window).scrollTop()的值 
//2900是页面高度,580是窗口的部分高度 
//490 815 什么的小邪才不知道是什么咧(其实是这家伙忘记了 
//反正随滚动条上拉而远离窗口顶部啦 
}); 
}) 
</script> 
<div id="demo_menu" style="position:fixed;bottom:10px;left:10px;z-index:999;"><a style="color:#fff;" href="/">返回</a></div> 
<div id="monitor" style="">scrollTop: 0</div> 
<div id="juice"><div class="inner"></div></div> 
<div id="mid"><div class="inner"></div></div> 
<div id="bottle"> 
<div class="header"></div> 
<div class="content"></div> 
<div class="footer"></div> 
</div>

二. 尾记:

总结一下,恩恩,这样子是用于大家加深对 jQuery 和设计中对视觉滴应用滴理解(其实是小邪弄得自己蛋疼然后想拉上大家一起疼),理解完之后感觉无力的还是去用插件吧 (?_?) (小邪表示无力+1,这样的确有点折腾人 (=_-) 的说)。嘿嘿嘿嘿嘿 o(* ̄? ̄*)?。

演示代码打包下载

Javascript 相关文章推荐
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
Jan 08 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
Jul 22 Javascript
B/S模式项目中常用的javascript汇总
Dec 17 Javascript
jQuery避免$符和其他JS库冲突的方法对比
Feb 20 Javascript
javascript作用域和闭包使用详解
Apr 25 Javascript
浅谈javascript的Touch事件
Sep 27 Javascript
JS实现的颜色实时渐变效果完整实例
Mar 25 Javascript
微信小程序中单位rpx和rem的使用
Dec 06 Javascript
JavaScript实现图片拖曳效果
Sep 08 Javascript
详解如何用模块化的方式写vuejs
Dec 16 Javascript
Vue组件通信中非父子组件传值知识点总结
Dec 05 Javascript
JavaScript点击按钮生成4位随机验证码
Jan 28 Javascript
在Windows上安装Node.js模块的方法
Sep 25 #Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 #Javascript
利用JS自动打开页面上链接的实现代码
Sep 25 #Javascript
javascript权威指南 学习笔记之javascript数据类型
Sep 24 #Javascript
最简单的js图片切换效果实现代码
Sep 24 #Javascript
zShowBox 图片放大展示jquery版 兼容性
Sep 24 #Javascript
也说JavaScript中String类的replace函数
Sep 22 #Javascript
You might like
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
JavaScript合并两个数组并去除重复项的方法
2015/06/13 Javascript
浅析nodejs实现Websocket的数据接收与发送
2015/11/19 NodeJs
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
AngularJS执行流程详解
2017/02/17 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
Python实现Linux中的du命令
2017/06/12 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
深入了解Python enumerate和zip
2020/07/16 Python
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
商务日语毕业生自荐信
2013/11/23 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
献爱心倡议书
2014/04/14 职场文书
白岩松演讲
2014/05/21 职场文书
教师三严三实心得体会
2014/10/11 职场文书
贷款收入证明范本
2015/06/12 职场文书
宿舍管理制度范本
2015/08/07 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis