html - 关键帧动画的列表定位

标签 html css

我正在尝试使用关键帧动画,并为 li 元素的漂亮动画编写了这篇文章:
https://codepen.io/anon/pen/rZGgLg
HTML:

<ul>
  <li>item 1</li>
  <li>item 2</li>
  <li>item 3</li>
  <li>item 4</li>
  <li>item 5</li>
</ul>

CSS:

$total-items: 5;

body {
  background: #111;
  color: #fff;
}

ul {
  width: 300px;
  position: absolute;
  left: 50%;
  margin-top: 25px;
  margin-left: -150px;
}

li {
  position: relative;
  display: block;
  border: 1px solid red;
  margin-bottom: 5px;
  padding: 10px;
  text-align: center;
  text-transform: lowercase;
  animation: fadeIn 0.5s linear;
  animation-fill-mode: both;
}

// Set delay per list item
@for $i from 1 through $total-items {
  li:nth-child(#{$i}) {
    animation-delay: 1s * $i;
  }
}

// Keyframe animation
@-webkit-keyframes fadeIn {
  0% {
    opacity: 0;
    top: 100px;
  }
  75% {
    opacity: 0.5;
    top: 0px;
  }
  100% {
    opacity: 1;
  }
}

现在我正在努力将其整合到以下部分中:

.half-width>.half-width-content {
  position: relative;
  margin-top: 0;
  height: 100%;
  width: 100%;
}

.half-width>.half-width-content>.list-div {
  position: absolute;
  left: 50%;
  top: 50%;
  -webkit-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
}
<div class="half-width">
  <div class="half-width-content">
    <div class="list-div">
      <ul class="items-list" id="list">
        <li>Entry A</li>
        <li>Entry B</li>
        <li>Entry C</li>
        <li>Entry D</li>
      </ul>
    </div>
  </div>
</div>

当我将 list-div 中的 ul 定位为绝对值时,它们几乎没有宽度。

有人可以在这里帮助我,让 li 元素的动画方式与上面的简单示例相同吗?

最佳答案

在“简单示例”中,您的 ul 元素的宽度为 300 像素。当您将相同的宽度应用于新代码时,它会按预期工作。

在我的代码中,我使用了一个 flexbox 来水平居中列表。有关 flexbox 的更多信息,请参见 here .

body {
  background-color: black;
  margin: 0;
}

.list-div {
  display: flex;
  justify-content: center;
}

ul {
  padding: 0;
  margin: 0;
  width: 300px;
}

li {
  position: relative;
  display: block;
  border: 1px solid red;
  color: white;
  margin-bottom: 5px;
  padding: 10px;
  text-align: center;
  text-transform: lowercase;
  animation: fadeIn 1s linear;
  animation-fill-mode: both;
}

li:nth-child(1) {
  animation-delay: 1s;
}

li:nth-child(2) {
  animation-delay: 2s;
}

li:nth-child(3) {
  animation-delay: 3s;
}

li:nth-child(4) {
  animation-delay: 4s;
}

@-webkit-keyframes fadeIn {
  0% {
    opacity: 0;
    top: 100px;
  }
  75% {
    opacity: 0.5;
    top: 0px;
  }
  100% {
    opacity: 1;
  }
}
<div class="half-width">
  <div class="half-width-content">
    <div class="list-div">
      <ul class="items-list" id="list">
        <li>Entry A</li>
        <li>Entry B</li>
        <li>Entry C</li>
        <li>Entry D</li>
      </ul>
    </div>
  </div>
</div>

关于html - 关键帧动画的列表定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52215832/

相关文章:

javascript - 根据id显示/隐藏ul li

javascript - showOpenDialog() 刷新窗口

javascript - 一个接一个改变多个div的颜色

css - 我们可以在一个站点中使用两个 wordpress 菜单吗?

html - 让 <ul> 列表项完全填充 div

jquery - 遍历父 div 并使用匹配隐藏子类

css - 如何在内容加载之前保留 "flashing"的背景图像?

javascript - 读回时写入文本区域的文本会被更改 - CR 被删除

html - div 元素的模糊效果

html - CSS 规则应用于其父元素中唯一的元素