#image-list>.image-container>p中使用Left属性似乎会将ID为#image-list的div中的<p>元素居中,而不是将其父元素居中.我不明白我做错了什么.

btn.onclick = e => {
  list = document.getElementById("image-list");
  item = list.children[0];
  item = item.cloneNode(true);
  document.getElementById("image-list").appendChild(item);
}
#image-list {
  display: flex;
  gap: 4vmin;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(0%, -50%);
}

#image-list>.image-container>.image {
  width: 40vmin;
  height: 56vmin;
  object-fit: cover;
  object-position: 100% center;
}

#image-list>.image-container>p {
  position: absolute;
  color: white;
  top: 25%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: block;
  font-family: Times New Roman;
  font-size: 2rem;
  -webkit-text-stroke: 0.5px black;
}

#image-list>.image-container {
  text-align: center;
  position:relative;
}
<div id="image-list">
  <div class="image-container">
    <p>hello world</p>
    <img class="image" src="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/800px-Image_created_with_a_mobile_phone.png" draggable="false">
  </div>
</div>
<button id="btn">add image</button>

推荐答案

要使<p>元素在其父元素(即.image-container)内居中,可以将position: relative.image-container相加,并在#image-list > .image-container > p上设置left: 50%transform: translateX(-50%).

试一下这个例子:

#image-list>.image-container {
  text-align: center;
  position: relative;
}

#image-list>.image-container>p {
  position: absolute;
  color: white;
  top: 25%;
  left: 50%;
  transform: translateX(-50%);
  display: block;
  font-family: Times New Roman;
  font-size: 2rem;
  -webkit-text-stroke: 0.5px black;
}

Html相关问答推荐

角|将动态html属性添加到子组件

HTML图像无法正确放大和缩小规模

为什么在这种情况下是弹性基础:自动不解决内容的大小?

创建具有圆锥渐变的水平CSS聚光灯

如何找到FontAwese图标的Unicode值?

如何在css中将包含多行文本的多个p-tag放在一起(并排)?

如何防止第二列中的内容影响第一列中内容的位置?

页脚与主要内容重叠

粘滞的导航栏延伸到超过页边距的右侧

如何创建嵌套的动态表单元素

为什么我的图像在悬停时与固定顶部栏重叠?

jQuery 索引返回不正确的结果

为 HTML5 文本字段设置最后六位正则表达式模式

一旦大于最大限制,JQuery 取消 Select 复选框

如何在 css 和 html 中创建花状 struct

透明渐变凹矩形

在包含 html 标签的字符串的子字符串中应用不同的样式

左右图像,响应页面大小并居中

下拉菜单项在页面加载时显示,需要隐藏直到悬停

我可以将两个元素之间的所有空间都放在弹性框或网格中吗?