这是一款效果非常炫酷的jQueryCSS3推拉式隐藏侧边栏网格图片画廊特效。这个图片画廊特效中所有缩略图以网格形式排列,当用户点击相应的缩略图后,高清大图从右边滑出,整个缩略图面板被向左推,右侧显示大图及图片的文字说明。

制作方法

HTML结构

这个图片画廊使用无序列表来制作,外部使用<section>来包裹,最外层使用<main>元素。

<main role="main" id="main">
  <section class="tiles-a">
    <ul>
      <li>
        <a class="gallery" href="#" style="background: url('http://i.imgur.com/J3gQPXH.jpg'); background-size: cover;" aria-controls="aside" aria-expanded="false">
          <div class="details visually-hidden">
            <img src="http://i.imgur.com/t5Nd1jj.jpg" alt="...">
            <div class="text-copy wrapper">
              <h3>Name Here</h3>
              <p>...</p>
            </div>
          </div>
        </a>
      </li>
      ......
    </ul>
  </section>
</main>         
              

右侧隐藏的滑动侧边栏使用的是<aside>元素,里面使用一个SVG来制作关闭按钮。

<aside role="complementary" id="aside" 
       aria-hidden="true" 
       aria-expanded="false"> 
  <a href="#" class="close">
    <img src="close.svg" alt="Close button">
      <span class="visually-hidden">Return to main content
      </span>
  </a>
  <div class="aside--details" tabindex="0" 
       aria-live="polite" 
       aria-atomic="true" 
       aria-label="Image details"> 
  </div>
</aside>                
              
CSS样式

这个网格图片画廊的CSS样式比较简单,其中使用媒体查询来控制图片的网格布局。其它代码相对简单,请参考下载文件。

@media (min-width: 640px) {
  .tiles-a li {
    float: left;
    width: 33.33%;
  }
}         
              
JAVASCRIPT

这个网格图片画廊的js代码中,所有的功能块都封装成了函数,showAside()是显示隐藏侧边栏,killAside()是关闭侧边栏。loadTileData()是为侧边栏加载数据。

// load data to aside
function loadTileData(target){
  var $this = $(target),
      itemHtml = $this.find(".details").html();
      $asideTarget.html(itemHtml);
      showAside();
}              
// show/hide aside
function showAside(){
  if(!$("html").hasClass(slideClass)){
    $("html").toggleClass(slideClass);
    $aside.attr("aria-hidden","false");
    focusCloseButton();
  }
}              
// kill aside
function killAside(){
  if($("html").hasClass(slideClass)){
    $("html").removeClass(slideClass);
    sendFocusBack();
    $aside.attr("aria-hidden","true");
    $tiles.attr("aria-expanded","false");
  }
}                
              

其它js代码请参考下载文件。