3D carousel控件一览
3d carousel是常用于slide图文展示的效果,通过css transform修饰相邻的几张图文,用简单的代价呈现3d场景效果。
经过比较,收费控件中我比较欣赏的是:royal-3d-carousel
截图如下:
而开源的控件,我选中的是:Cloud 9 Carousel
该控件采用MIT license。
截图如下:
聊聊过渡帧
为什么相中他两呢?最重要的一点,是它们都应用了requestAnimationFrame。
虽然只是一个简单的甚至可以用 setInternal代替的API,但我认为它却是传统pc界面与移动终端界面的分水岭。为什么大家总感觉pc界面呆滞无趣,而移动终端的界面却让人爱不释手呢?
我认为ios开创的移动界面其中一个重大的革新就是在界面的交互中采用了过渡帧动画,界面的切换过程从而变得平滑有趣,即使响应时间慢一点,人们也愿意等待这个切换的过程。
过渡帧动画再与物理引擎结合的话,比如:手指滑动越快,界面的滑动响应就越长。这会让人们在现实世界中形成的经验在移动终端的交互中得到验证,符合他们的操作预期。当然就受人喜爱了。
对requestAnimationFrame有兴趣的朋友,可以移步这篇文章。
对Cloud9 Carsousel的增强
要用这个carsousel控件来进行抽奖的话,需要解决的关键问题是:如何将控件只能加载几张图,扩展到加载几百上千张图?
我的策略是:
1. 图标滚动到最近处,认为获得过中奖几率一次,打标记;
2. 该图标继滚动到最远处时,检查图标的标记,如果已经打过标记,则将其移除滚动池,将下一个图标移入滚动池。
3. 对每一次rendered最近图标重复上述逻辑。
关键代码如下:
对carsousel 增加方法,用于移除图标和加入新图标:
//c4w add this.replaceItem = function(item_index,attr) { var item= this.items[item_index]; item.rendered=false; $(item.element).remove(); var img = new Image(); $(img).attr(attr).css( "opacity", 0 ); $container.append(img); var me=this; img.onload=function(){ me.items[item_index] = new Item(img,me.itemOptions); //$(this).css( "opacity", 1 ); $(this).parent().css( "opacity", 1 ); } };
响应最近图标的rendered事件,并进行上述处理:
function rendered( carousel ) { var item = carousel.nearestItem(); var it_near = carousel.nearestIndex(); var len = carousel.items.length; for(var i=0; i<2; i++){ var it_far = it_near+4+i; if(it_far>=len) it_far-=len; var item_far = carousel.items[it_far]; //rendered item, repalce it with another img el if(item_far.rendered){ carousel.pos++; if(carousel.pos>=img_total) carousel.pos=1; carousel.replaceItem(it_far,{ src:"images/png/"+carousel.pos+".png", alt:"Title "+carousel.pos }); } } item.rendered=true; title.text( item.element.alt ) // Fade in based on proximity of the item var c = Math.cos((carousel.floatIndex() % 1) * 2 * Math.PI) title.css('opacity', 0.5 + (0.5 * c)) }
图片下载自:http://www.haotu.net/pack/3406/my-senven-icons
请自行下载,控件使用请尊重原作者license声明。
最终效果
http://v.youku.com/v_show/id_XMTQwMzQ5MDcxMg==.html
相关推荐
3DCarousel是一种创新的网页元素,它将传统的轮播图(carousel)与3D视觉效果相结合,并且配备了鼠标交互控件,为用户提供了一种独特的浏览体验。在本项目中,我们将深入探讨如何利用CSS3动画、3D变换以及基本算法来...
Dev控件中的GridControl是一种强大的数据展示工具,尤其在Windows Forms应用程序中被广泛使用。GridControl提供了多种视图模式,包括GridView、CardView、BandedView、Advanced BandedView和LayoutView,每种视图都...
在WPF中,我们可以使用`Carousel`控件或自定义控件来实现这一效果。`Carousel`控件可以轻松地管理和展示一系列的元素,如图片,同时支持自动切换和过渡动画。我们可以设定一个定时器来定期改变当前显示的图片,并...
首先,旋转木马(Carousel)是一种常见的网页元素,用于展示一系列图片或内容,通常具有自动轮播和导航控制功能。这种插件适用于网站中的幻灯片展示、产品展示或任何需要连续滚动内容的场景。3D效果则为旋转木马增添...
在网页开发中,jQuery Rotate是一款常用的JavaScript库,用于实现元素的动态旋转效果。这款插件是基于流行的jQuery框架构建的,使得在不支持CSS3旋转的浏览器中也能轻松实现3D旋转功能。以下是对这款插件及其应用的...
这款“兼容手机html5电商模板”正是利用HTML5的优势,结合Bootstrap框架,设计出的一款适用于多种设备的响应式商城模板,旨在提供无缝的购物体验,无论用户是在桌面电脑、平板还是智能手机上浏览。 1. **HTML5特性*...
在iOS开发中,UI设计经常会使用到轮播图(Carousel)这一组件,它通常用于展示一组图片或内容,用户可以通过滑动来查看不同的项。在本案例中,“CustomPagecontrol.zip”是一个关于如何实现轮播图中间放大效果及...
在Android应用开发中,轮播图(Carousel)是一种常见的组件,通常用于展示...通过以上步骤,你可以创建出一款功能完善、用户体验良好的轮播图组件。在实际项目中,可以根据需求进行扩展和调整,满足特定场景的应用。
此外,HTML5还引入了新的表单控件(如)和多媒体支持(如和标签),增强了网页的互动性和多媒体功能。 CSS3作为样式表语言的最新版本,扩展了许多新特性,如媒体查询(Media Queries)用于实现响应式设计,使网站能...
CSS3是CSS的最新版本,它带来了许多增强网页外观的新功能,如选择器的扩展、边框与背景的高级样式、多列布局、过渡效果、动画和3D变换等。Bootstrap利用CSS3来实现响应式设计,通过媒体查询(@media)调整不同设备上...
Parallax效果是一种视觉现象,当背景元素以较前景元素慢速移动时,可以产生深度感,常用于增强3D视觉效果。在DrinksGalleryApp中,这种效果体现在当用户滑动CarouselView时,背景图片会以较慢的速度移动,而前景的...