【问题标题】:My carousel works perfectly horizontally, but how to make it work vertically?我的旋转木马水平工作完美,但如何让它垂直工作?
【发布时间】:2019-10-06 14:50:49
【问题描述】:

我的网站上有这个轮播来显示产品图片。单击 LI 元素时,该 LI 会滚动到 UL 的中心。它在水平方向上工作得很好,但我如何让它垂直工作呢?

我尝试将 Width 和 width 更改为 Height 和 height 并将 Left 和 left 更改为 Top 和 top 并将 ScrollLeft 更改为 ScrollTop 但它当然不能正常工作。

演示:https://jsfiddle.net/of2wxjy3/

<div class="product-preview_mobile-thumbnails-list-inner">
<ul>
<li class="product-preview_mobile-thumbnails-list_item">
<img class="current-mobile-thumbnail" src="https://1.bp.blogspot.com/-pdOOEtG_uYE/XZOHBvNx0QI/AAAAAAAAAI4/K-ShSavM3sUJMLR-vpZd8yftpm3v3eYPwCLcBGAsYHQ/s320/1.jpg">
</li>
<li class="product-preview_mobile-thumbnails-list_item">
<img src="https://1.bp.blogspot.com/-SVSc51GKlfk/XZOHBrU-r8I/AAAAAAAAAI8/87c17psUxsgQImo9DNwpLH_lqEN5ycoXQCLcBGAsYHQ/s320/2.jpg">
</li>
<li class="product-preview_mobile-thumbnails-list_item">
<img src="https://1.bp.blogspot.com/-WzhHuteXzpU/XZOHBinqdxI/AAAAAAAAAI0/r4eCe3ECseogebJUueeQ3W_3nDIHSwdsQCLcBGAsYHQ/s320/3.jpg">
</li>
<li class="product-preview_mobile-thumbnails-list_item">
<img src="https://1.bp.blogspot.com/-J0ky_WiapH4/XZOHCQ-LdgI/AAAAAAAAAJA/STOcX4imVZ05o62p9ovVvM-jsUtJ4tKWwCLcBGAsYHQ/s320/4.jpg">
</li>
<li class="product-preview_mobile-thumbnails-list_item">
<img src="https://1.bp.blogspot.com/-LgovTz7CQNk/XZOHDMKOPUI/AAAAAAAAAJE/3r3zCOO9JGIMMHbsP6RSOlyVWnZ1EQn9wCLcBGAsYHQ/s320/5.jpg">
</li>
</ul>
</div>

.product-preview_mobile-thumbnails-list-inner {
    margin: 0 auto;
    width: 200px;
    overflow-x: scroll;
    float: left;
    white-space: nowrap;
}

.product-preview_mobile-thumbnails-list-inner ul {
    margin: 0 auto;
    height: 100%;
    list-style: none;
    width: max-content;
    padding: 0 20px;
}

.product-preview_mobile-thumbnails-list_item {
    display: inline-block;
    margin: 0 13.49px 0 0;
}

.product-preview_mobile-thumbnails-list_item:last-child {
    margin: 0;
}

.product-preview_mobile-thumbnails-list_item img {
    border: 0;
    border-top: 2px solid gainsboro;
    box-shadow: none;
    background: #FFF;
    padding: 12.5px 0 0;
    border-radius: 0;
    width: 60px;
    height: 60px;
}

.current-mobile-thumbnail {
    border-top-color: #231f20!important;
}

$('.product-preview_mobile-thumbnails-list-inner ul li').on('click', function(e) {
    var container = $(this).parent().parent();
    var slideWidth = $(this).width();
    var frameWidth = container.width() / 2;
    var slidePosition = $(this).position().left;
    var offset = container.scrollLeft() + slidePosition - frameWidth + slideWidth / 2;
    container.animate({
        scrollLeft: offset
    }, 250);
    e.preventDefault();
});

$('.product-preview_mobile-thumbnails-list-inner ul li img').on('click', function(){
    $('img.current-mobile-thumbnail').removeClass('current-mobile-thumbnail');
    $(this).addClass('current-mobile-thumbnail');
});

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    我已经对小提琴进行了一些修改。希望这可以帮助!你应该可以从这里拿起来。

    小提琴 https://jsfiddle.net/q246gsku/4/

    JS

    $(".product-preview_mobile-thumbnails-list-inner ul li").on("click", function(e) {
      var container = $(this).parent().parent();
      var slideWidth = $(this).height();
      var frameWidth = container.height() / 2;
      var slidePosition = $(this).position().top;
      var offset = container.scrollTop() + slidePosition - frameWidth + slideWidth / 2;
      container.animate(
        {
          scrollTop: offset
        },
        250
      );
      e.preventDefault();
    });
    
    $(".product-preview_mobile-thumbnails-list-inner ul li img").on(
      "click",
      function() {
        $("img.current-mobile-thumbnail").removeClass("current-mobile-thumbnail");
        $(this).addClass("current-mobile-thumbnail");
      }
    );
    

    CSS

    .product-preview_mobile-thumbnails-list-inner {
        margin: 0 auto;
        width: 100px;
        overflow-y: scroll;
        overflow-x: hidden;
        float: left;
        white-space: nowrap;
    }
    
    .product-preview_mobile-thumbnails-list-inner ul {
        margin: 0 auto;
        height: 200px;
        list-style: none;
        width: max-content;
        padding: 0 20px;
    }
    
    .product-preview_mobile-thumbnails-list_item {
        display: block;
        margin: 0 13.49px 0 0;
    }
    
    .product-preview_mobile-thumbnails-list_item:last-child {
        margin: 0;
    }
    
    .product-preview_mobile-thumbnails-list_item img {
        border: 0;
        border-top: 2px solid gainsboro;
        box-shadow: none;
        background: #FFF;
        padding: 12.5px 0 0;
        border-radius: 0;
        width: 60px;
        height: 60px;
    }
    
    .current-mobile-thumbnail {
        border-top-color: #231f20!important;
    }
    

    【讨论】:

    • 在 JSFiddle 上的工作就像魅力一样,谢谢!但这很有趣,因为当我将代码放在我的网站上时,我必须在“product-preview_desktop-thumbnails-list-inner”中添加“位置:相对”,否则滚动功能错误并且不会集中单击的 LI 元素。
    猜你喜欢
    • 2022-08-03
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多