Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 在列表项中使用垂直居中文本调整响应图像大小_Html_Css_Image_Responsive Design_Vertical Alignment - Fatal编程技术网

Html 在列表项中使用垂直居中文本调整响应图像大小

Html 在列表项中使用垂直居中文本调整响应图像大小,html,css,image,responsive-design,vertical-alignment,Html,Css,Image,Responsive Design,Vertical Alignment,我的目标是有3个并排的图像,其中包含垂直和水平居中的文本,并且图像具有响应性 根据我的理解,当在父元素中垂直居中时,父元素应该是绝对的,子元素应该是相对的,并被转换-在执行top:50%后为50% 我这里有一个密码笔: 但似乎有点不对劲。当我注释掉position:relative然后取消注释它时,它再也不会回到原来的状态 我试图保持图像的纵横比,但现在我甚至不明白为什么文本不会垂直居中。我的真实代码更像底部的UL HTML: 为什么不在包装器上使用display:table,在子对象上使用ta

我的目标是有3个并排的图像,其中包含垂直和水平居中的文本,并且图像具有响应性

根据我的理解,当在父元素中垂直居中时,父元素应该是绝对的,子元素应该是相对的,并被转换-在执行top:50%后为50%

我这里有一个密码笔:

但似乎有点不对劲。当我注释掉position:relative然后取消注释它时,它再也不会回到原来的状态

我试图保持图像的纵横比,但现在我甚至不明白为什么文本不会垂直居中。我的真实代码更像底部的UL

HTML:


为什么不在包装器上使用display:table,在子对象上使用table单元格呢。这是垂直对齐的最简单方法,不会造成实际表格的混乱。此外,如果单元格宽度设置为33.3%,它们将相互对齐,响应速度快,并且可以轻松覆盖,以便mobile将图像垂直放置。

为什么不使用显示:包装器上的表格和子级上的表格单元格。这是垂直对齐的最简单方法,不会造成实际表格的混乱。此外,如果单元格宽度设置为33.3%,它们将相互对齐,响应速度快,并且移动设备可以轻松覆盖它们以垂直放置图像。

您可以使用
#offersList li
元素上的flexbox并删除
上的
top
transform
属性。offers

#offersList li {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

您可以在
#offersList li
元素上使用flexbox,并删除
上的
top
transform
属性

#offersList li {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

主要问题是您的
translate
设置:要将其同时用于x轴和y轴,必须这样编写(在
ul li p
内),否则第二个
translate
将覆盖第一个:

  transform: translate(-50%, -50%);
此外,您还必须将
边距:0
添加到此规则中,以重置默认边距。因此,完整的规则是:

ul li p {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  display: inline-block;
  margin: 0;
  padding: 20px 25px;
  background: #2f3134;
  color: white;
}

使用此解决方案的代码笔:

主要问题是您的
翻译设置:要同时对x轴和y轴使用它,您必须这样写(在
ul li p
内),否则第二个
翻译将覆盖第一个:

  transform: translate(-50%, -50%);
此外,您还必须将
边距:0
添加到此规则中,以重置默认边距。因此,完整的规则是:

ul li p {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  display: inline-block;
  margin: 0;
  padding: 20px 25px;
  background: #2f3134;
  color: white;
}

使用此解决方案编写代码:

最好使用img响应类您想要这样的吗??事实上,当你们把div设置在side ul时,问题就来了。最好使用一个img响应类。你们想要这样的东西吗??实际上,在ul侧设置div是个问题