首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >容器div中无限水平滚动的div集

容器div中无限水平滚动的div集
EN

Stack Overflow用户
提问于 2017-12-07 01:55:57
回答 1查看 46关注 0票数 0

我正在尝试创建一个标识条带,当其中一个被选中时,会显示该客户的报价。当选择一个徽标时,它应该移到条带的左侧并停留在那里。我让它起作用了。

我的问题是让商标永远存在。

当徽标的div移出它们的容器时,我正在尝试删除它们,然后在条带的另一边重新创建它们,这样徽标就可以继续下去。然而,它运行得并不是很好。

这是html:

代码语言:javascript
复制
<div class="logo-strip">
                <div id="logo-1" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-2" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-3" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-4" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-5" class="logo">
                    <img src="https://upload.wikimedia.org/wikipedia/en/thumb/c/ce/Safeway_Logo.svg/1280px-Safeway_Logo.svg.png">
                </div>
                <div id="logo-6" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-7" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-8" class="logo">
                    <img src="https://upload.wikimedia.org/wikipedia/en/thumb/c/ce/Safeway_Logo.svg/1280px-Safeway_Logo.svg.png">
                </div>
            </div>

下面是CSS:

代码语言:javascript
复制
 div.logo-strip {
 display: flex;
 height: 70px;
 width: 100%;
 overflow: hidden; }

div.logo-strip div.logo {
  display: flex;
  min-width: 112.5px;
  padding: 5px;
  cursor: pointer;
  opacity: .4;
  transition: .5s; }

    div.logo-strip div.logo img {
    object-fit: contain; }

  div.logo-strip div.selected-logo {
  opacity: 1; }

下面是我的js:

代码语言:javascript
复制
( function( $ ) {


$('div#quote-1').removeClass('hidden');
$('div#quote-1').animate({'opacity' : '1'}, 500);
$('div#logo-1').addClass('selected-logo');

$('div.logo').click(function() {

    $('div.logo').removeClass('selected-logo');
    $(this).addClass('selected-logo');

    var logo_offset = $(this).offset().left - $('div.logo').first().offset().left;
    var negative_offset = logo_offset * -1;

    var strip_offset = $('div.logo-strip').offset().left - $('div.logo').first().offset().left;

    if (strip_offset >  100) {

        var to_be_cloned = $('div.logo').slice(0, 3);
        to_be_cloned.remove();
        $('div.logo').last().after(to_be_cloned);

    }

    console.log(strip_offset);
    console.log(to_be_cloned);

    $('div.logo').css({'transform' : 'translateX(' + negative_offset + 'px)'});

    var logo_id = $(this).attr('id');
    var logo_id_trimmed = logo_id.substr(5);

    $('div.customer-quote').addClass('hidden');
    $('div.customer-quote').css({'opacity' : '0'});
    $('div#quote-' + logo_id_trimmed).removeClass('hidden');
    $('div#quote-' + logo_id_trimmed).animate({'opacity' : '1'}, 500);
});

} )( jQuery );

基本上,我一直在尝试这样做:在第一个徽标与div.logo-strip容器元素保持一定距离后,它会删除那个徽标div,并在徽标divs的末尾重新创建它。它在某种程度上是有效的,但它像地狱一样不稳定。有人知道怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2017-12-07 22:55:52

我想通了。

首先,所有的东西都在strangle周围移动,因为我删除了集合一端的div,而把它们放在了另一端,导致所有东西都移动了。我需要做的是克隆div并将它们放在末尾,所以我只是在末尾添加div,而不是从头开始删除它们。

其次,我需要获取先前选择的div和新选择的div的索引,并使用它们来创建切片编号。

第三,您需要通过测量新选择的div的左偏移量减去第一个div的左偏移量来移动整个div链。

第四,您需要从尾部区域之外的额外div开始。如果你没有,那么它在一开始就会变得很奇怪。

下面是新的JS:

