用CSS3和jQuery来创建一个鼠标悬停显示详细面板

2014-02-08阅读(4313)评论(6)牵着狗狗看MM

苏州实时公交查询

许多网上商店和电子商务网站都使用一个小细节面板来提供有关产品的详细信息。
这里提供CSS3版本和jQuery 2个版本。

jQuery版本

我的jQuery的版本有一个稍微不同的HTML设置比对CSS3的适应。很显然,我们需要jQuery库的一个副本,但更重要的是细节面板的处理。用JS我调用一个HTML元素来取代内部HTML内容。 CSS3的要求旁边的每个缩略图链接的独特的div元素,从而增加了更多的散到您的网页。
HTML代码

<div class="thumbs">
        <ul class="clearfix">
          <li><a href="#" target="_blank"><img src="img/social-hx-icons-thumb.jpg" data-fullsize="img/social-hx-icons.jpg" class="thumbimg" alt="Social HX Icons" data-date="Nov 12th, 2013"></a><meta class="desc" content="我们热爱这些小的社交媒体图标。随着深度和阴影只是一个提示,让他们从规范的变化。"></li>
          <li><a href="#" target="_blank"><img src="img/message-app-interface-thumb.jpg" data-fullsize="img/message-app-interface.jpg" class="thumbimg" alt="Message App Interface" data-date="Nov 6th, 2013"></a><meta class="desc" content="喜悦的是细节,这是一个令人愉快的小界面。微妙的渐变,阴影和线条做的东西是显着的触觉和点击能。一个伟大的开端,一个消息/通讯小工具或应用程序接口"></li>
          <li><a href="#" target="_blank"><img src="img/flat-toggles-sliders-thumb.jpg" data-fullsize="img/flat-toggles-sliders.jpg" class="thumbimg" alt="Flat Toggles and Sliders" data-date="Oct 18th, 2013"></a><meta class="desc" content="这套包括常见的UI组件,如滑块,翻转,和窗口小部件。大量各种在这里,以确保您有完全在你的设计的权利类型的表单。"></li>
        </ul>
      </div>

 <div id="details-pane" style="display: none;">
        <h3 class="title"></h3>
        <p class="desc"></p>
        <div class="big-img"><a href="" target="_blank"><img src=""></a></div>
      </div>

jQuery代码

$(function(){
  $('.thumbs ul li img').on('mouseover', function(e){
    var dpane      = $('#details-pane');
    var dpanetitle = $('#details-pane .title');
    var dpanedesc  = $('#details-pane .desc');
    var newtitle   = $(this).attr('alt');
    var newdate    = $(this).attr('data-date');
    var newdesc    = $(this).parent().next('meta.desc').attr('content');
    var newimg     = $(this).attr('data-fullsize');
    var linkurl    = $(this).parent().attr('href');

    var position = $(this).offset();
    var imgwidth = $(this).width();
    var ycoord   = position.top;
    if(position.left / $(window).width() >= 0.5) {
      var xcoord = position.left - 530;
      // 详情面板是530的固定宽度
      // 如果img位置超出页面的50%,我们移动窗格到左侧
    } else {
      var xcoord = position.left + imgwidth;
    }

    $('.big-img a').attr('href',linkurl);
    $('.big-img a img').attr('src',newimg);

    var titlehtml = newtitle + '<span>('+newdate+')</span>';

    dpanetitle.html(titlehtml);
    dpanedesc.html(newdesc);
    dpane.css({ 'left': xcoord, 'top': ycoord, 'display': 'block'});

  }).on('mouseout', function(e){
    $('#details-pane').css('display','none');
  });

  // 徘徊在详细信息窗格中不断显示,否则隐藏
  $('#details-pane').on('mouseover', function(e){
    $(this).css('display','block');
  });
  $('#details-pane').on('mouseout', function(e){
    //这是一个分配到原始程序的事件
    var e = e.toElement || e.relatedTarget;
    if (e.parentNode == this || e.parentNode.parentNode == this || e.parentNode.parentNode.parentNode == this || e == this || e.nodeName == 'IMG') {
      return;
    }
    $(this).css('display','none');
    //console.log(e.nodeName)
  });
});

