【问题标题】:Display list items on top of each other在彼此的顶部显示列表项
【发布时间】:2014-12-21 03:11:49
【问题描述】:

我的目标是在列表项中移动,一个在另一个淡入时淡出。我需要所有这三个列表项显示在同一行,彼此重叠。应该适用于不同宽度的图像,唯一的共同属性可能是顶部位置,相对于它所在的 div。

Link

.container {
  display:table;
  margin: 0 auto;
}

ul {
  list-style-type:none;
}

为了更好地解释,我需要这些项目,无论是文本、图像、不同大小的 div,都位于屏幕中间,完全居中。

这可以通过 javascript 解决方案来实现,方法是测量包含的元素的大小并从图像左侧减去中间偏移量。

我想要实现的是一个只有 CSS3/HTML5 的选项来实现类似的效果。

【问题讨论】:

  • 再次检查我的答案。列表项中的任何内容都将始终居中
  • 我更新了两张图片(相同的图片大小不一,它显示了我在回答时遇到的问题)。 plnkr.co/edit/L8tsnopS9QvC4OteyIKQ?p=preview。这些图像的中间点应该在它们所在的任何元素的中间。例如,小图像的中间,在这个例子中应该是大图像的中间,这些是它们唯一的共同点。
  • 检查我在这里做了什么jsfiddle.net/nsLq3ooc/1
  • 我看不到大图。只有一部分。
  • 因为尺寸大于定义的尺寸。看这个http://jsfiddle.net/nsLq3ooc/2/

标签: html css html-lists


【解决方案1】:

我希望我能理解您的问题:只需使用绝对的 position 属性值,它们就会相互堆叠。试试这个:

* {
  margin: 0 auto;
  }

.container {
  width: 300px;
  position: relative;
  margin-top: 70px;
  }


ul {
  list-style-type:none;
}

ul li {
    position: absolute;
    height: 25px;
    background-color: red;
    color: white;
    padding: 10px;
    display: block;
    text-align: center;
    width: 100%;
}
<div class="container">
      <ul>
        <li>One</li>
        <li>Two</li>
        <li>Three</li>
      </ul>
    </div>

注意:您可以使用z-index来改变元素的堆栈顺序。

【讨论】:

  • 与 plunkr 类似,我真的希望可变宽度项目以包含的 div 为中心。我用更具体的指导和对我不想使用的 javascript 变体的解释更新了这个问题。 (编辑:添加更多信息)
  • 好的。一点点 CSS 就可以做到这一点。使用 let 属性值来做到这一点。
  • 所以内容 div 和 text 有点偏右,我真的需要里面的内容来动态确定宽度。无论 li 元素的宽度如何,它都会居中。想象一下,您的示例中的第一个元素是最宽的,第二个是第二个最宽的,第三个是最不宽的。您应该看到一个的外部,两个的外部和三个的整体。我会更新并添加图片
  • 它实际上是正确居中的,这就是 sn-p 呈现它的方式。无论宽度和 .添加图片,让我们看看。
  • link我在上面添加了2张图片(相同的图片,不同的尺寸)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多