javascript - 居中脚本稍微偏离中心

标签 javascript jquery html css

我试图让我的可滚动 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%;
}

最佳答案

内联元素对代码中的空格敏感。删除空白似乎可以解决问题:

<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

关于javascript - 居中脚本稍微偏离中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30351490/

相关文章:

javascript - forEach 在 KnockoutJS 中具有对象属性

javascript - 如何在 AngularJS 应用程序中修改 DOM

javascript - 这两个类定义有什么区别?

jquery - 将对象插入数组后 Jquery 数组为空

javascript - jQuery 模块模式未命名 |如何访问 '$'?

javascript - jQuery 表中的表长度

javascript - Sketch.js 将 Canvas 复制到剪贴板

安卓浏览器漏洞? div溢出滚动

javascript - 使用 CSS 打印出变异的元音

html - 社交按钮显示不正确