CSS3版本

HTML代码

<div class="thumbs">
        <ul class="clearfix">
          <li>
            <a href="#" class="hvrlink" target="_blank"><img src="img/social-hx-icons-thumb.jpg" data-fullsize="img/social-hx-icons.jpg" alt="Social HX Icons"></a>
            <div class="details-pane">
              <h3 class="title">Social HX Icons<span>(Nov 12th, 2013)</span></h3>
              <p class="desc">我们热爱这些小的社交媒体图标。随着深度和阴影只是一个提示,让他们从规范的变化。</p>
              <div class="big-img"><a href="#" target="_blank"><img src="img/social-hx-icons.jpg"></a></div>
            </div><!-- @end .details-pane -->
          </li>
          <li>
            <a href="#" class="hvrlink"  target="_blank"><img src="img/message-app-interface-thumb.jpg" data-fullsize="img/message-app-interface.jpg" alt="Message App Interface"></a>
            <div class="details-pane rightside">
              <h3 class="title">Message App Interface<span>(Nov 6th, 2013)</span></h3>
              <p class="desc">喜悦的是细节,这是一个令人愉快的小界面。微妙的渐变,阴影和线条做的东西是显着的触觉和点击能。一个伟大的开端,一个消息/通讯小工具或应用程序接口。</p>
              <div class="big-img"><a href="#" target="_blank"><img src="img/message-app-interface.jpg"></a></div>
            </div><!-- @end .details-pane -->
          </li>
          <li>
            <a href="#" class="hvrlink" target="_blank"><img src="img/flat-toggles-sliders-thumb.jpg" data-fullsize="img/flat-toggles-sliders.jpg" alt="Flat Toggles and Sliders"></a>
            <div class="details-pane">
              <h3 class="title">Flat Toggles and Sliders<span>(Oct 18th, 2013)</span></h3>
              <p class="desc">这套包括常见的UI组件,如滑块,翻转,和窗口小部件。大量各种在这里,以确保您有完全在你的设计的权利类型的表单。</p>
              <div class="big-img"><a href="#" target="_blank"><img src="img/flat-toggles-sliders.jpg"></a></div>
            </div><!-- @end .details-pane -->
          </li>
        </ul>
      </div>

CSS代码

.thumbs {
  padding: 8px 0;
  text-align: center;
}

.thumbs ul li {
  display: block;
  position: relative;
  float: left;
  margin-left: 50px;
  margin-bottom: 50px;
}

/** detail panel **/
.details-pane {
  display: none;
  color: #414141;
  background: #f1f1f1;
  border: 1px solid #a9a9a9;
  position: absolute;
  top: 0;
  left: 290px;
  z-index: 99999;
  width: 530px;
  padding: 6px 8px;
  text-align: left;
  -webkit-box-shadow: 1px 3px 3px rgba(0,0,0,0.4);
  -moz-box-shadow: 1px 3px 3px rgba(0,0,0,0.4);
  box-shadow: 1px 3px 3px rgba(0,0,0,0.4);
}
.details-pane.rightside {
  left: -529px;
}

.details-pane h3 {
  font-size: 2.0em;
  line-height: 1.1em;
  margin-bottom: 4px;
}

.details-pane h3 span {
  font-size: 0.75em;
  font-style: italic;
  color: #555;
  padding-left: 15px;
}

.details-pane .desc {
  font-size: 1.2em;
  margin-bottom: 6px;
}
/** hover styles **/
a.hvrlink:hover + .details-pane {
  display: block;
}
.details-pane:hover {
  display: block;
}

jQuery DemoCSS3 Demo下载源代码

赞(1)
转载请注明来源:Web前端(W3Cways.com) - Web前端学习之路 » 用CSS3和jQuery来创建一个鼠标悬停显示详细面板
分享到: 更多 (0)