Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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
Javascript 需要将元素与其垂直对齐';基于窗口宽度缩放的s同级元素_Javascript_Jquery_Css_Vertical Alignment - Fatal编程技术网

Javascript 需要将元素与其垂直对齐';基于窗口宽度缩放的s同级元素

Javascript 需要将元素与其垂直对齐';基于窗口宽度缩放的s同级元素,javascript,jquery,css,vertical-alignment,Javascript,Jquery,Css,Vertical Alignment,我有一个元素,它总是需要与它的同级元素垂直对齐,不管窗口的宽度是多少。我希望能够用CSS实现这一点,但似乎需要用JavaScript实现。如果是这样的话,jQuery是可以的,它只需要支持现代浏览器(IE 11+) 关于这一点,棘手的部分是,它需要位于图像的50%,而不是整个容器 请注意:无法在div.icon的父级或同级上更改标记或样式 .container{ 位置:相对位置; } .幻灯片{ 浮动:左; 身高:100%; 最小高度:1px; } img{ 宽度:100%; 显示:块;

我有一个元素,它总是需要与它的同级元素垂直对齐,不管窗口的宽度是多少。我希望能够用CSS实现这一点,但似乎需要用JavaScript实现。如果是这样的话,jQuery是可以的,它只需要支持现代浏览器(IE 11+)

关于这一点,棘手的部分是,它需要位于图像的50%,而不是整个容器

请注意:无法在div.icon的父级或同级上更改标记或样式

.container{
位置:相对位置;
}
.幻灯片{
浮动:左;
身高:100%;
最小高度:1px;
}
img{
宽度:100%;
显示:块;
}
.图标{
高度:8vw;
宽度:8vw;
背景:蓝色;
位置:绝对位置;
最高:50%;
}
身体{
字体大小:100%;
}
.clearfix:之后{
内容:“;
显示:表格;
明确:两者皆有;
}

  • Lorem ipsum dolor sit amet,et hymenaeos elit orci,rutrum dolor magna Pelletsque ante euismod magna,sodales turpis quos级调味品。级别为整数。在非利古拉的情况下,使用佩朗斯克尼伯相位法,使用同侧相位法 埃吉斯塔斯·塞德奎斯。生命之路,前庭之路,前庭之路,拍卖人洛雷姆·厄罗斯,生命之路,平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等。这是一种猫科动物,它的生命来源于兽类。 欧盟成员国
  • 在整个普尔维纳山脉中,我们的智者利托拉·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克、多奈克·拉奥里特、阿库的乌兰科珀前厅和塞德。马蒂斯,坦普斯·奥姆尼斯 塔西提克拉斯a
一个选项用于从
顶部:50%减去元素高度的一半。

.icon {
  position: absolute;
  top: calc(50% - 4vw);
  height: 8vw;
  width: 8vw;
}
当然,也可以使用等于图元高度一半的负边距置换图元:

.icon {
  position: absolute;
  top: 50%;
  margin-top: -4vw;
  height: 8vw;
  width: 8vw;
}
根据注释,由于您使用的是,因此需要将
.icon
元素附加到滑块上,以便它相对于滑块绝对定位

您可以收听
init
事件,然后相应地附加图标:


如果我猜对了,你希望图标垂直居中,如果是这样,只需将顶部和底部设置为0,并添加边距:自动。请参阅下面的更新代码

.icon {
  height: 8vw;
  width: 8vw;
  background: blue;
  position: absolute;
  top: 0;
  bottom: 0;
  margin: auto;
}
您不需要jQuery

只需将.icon的样式替换为下一个:

.icon {
  height: 8vw;
  width: 8vw;
  position: absolute;
  top: 50%;
}
.icon:before {
   background: blue;
  content: '';
  height:100%;
  width:100%;
  position: relative;
  display: block;
  top: -50%;
}

calc不是交叉型,还有一个更简单的way@DenysKonoplin ... 这就是为什么我发布了两个选项。但是,所有现代浏览器都支持
calc()
:。。加上OP已经使用了视口百分比单位,所以我认为支持在这里不是问题。同意,再加上问题代码使用了
vw
,它具有类似的浏览器支持(即没有IE 8),谢谢您的帮助!我尝试了您发布在JSFIDLE上的代码,但它也在做同样的事情。问题是由于图像下方有其他内容。我需要图标始终位于图像的50%(并排除其下方的任何元素)@Cofey你能修改HTML吗?如果是这样的话,只需将
.icon
元素移动到
.slide
元素中,并将其相对定位->这是一个很好的流程图,显示了如何在各种情况下居中。此外,这种技术对于垂直居中的东西来说非常方便,但并不适用于所有情况。您是否自己添加了
.icon
.slide
中是否有除
img
之外的其他元素?滑块中是否有更多的图像,如果有,它们的高度是否不同?此外,为了将来使用,如果添加左:0和右:0,您将得到绝对居中的元素:)不幸的是,由于其他同级元素中显示的其他内容,这将不起作用。不幸的是,由于在不同的同级元素中出现了额外的内容,这将不起作用。hmmm这真的很奇怪,你能创建一个JSFIDLE链接来了解你的意思吗?给你。尝试更改HTML窗格的宽度,并注意正方形如何始终位于整个容器的中心,而不是图像的中心。只需将图标移动到幻灯片上,并添加相对于幻灯片的位置
.icon {
  height: 8vw;
  width: 8vw;
  position: absolute;
  top: 50%;
}
.icon:before {
   background: blue;
  content: '';
  height:100%;
  width:100%;
  position: relative;
  display: block;
  top: -50%;
}