2015-05-20 65 views
1

我想保持一个“幻灯片”在我的可滚动div中心在任何时候。由于某种原因,脚本似乎将其设置为偏离中心,我无法弄清楚原因。下面是代码:居中脚本稍微偏离中心

http://jsfiddle.net/5cp0unwj/

HTML:

<div id="carousel"> 
    <div class="slide"><img src="http://placehold.it/300x150"/></div> 
    <div class="slide"><img src="http://placehold.it/300x150"/></div> 
    <div class="slide"><img src="http://placehold.it/300x150"/></div> 
    <div class="slide"><img src="http://placehold.it/300x150"/></div> 
    <div class="slide"><img src="http://placehold.it/300x150"/></div> 
    <div class="slide"><img src="http://placehold.it/300x150"/></div> 
</div> 

的JavaScript(jQuery的):

$(document).ready(function() { 
    // setup handlers 
    var carouselTimeout = null; 
    var scrollStop = function() { 
    var carousel = $('#carousel'); 

    var carouselWidth = carousel.width(); 
    var slideWidth = carousel.find('.slide:first-child').width(); 
    var margin = carouselWidth/20; // assumes margin of 5% on slides 
    var snapVal = slideWidth/2 + margin; 

    var offset = carousel.scrollLeft(); 
    slideNum = Math.round(offset/snapVal/2); 
    var newOffset = slideNum * snapVal * 2; 
    carousel.animate({ 
     scrollLeft: newOffset 
    }); 
    }; 
    $('#carousel').scroll(function() { 
    if (carouselTimeout) { 
     clearTimeout(carouselTimeout); 
    } 
    carouselTimeout = setTimeout(scrollStop, 500); 
    }); 
}); 

CSS:

#carousel { 
    width: 100%; 
    height: 150px; 
    background-color: rgba(0, 0, 0, 0.3); 
    overflow-x: scroll; 
    overflow-y: hidden; 
    white-space: nowrap; 
} 

#carousel .slide { 
    display: inline-block; 
    margin: 0 5%; 
} 

#carousel .slide:first-child { 
    margin: 0 5% 0 calc(50% - 150px); 
} 

#carousel .slide:last-child { 
    margin: 0 calc(50% - 150px) 0 5%; 
} 
+0

什么是 “轻微” 呢?这可能是一个'内联块/空白'问题? –

+0

@Paulie_D它可能是,但我认为它可能是页面宽度依赖意味着它更像是一个像素分割问题。尽管如果你看到一个可能的空白问题,随意玩它。 – carloabelli

+0

这杀死了空白:http://jsfiddle.net/5cp0unwj/1/和对我来说,第一个和最后一个块都完全居中 – Marcel

回答

2

行内元素对代码中的空白区域很敏感。删除空格出现来解决问题:

<div id="carousel"> 
    <div class="slide"><img src="http://placehold.it/300x150"/></div><div class="slide"><img src="http://placehold.it/300x150"/></div><div class="slide"><img src="http://placehold.it/300x150"/></div><div class="slide"><img src="http://placehold.it/300x150"/></div><div class="slide"><img src="http://placehold.it/300x150"/></div><div class="slide"><img src="http://placehold.it/300x150"/></div> 
</div> 

jsFiddle example

+0

我讨厌HTML的人。有没有办法做到这一点,而不牺牲代码格式? – carloabelli