响应式商品展示列表的实现

介绍一个最新的响应式商品展示列表,同时带有一些社会化和商品细节的显示。当点击旋转按钮的时候会显示商品的背面,使用Media queries实现响应式显示商品。当浏览器支持Flexbox的时候使用Flexbox。

响应式商品展示列表

查看演示  源码下载

很遗憾目前的版本还不支持IE系列浏览器。

HTML标签结构

  1. <div id="cbp-pgcontainer" class="cbp-pgcontainer">
  2.     <ul class="cbp-pggrid">
  3.         <li>
  4.             <div class="cbp-pgcontent">
  5.                 <span class="cbp-pgrotate" title="旋转">旋转</span>
  6.                 <div class="cbp-pgitem">
  7.                     <div class="cbp-pgitem-flip">
  8.                         <img src="images/1_front.png" />
  9.                         <img src="images/1_back.png" />
  10.                     </div>
  11.                 </div><!-- /cbp-pgitem -->
  12.                 <ul class="cbp-pgoptions">
  13.                     <li class="cbp-pgoptcompare" title="比较">比较</li>
  14.                     <li class="cbp-pgoptfav" title="喜欢">喜欢</li>
  15.                     <li class="cbp-pgoptsize">                             
  16.                         <span data-size="XL" title="XL号">XL</span>
  17.                         <div class="cbp-pgopttooltip">
  18.                             <span data-size="XL" title="XL号">XL</span>
  19.                             <span data-size="L" title="L号">L</span>
  20.                             <span data-size="M" title="M号">M</span>
  21.                             <span data-size="S" title="S号">S</span>
  22.                         </div>
  23.                     </li>
  24.                     <li class="cbp-pgoptcolor">
  25.                         <span data-color="c1" title="蓝色">蓝色</span>
  26.                         <div class="cbp-pgopttooltip">
  27.                             <span data-color="c1" title="蓝色">蓝色</span>
  28.                             <span data-color="c2" title="粉色">粉色</span>
  29.                             <span data-color="c3" title="桔色">桔色</span>
  30.                             <span data-color="c4" title="绿色">绿色</span>
  31.                         </div>
  32.                     </li>
  33.                     <li class="cbp-pgoptcart" title="加入购物车"></li>
  34.                 </ul><!-- cbp-pgoptions -->
  35.             </div><!-- cbp-pgcontent -->
  36.             <div class="cbp-pginfo">
  37.                 <h3>T恤一</h3>
  38.                 <span class="cbp-pgprice">¥29</span>
  39.             </div>
  40.         </li>
  41.         <li>
  42.             <!-- ... -->
  43.         </li>
  44.         <li>
  45.             <!-- ... -->
  46.         </li>
  47.     </ul>
  48. </div>

CSS样式

代码内有注释。

Javascript

  1. /**
  2.  * cbpShop.js v1.0.0
  3.  * http://www.codrops.com
  4.  *
  5.  * Licensed under the MIT license.
  6.  * http://www.opensource.org/licenses/mit-license.php
  7.  *
  8.  * Copyright 2013, Codrops
  9.  * http://www.codrops.com
  10.  */
  11. ;( function( window ) {
  12.  
  13.     'use strict';
  14.  
  15.     function cbpShop( el ) {
  16.         this.el = el;
  17.         this._init();
  18.     }
  19.  
  20.     cbpShop.prototype = {
  21.         _init : function() {
  22.             var self = this;
  23.  
  24.             this.touch = Modernizr.touch;
  25.  
  26.             this.products = this.el.querySelectorAll( 'ul.cbp-pggrid > li' );
  27.             Array.prototype.slice.call( this.products ).forEach( function( el, i ) {
  28.                 var content = el.querySelector( 'div.cbp-pgcontent' ),
  29.                     item = content.querySelector( 'div.cbp-pgitem' ),
  30.                     rotate = content.querySelector( 'span.cbp-pgrotate' );
  31.  
  32.                 if( self.touch ) {
  33.  
  34.                     rotate.addEventListener( 'touchstart', function() { self._rotateItem( this, item ); } );
  35.  
  36.                     var options = content.querySelector( 'ul.cbp-pgoptions' ),
  37.                         size = options.querySelector( 'li.cbp-pgoptsize > span' ),
  38.                         color = options.querySelector( 'li.cbp-pgoptcolor > span' );
  39.  
  40.                     size.addEventListener( 'touchstart', function() { self._showItemOptions( this ); } );
  41.                     color.addEventListener( 'touchstart', function() { self._showItemOptions( this ); } );
  42.                 }
  43.                 else {
  44.                     rotate.addEventListener( 'click', function() { self._rotateItem( this, item ); } );
  45.                 }
  46.             } );
  47.         },
  48.         _rotateItem : function( trigger, item ) {
  49.             if( item.getAttribute( 'data-open' ) === 'open' ) {
  50.                 item.setAttribute( 'data-open', '' );
  51.                 trigger.className = trigger.className.replace(/\b cbp-pgrotate-active\b/,'');
  52.                 item.className = item.className.replace(/\b cbp-pgitem-showback\b/,'');
  53.             }
  54.             else {
  55.                 item.setAttribute( 'data-open', 'open' );
  56.                 trigger.className += ' cbp-pgrotate-active';
  57.                 item.className += ' cbp-pgitem-showback';
  58.             }
  59.         },
  60.         _showItemOptions : function( trigger ) {
  61.             if( trigger.getAttribute( 'data-open' ) === 'open' ) {
  62.                 trigger.setAttribute( 'data-open', '' );
  63.                 trigger.parentNode.className = trigger.parentNode.className.replace(/\b cbp-pgoption-active\b/,'');
  64.             }
  65.             else {
  66.                 trigger.setAttribute( 'data-open', 'open' );
  67.                 trigger.parentNode.className += ' cbp-pgoption-active';
  68.             }
  69.         },
  70.         /*
  71.         other functions..
  72.         */
  73.     }
  74.  
  75.     window.cbpShop = cbpShop;
  76.  
  77. } )( window );

英文原文链接:PRODUCT GRID LAYOUT

 



1 评论

  1. 响应式web设计   •  

    所谓的响应式web设计,就是通过最新的css3多媒体查询技术来完成网页在不同分辨率下的适应效果,所以该技术能够很好的运用到iphone,ipad等移动设备,能够响应的开源项目有bootstrap,渴切-响应css框架等,如果要支持ie6~ie8可以参考kr.js解决方案,提供响应布局的服务商有p2h.cn以及 http://xy.keqie.com

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>