javascript - 我的轮播在水平方向上工作得很好,但如何让它在垂直方向上工作呢?

标签 javascript jquery

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

我尝试将 Widht 和 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');
});

最佳答案

我已经更新了 fiddle 并进行了一些编辑。希望这可以帮助!您应该能够从这里获取它。

fiddle 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;
}

关于javascript - 我的轮播在水平方向上工作得很好,但如何让它在垂直方向上工作呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58258409/

相关文章:

javascript - JSON JavaScript 不起作用?

javascript - v-for循环中的单选输入选择相同值的多个单选按钮

javascript - 将 JQM 面板限制为页面上只有 1 个实例

javascript - HTML Canvas 嗅探 Webgl 数据

javascript - 如何将 JSON 数据放入 HTML div?

JQuery:如何将 CSS 类添加到 HTML 按钮?

javascript - 追加后删除并不是删除

Javascript setTimeout 在 Android Samsung S4 上被阻止

javascript - Rails `remote: true` 未发出 AJAX 请求

jquery - Gist/Github API - 获取私有(private)和公共(public) Gist