代码语言:javascript
复制
$('div.logo').click(function() {
    var previously_selected = $('div.selected-logo');
    var newly_selected = $(this);
    var number_of_previous_selection = $('div.logo').index(previously_selected);
    var number_of_new_selection = $('div.logo').index(newly_selected);
    var selection_distance = number_of_previous_selection - number_of_new_selection;

    $('div.logo').removeClass('selected-logo');
    $(this).addClass('selected-logo');

    var logo_offset = $(this).offset().left - $('div.logo').first().offset().left;
    var negative_offset = logo_offset * -1;
    var strip_offset = $('div.logo-strip').offset().left - $('div.logo').first().offset().left;

    var to_be_cloned = $('div.logo').slice(number_of_previous_selection, number_of_new_selection).clone(true);
    $('div.logo-strip').append(to_be_cloned);
    $('div.logo').css({'transform' : 'translateX(' + negative_offset + 'px)'});

    console.log(number_of_new_selection);
    console.log(number_of_previous_selection);
    console.log(negative_offset);

    var logo_id = $(this).attr('id');
    var logo_id_trimmed = logo_id.substr(5);

    $('div.customer-quote').addClass('hidden');
    $('div.customer-quote').css({'opacity' : '0'});
    $('div#quote-' + logo_id_trimmed).removeClass('hidden');
    $('div#quote-' + logo_id_trimmed).animate({'opacity' : '1'}, 500);


});

然后是HTML:

代码语言:javascript
复制
<div class="quote-and-title">
                <div class="customer-quote hidden" id="quote-1">
                    <p class="customer-text">“Lorem ipsum dolor sit amet, consectetuer adipiscin elit,
                    sed diam nonummy nibh euismod tincidunt ut laoreet
                    dolore magna aliquam erat volutpat. Ut wisi enim ad
                    minim. Lorem ipsum dolor sit amet.”</p>
                    <p class="customer-title">John Smith, Facility Manager</p>
                </div>
                <div class="customer-quote hidden" id="quote-2">
                    <p class="customer-text">“Lorem ipsum dolor sit amet, consectetuer adipiscin elit,
                    sed diam nonummy nibh euismod tincidunt ut laoreet
                    dolore magna aliquam erat volutpat. Ut wisi enim ad
                    minim. Lorem ipsum dolor sit amet.”</p>
                    <p class="customer-title">John Smith, Facility Manager</p>
                </div>
                <div class="customer-quote hidden" id="quote-3">
                    <p class="customer-text">“Lorem ipsum dolor sit amet, consectetuer adipiscin elit,
                    sed diam nonummy nibh euismod tincidunt ut laoreet
                    dolore magna aliquam erat volutpat. Ut wisi enim ad
                    minim. Lorem ipsum dolor sit amet.”</p>
                    <p class="customer-title">John Smith, Facility Manager</p>
                </div>
                <div class="customer-quote hidden" id="quote-4">
                    <p class="customer-text">“Lorem ipsum dolor sit amet, consectetuer adipiscin elit,
                    sed diam nonummy nibh euismod tincidunt ut laoreet
                    dolore magna aliquam erat volutpat. Ut wisi enim ad
                    minim. Lorem ipsum dolor sit amet.”</p>
                    <p class="customer-title">John Smith, Facility Manager</p>
                </div>
                <div class="customer-quote hidden" id="quote-5">
                    <p class="customer-text">“Lorem ipsum dolor sit amet, consectetuer adipiscin elit,
                    sed diam nonummy nibh euismod tincidunt ut laoreet
                    dolore magna aliquam erat volutpat. Ut wisi enim ad
                    minim. Lorem ipsum dolor sit amet.”</p>
                    <p class="customer-title">John Smith, Facility Manager</p>
                </div>
                <div class="customer-quote hidden" id="quote-6">
                    <p class="customer-text">“Lorem ipsum dolor sit amet, consectetuer adipiscin elit,
                    sed diam nonummy nibh euismod tincidunt ut laoreet
                    dolore magna aliquam erat volutpat. Ut wisi enim ad
                    minim. Lorem ipsum dolor sit amet.”</p>
                    <p class="customer-title">John Smith, Facility Manager</p>
                </div>
                <div class="customer-quote hidden" id="quote-7">
                    <p class="customer-text">“Lorem ipsum dolor sit amet, consectetuer adipiscin elit,
                    sed diam nonummy nibh euismod tincidunt ut laoreet
                    dolore magna aliquam erat volutpat. Ut wisi enim ad
                    minim. Lorem ipsum dolor sit amet.”</p>
                    <p class="customer-title">John Smith, Facility Manager</p>
                </div>
                <div class="customer-quote hidden" id="quote-8">
                    <p class="customer-text">“Lorem ipsum dolor sit amet, consectetuer adipiscin elit,
                    sed diam nonummy nibh euismod tincidunt ut laoreet
                    dolore magna aliquam erat volutpat. Ut wisi enim ad
                    minim. Lorem ipsum dolor sit amet.”</p>
                    <p class="customer-title">John Smith, Facility Manager</p>
                </div>
                <div class="customer-quote hidden" id="quote-9">
                    <p class="customer-text">“Lorem ipsum dolor sit amet, consectetuer adipiscin elit,
                    sed diam nonummy nibh euismod tincidunt ut laoreet
                    dolore magna aliquam erat volutpat. Ut wisi enim ad
                    minim. Lorem ipsum dolor sit amet.”</p>
                    <p class="customer-title">John Smith, Facility Manager</p>
                </div>
                <div class="customer-quote hidden" id="quote-10">
                    <p class="customer-text">“Lorem ipsum dolor sit amet, consectetuer adipiscin elit,
                    sed diam nonummy nibh euismod tincidunt ut laoreet
                    dolore magna aliquam erat volutpat. Ut wisi enim ad
                    minim. Lorem ipsum dolor sit amet.”</p>
                    <p class="customer-title">John Smith, Facility Manager</p>
                </div>
                <div class="customer-quote hidden" id="quote-11">
                    <p class="customer-text">“Lorem ipsum dolor sit amet, consectetuer adipiscin elit,
                    sed diam nonummy nibh euismod tincidunt ut laoreet
                    dolore magna aliquam erat volutpat. Ut wisi enim ad
                    minim. Lorem ipsum dolor sit amet.”</p>
                    <p class="customer-title">John Smith, Facility Manager</p>
                </div>
                <div class="customer-quote hidden" id="quote-12">
                    <p class="customer-text">“Lorem ipsum dolor sit amet, consectetuer adipiscin elit,
                    sed diam nonummy nibh euismod tincidunt ut laoreet
                    dolore magna aliquam erat volutpat. Ut wisi enim ad
                    minim. Lorem ipsum dolor sit amet.”</p>
                    <p class="customer-title">John Smith, Facility Manager</p>
                </div>
                <div class="title has-red-divider-uptop">
                    <p>What The Industry is Saying</p>
                </div>
            </div>

            <div class="logo-strip">

                <div id="logo-1" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-2" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-3" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-4" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-5" class="logo">
                    <img src="https://upload.wikimedia.org/wikipedia/en/thumb/c/ce/Safeway_Logo.svg/1280px-Safeway_Logo.svg.png">
                </div>
                <div id="logo-6" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-7" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-8" class="logo">
                    <img src="https://upload.wikimedia.org/wikipedia/en/thumb/c/ce/Safeway_Logo.svg/1280px-Safeway_Logo.svg.png">
                </div>
                <div id="logo-9" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-10" class="logo">
                    <img src="https://upload.wikimedia.org/wikipedia/en/thumb/c/ce/Safeway_Logo.svg/1280px-Safeway_Logo.svg.png">
                </div>
                <div id="logo-11" class="logo">
                    <img src="http://www.henningsen.com/wp-content/themes/henningsen-cold-storage/images/logo-emboss.png">
                </div>
                <div id="logo-12" class="logo">
                    <img src="https://upload.wikimedia.org/wikipedia/en/thumb/c/ce/Safeway_Logo.svg/1280px-Safeway_Logo.svg.png">
                </div>

            </div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47680610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档