【问题标题】:Javascript center horizontal scroll on containing LI包含 LI 的 Javascript 居中水平滚动
【发布时间】:2012-12-22 01:29:46
【问题描述】:

仅使用 JavaScript(不使用 jquery) - 我想这样当列表项具有“活动”类时,它会在其容器内居中。

最终结果将是一个轮播,其中“活动”li 将位于页面中心,单击另一个 li 将使其处于活动状态,然后它将自动居中(滚动)。我遇到的问题是我似乎无法将其置于中心位置。宽度为页面的 100%,因此宽度是动态的。

任何和所有的帮助都会很棒。

html:

<div id="container">
    <ul id="carousel">
      <li>0</li>
      <li>1</li>
      <li>2</li>
      <li>3</li>
      <li class="active">4</li>
      <li>5</li>
      <li>6</li>
      <li>7</li>
      <li>8</li>
      <li>9</li>
    </ul>
  </div>

css:

html, body {margin:0;padding:0;height:100%;width:100%;}
ul{
  position:relative;
  width:100%;
  height:322px;
  margin:0 auto;
  padding:0;
  overflow-x:hidden;
  white-space: nowrap;
}
li{
  position:relative;
  display:inline-block;
  padding:0;
  margin-right:20px;
  list-style-type:none;
  width:200px;
  height:200px;
  top: 70px;
  background-color:#efefef;
  border:1px solid #d3d3d3;
  border-radius: 12px;
}
li:first-child {
  margin-left: 20px;
}
li.active {
  top: 20px;
  width:300px;
  height:300px;
}

javascript:

var r = document.getElementById('carousel').offsetWidth;
var l = document.getElementById('carousel').scrollWidth;
var m = r / 2;
document.getElementById('carousel').scrollLeft = 0;
document.getElementById('carousel').scrollLeft = m;

【问题讨论】:

    标签: javascript html scroll carousel


    【解决方案1】:

    您必须从m 中减去活动&lt;li&gt; 宽度的一半和前一个&lt;li&gt; 之间的空格

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 2016-06-26
      • 2014-12-10
      • 2023-04-07
      相关资源
      最近更新 更多