jquery - 在滑动细节之前,向下/向上滑动不太顺畅,细节和缩略图相关

标签 jquery css

使用 Bootstrap 3

  <div>
    <div id="myCarousel" class="carousel slide">
    <!-- Carousel items -->
    <div class="carousel-inner">
    <div class="item active">
    <div class="row">
    <div class="col-sm-3 col-xs-6"><a href="#x"><img src="http://placehold.it/500x500" alt="Image" class="img-responsive"></a>
    </div>
    <div class="col-sm-3 col-xs-6"><a href="#x"><img src="http://placehold.it/500x500" alt="Image" class="img-responsive"></a>
    </div>
    <div class="col-sm-3 col-xs-6"><a href="#x"><img src="http://placehold.it/500x500" alt="Image" class="img-responsive"></a>
    </div>
    <div class="col-sm-3 col-xs-6"><a href="#x"><img src="http://placehold.it/500x500" alt="Image" class="img-responsive"></a>
    </div>
    </div>
    <!--/row-->
    </div>
    </div>
    <!--/carousel-inner-->
    <a class="left carousel-control" href="#myCarousel" data-slide="prev"><i class="fa fa-chevron-left fa-4"></i></a>

    <a class="right carousel-control" href="#myCarousel" data-slide="next"><i class="fa fa-chevron-right fa-4"></i></a>
    </div>
    <!--/myCarousel-->
    <!--expanding more details for certain thumbnail clicked.-->
    <div class="details">
    Thumbnail 1
    </div>
    <div class="details">
    Thumbnail 2
    </div>
    <div class="details">
    Thumbnail 3
    </div>
    <div class="details">
    Thumbnail 4
    </div>
    </div>

CSS

.details{
  display: none;
}

JQuery

$('.thumbnail').on('click', function(e){
console.log('here');
$('.details').slideToggle('slow');
$(this).addClass('active');
$('.thumbnail').removeClass('active');
});

两个问题: 1.向下滑动时,滑动不顺畅。有没有什么办法可以利用CSS3动画让细节上下滑动流畅呢?例如,整个细节 div 应该一次性显示所有信息。 Slidetoggle 向下滑动,在某种意义上一点一点地给出细节。 2.意识到细节div将在缩略图之外。如何将详细信息 div 与单击的缩略图相关联?

已更新 JSFiddle Demo

尝试了 data-rel 以查看它是否在单击特定缩略图时显示特定详细信息,但它似乎不起作用?

最佳答案

对于平滑度问题,请尝试使用 velocity 插件(或类似插件)。它将 animate() 样式命令(使用 velocity() 代替)转换为幕后的 CSS 动画(更流畅)。这通常意味着您必须将所有 slideToggle() 函数等替换为 animate(...) 等价物,然后将它们重命名为 velocity(... )

极速链接:http://julian.com/research/velocity/

对于第二个问题,使用 data- 属性来标记关联的元素是什么(可以使用 id、类选择器或任何您喜欢的)。

您的 HTML 不完整,但可以这样使用:

<div class="thumbnail" data-rel="#details1">

<div class="details" id="details1">
    Thumbnail 1
</div>

并更改点击处理程序以查找相关元素:

$('.thumbnail').on('click', function(e){
    var target = $(this).data('rel');
    var $target = $(target);

    // Close all but the new target and open it
    $('.details').not($target).slideUp();
    $(target).slideDown('slow');

    // Remove active from all active elements
    $('.thumbnail .active').removeClass('active');

    // Add active only to this element
    $(this).addClass('active');
});

JSFiddle:http://jsfiddle.net/TrueBlueAussie/fpx9gvzw/3/

您可以在目标元素上使用带有 ID 的 id 选择器,在目标上使用带有唯一类的类选择器,或者在目标上使用 data- 属性并与 这样的选择器匹配$([data-rel="..."]) 但这要慢得多(这与速度无关紧要)。

注意:我不是“切换”动画方法的忠实粉丝(切换当前元素除外),因为状态可能会变得困惑,因此使用 not slideUpslideDown 在适当的元素上。

关于jquery - 在滑动细节之前,向下/向上滑动不太顺畅,细节和缩略图相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26912118/

相关文章:

javascript - 调试时如何忽略某些脚本文件/行?

html - CSS背景颜色不粘

javascript - 打开模态时,我需要使用什么来提交表单?

javascript - 将一个 div 从多个其他 div 下方拖出

html - 底部填充的存在/不存在会改变 Chrome 上的内框大小

php - 为网格布局拆分 PHP 数组

jquery - 使用flexbox得到2个等高的div,但是内容呢?

css - HTML5/CSS3 中是否有调整浏览器窗口大小以适应网页的命令?

javascript - 函数执行得太快

jQuery .rotate() 不起作用