惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
S
SegmentFault 最新的问题
量子位
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 司徒正美
博客园 - Franky
Google DeepMind News
Google DeepMind News
Recent Announcements
Recent Announcements
B
Blog RSS Feed
C
Check Point Blog
The Cloudflare Blog
M
MIT News - Artificial intelligence
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Fortinet All Blogs
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
V
Visual Studio Blog
V
V2EX
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 聂微东
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

张鑫旭-鑫空间-鑫生活

1分钟速度了解text-align match-parent声明 « 张鑫旭-鑫空间-鑫生活 光标的形状也能设置了,就是CSS caret-shape属性 « 张鑫旭-鑫空间-鑫生活 pretext与文字四面环绕效果的实现 « 张鑫旭-鑫空间-鑫生活 JSON.rawJSON方法的作用是什么? « 张鑫旭-鑫空间-鑫生活 如何使用CSS判断鼠标从哪个方向进入元素? « 张鑫旭-鑫空间-鑫生活 借助mediabunny纯JS实现视频水印、剪裁、合成等功能 « 张鑫旭-鑫空间-鑫生活 务必谨慎使用JS WeakRef弱引用 « 张鑫旭-鑫空间-鑫生活 CSS六边形头像的实现与蜂巢布局 « 张鑫旭-鑫空间-鑫生活 CSS corner-shape与背景底纹技术 « 张鑫旭-鑫空间-鑫生活 浅学WebTransport API:下一代Web双向通信技术 « 张鑫旭-鑫空间-鑫生活 HTML dialog元素新支持了closedBy属性 « 张鑫旭-鑫空间-鑫生活 HTML interestfor属性与悬停popover交互效果 « 张鑫旭-鑫空间-鑫生活 我对CSS vertical-align的一些理解与认识(一) « 张鑫旭-鑫空间-鑫生活 CSS3模拟window7炫酷界面效果展示 « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 纯js无图片无外链CSS图片幻灯片播放插件 « 张鑫旭-鑫空间-鑫生活 CSS border三角、圆角图形生成技术简介 « 张鑫旭-鑫空间-鑫生活 CSS “渐进增强”在web制作中常见应用举例 « 张鑫旭-鑫空间-鑫生活 让IE6/IE7/IE8浏览器支持CSS3属性 « 张鑫旭-鑫空间-鑫生活 jQuery – 高亮动态显示页面HTML代码插件 « 张鑫旭-鑫空间-鑫生活 翻译 – 逐渐消失的Flash网站 « 张鑫旭-鑫空间-鑫生活 CSS reset的重新审视 – 避免样式重置 « 张鑫旭-鑫空间-鑫生活 新浪微博插入话题后部分文字选中的js实现 « 张鑫旭-鑫空间-鑫生活 JavaScript实现http地址自动检测并添加URL链接 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变背景(gradient)效果 « 张鑫旭-鑫空间-鑫生活 CSS content内容生成技术以及应用 « 张鑫旭-鑫空间-鑫生活 CSS gradient渐变之webkit核心浏览器下的使用 « 张鑫旭-鑫空间-鑫生活 CSS渐变之CSS3 gradient在Firefox3.6下的使用 « 张鑫旭-鑫空间-鑫生活 区分IE8/IE7/IE6及其他浏览器-CSS “\9″hack « 张鑫旭-鑫空间-鑫生活 CSS实现跨浏览器兼容性的盒阴影效果 « 张鑫旭-鑫空间-鑫生活
纯CSS实现易拉罐3D滚动效果 « 张鑫旭-鑫空间-鑫生活
张鑫旭,zhangxinxu · 2010-03-29 · via 张鑫旭-鑫空间-鑫生活

by zhangxinxu from http://www.zhangxinxu.com
本文地址:http://www.zhangxinxu.com/wordpress/?p=699

一、效果抢先预览

与之前文章婆婆妈妈的开头不同,本文首先展示使用CSS实现的炫酷效果:

横向移动滚动条,您会发现,易拉罐随着滚动条的滚动,自身也在滚动。但是,如果您现在使用的是IE6浏览器或是IE6为内核的浏览器,我只能说声”I’m sorry!”,首先IE6不支持png32透明或半透明的背景,其次不支持背景图片的fixed固定定位。

二、原理解剖

首先,说几个关键字,fixedmask,用中文解释就是:背景图片固定定位,半透明png图片遮罩。

使用的素材
使用的素材有两个,一个是背景图片,一个是覆盖图片(起类似flash中的遮罩效果),如下:
易拉罐背景图片 张鑫旭-鑫空间-鑫生活
半透明遮罩图片 张鑫旭-鑫空间-鑫生活

背景图片固定定位
我们应该都知道,background有个属性是background-attachment,此属性有两个值,一个是fixed,另外一个是scroll,而后面的值为默认的。这两个值的意思是:“当页面的其余部分滚动时,背景图像不会移动”以及“背景图像会随着页面其余部分的滚动而移动”。此CSS具体属性可点击这里查看。

本文的效果可以说是活用了这个CSS特性,当滚动时,背景图片(红色的可口可乐包装)的位置是不随着滚动条的滚动而滚动的。

半透明图片的覆盖
半透明图片的作用是易拉罐的头尾,形成易拉罐的形状,形成阴影效果,使效果更为逼真。我们通过让半透明图片覆盖在背景图片上,就可以形成大致的易拉罐滚动效果。注意这里的“大致”一次,如果我们只是一个背景图片固定加上一个半透明遮罩,那么实现的效果就是个狠生硬的,“大致的”易拉罐3D滚动效果。

不信您可以狠狠地点击这里:生硬的3D易拉罐滚动效果

更多的工作
之所以仅仅通过背景固定于覆盖实现的滚动效果是相当生硬不自然的,为什么呢?因为透视的关系,我看一个3D物体,比如说这里的易拉罐,其边缘的图形呈现到我们眼睛里的应该是压缩的,扁平的,否则,如同一个平面,效果不佳。这就是上面“效果生硬”的原因。该如何解决呢?有经验的同行们应该知道,使用多标签来模拟此效果,也就是易拉罐的背景图片不是由一个标签形成,而是由很多个标签以符合人眼透视规律的形式拼接成一个完成的易拉罐背景。这里的规律也就是上面提到的“边缘背景图片的收缩,中间图片的平面化”。

例如买本实例中,共使用了55个p标签拼接成易拉罐背景。

您可以狠狠地点击这里:易拉罐3D滚动效果demo及代码

代码您可以参见demo,这里就不显示了。

注意:由于滚动也受控于body的滚动条,所以,为了避免干扰,需要使用框架调用滚动效果的单页面。

三、感慨 – 结语兼废话

CSS的潜力真是惊人,我有时不得不感叹人类的智慧。我常想,要是CSS3成为了主流,那会是怎样的一个世界,五花八门,千奇百怪的CSS技术以及一些叹为观止的效果会让你犹如进入爱丽丝的梦游仙境。

还有,如果您发现文章中有表述不准确或是有相关问题需要交流可以通过评论或是去这里进行提问交流。

参考文章:Pure CSS Coke Can

本文为原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]
本文地址:http://www.zhangxinxu.com/wordpress/?p=699

(本篇完)