【问题标题】:Trying to use vertical-align middle on absolute positioned elelement尝试在绝对定位元素上使用垂直对齐中间
【发布时间】:2013-04-28 03:03:17
【问题描述】:

我的滑块上的下一个和上一个箭头出现问题。滑块用于随窗口收缩和扩展。除 safari 外,所有浏览器中的一切看起来都很棒。按钮位于滑块的顶部而不是中间。

我已经尝试了我能想到的一切来解决这个问题。有什么想法吗?

这里是网站http://upperdeck.dev.warp9inc.com

这是按钮的代码。

.slideshow-wrapper .backward {
    position:absolute;
    left: 10px;
    margin-top:10%;
    background:url(../../images/infortis/super-slideshow/slideshow-arrows.png) 0 0 no-repeat;
    width:50px;
    height:50px;
}

.slideshow-wrapper .forward {
    position:absolute;
    right:10px;
    margin-top:10%;
    background:url(../../images/infortis/super-slideshow/slideshow-arrows.png) -50px 0 no-repeat;
    width:50px;
    height:50px;
}

谢谢!

【问题讨论】:

  • 问题是绝对定位的元素是块级元素,没有任何例外 - 而vertical-align 仅适用于内联格式上下文和表格单元格中的元素
  • 好的,谢谢。那正是我所想。我最初使用“margin-top:10%”,它在除 safari 之外的所有浏览器上都运行良好。有什么想法吗?
  • 为什么不用top 而不是margin-top?此外,在 chrome 中检查了您的 .slideshow-wrapper 之后,它似乎并没有在所有内容的滑块上传播,我认为您需要解决这个问题,请尝试 min-height: 450px;
  • 谢谢!但是,我无法设置“最小高度”b/c,它下面的内容将保持固定。我也试过'top' :) 滑块图像是为了在调整浏览器大小时调整大小。

标签: css css-position vertical-alignment


【解决方案1】:

对于绝对定位的元素,可以这样居中

top: 50%;
margin-top: -25px

这也适用于水平居中绝对定位的项目,即使父级动态改变大小也可以工作。

您将 top 和/或 left 设置为 50%,然后将 margin-top/margin-left 设置为您要居中的项目宽度的负 1/2。所以,你的 CSS 应该是这样的:

/* Make sure .slideshow-wrapper has position: relative; */  
.slideshow-wrapper .backward {
        position:absolute;
        left: 10px;
        top: 50%;
        margin-top: -25px;
        background:url(../../images/infortis/super-slideshow/slideshow-arrows.png) 0 0 no-repeat;
        width:50px;
        height:50px;
    }

    .slideshow-wrapper .forward {
        position:absolute;
        right:10px;
        top: 50%;
        margin-top: -25px;
        background:url(../../images/infortis/super-slideshow/slideshow-arrows.png) -50px 0 no-repeat;
        width:50px;
        height:50px;
    }

这样做是告诉 div 绝对定位在父元素的 50% 处,但由于它使用顶部或左侧边缘,而不是元素的中间,它不会完全居中。因此,您需要将位置向左或顶部偏移元素宽度或高度的一半,以便元素的中间位置落在其父元素的 50% 处。

【讨论】:

  • 感谢您的帮助。请在 Safari 中查看此内容。似乎它仍然不想保持居中upperdeck.dev.warp9inc.com
  • 我现在无法访问 Safari,因此无法查看。但是,看起来您遇到的问题是因为.slideshow-wrapper 上没有明确设置高度。如果不使用 Javascript,我不确定是否有可靠的方法将父级没有明确高度的 div 垂直居中
  • 好的,谢谢!我会调查一下,看看我能做些什么并更新你:)
猜你喜欢
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
  • 2017-03-23
  • 2013-06-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 2014-11-21
相关资源
最近更新 更多