将项目居中,位置:相对

发布于 2024-11-18 21:28:38 字数 480 浏览 6 评论 0原文

我有一个菜单,将鼠标悬停在绝对定位的 div 上时出现。所有菜单项都必须相对定位,因为绝对 div 会在一页上出现多次,并且在一个实例中会以多种尺寸出现。

当我不知道父 div 的大小时,如何使用 position:relative 垂直和水平居中多个项目?

我知道负边距的 position:absolute 技巧,但这种情况需要不同的东西。

这是代码:

.OuterCase { 
  position  : absolute; 
  width     : 100%;  
  height    : 100%; 
  text-align: center;
}

.InnerItem  { 
   width  : 38px;
   height : 38px;
   display: inline-block;
}

我已经让它水平居中项目;它的垂直度有点难以捉摸。

I've got a menu that appears on hover over an absolutely positioned div. All of the menu items have to be relatively positioned because the absolutely div will appear multiple times on a page and will appear in multiple sizes in one instance.

How would I center multiple items with position: relative both vertically and horizontally when I won't know the the size of the parent div?

I know the position: absolute trick with negative margins, but this situation calls for something different.

Here's the code:

.OuterCase { 
  position  : absolute; 
  width     : 100%;  
  height    : 100%; 
  text-align: center;
}

.InnerItem  { 
   width  : 38px;
   height : 38px;
   display: inline-block;
}

I've got it to center the items horizontally; it's getting the vertical that's being a bit elusive.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

饮惑 2024-11-25 21:28:38

更简单:

position: relative; 
left: 50%;
transform: translateX(-50%);

您现在位于父元素的中心。你也可以垂直地这样做。

Much simpler:

position: relative; 
left: 50%;
transform: translateX(-50%);

You are now centered in your parent element. You can do that vertically too.

梦冥 2024-11-25 21:28:38

或者,您也可以使用 CSS3 灵活盒子模型
这是创建灵活布局的好方法,也可以应用于中心内容,如下所示:

#parent {
    -webkit-box-align:center;
    -webkit-box-pack:center;
    display:-webkit-box;
}

Alternatively, you may also use the CSS3 Flexible Box Model.
It's a great way to create flexible layouts that can also be applied to center content like so:

#parent {
    -webkit-box-align:center;
    -webkit-box-pack:center;
    display:-webkit-box;
}
最美不过初阳 2024-11-25 21:28:38

如果您有一个相对(或以其他方式)定位的 div,您可以使用 margin:auto 将其中的内容居中

垂直居中有点复杂,但也是可能的。

If you have a relatively- (or otherwise-) positioned div you can center something inside it with margin:auto

Vertical centering is a bit tricker, but possible.

哽咽笑 2024-11-25 21:28:38

您可以使用 calc 来相对于中心定位元素。例如,如果您想将元素200px定位在距离中心右侧..您可以这样做:

#your_element{
    position:absolute;
    left: calc(50% + 200px);
}

不要忘记这一点

当您使用符号+- 符号和数字之间必须有一个空格,但是当您使用符号 */ 时,不需要空格。

You can use calc to position element relative to center. For example if you want to position element 200px right from the center .. you can do this :

#your_element{
    position:absolute;
    left: calc(50% + 200px);
}

Dont forget this

When you use signs + and - you must have one blank space between sign and number, but when you use signs * and / there is no need for blank space.

ら栖息 2024-11-25 21:28:38

另一种选择是创建一个额外的包装器以使元素垂直居中。

#container{
  border:solid 1px #33aaff;
  width:200px;
  height:200px;
}

#helper{
  position:relative;
  height:50px;
  top:50%;
  border:dotted 1px #ff55aa;
}

#centered{
  position:relative;
  height:50px;
  top:-50%;
  border:solid 1px #ff55aa;
}
<div id="container">
  <div id="helper">
    <div id="centered"></div>
  </div>
<div>

Another option is to create an extra wrapper to center the element vertically.

#container{
  border:solid 1px #33aaff;
  width:200px;
  height:200px;
}

#helper{
  position:relative;
  height:50px;
  top:50%;
  border:dotted 1px #ff55aa;
}

#centered{
  position:relative;
  height:50px;
  top:-50%;
  border:solid 1px #ff55aa;
}
<div id="container">
  <div id="helper">
    <div id="centered"></div>
  </div>
<div>

带上头具痛哭 2024-11-25 21:28:38
.parent {
    width: 100%;
    height: 30vh;    
    display: flex;
    justify-content: center;
    align-items: center;
}
.child {
    position: relative;
    height: 20vh;
    display: flex;
    justify-content: center;
    align-items: center;
  }

只要确保父母的身高大于孩子的身高即可。

.parent {
    width: 100%;
    height: 30vh;    
    display: flex;
    justify-content: center;
    align-items: center;
}
.child {
    position: relative;
    height: 20vh;
    display: flex;
    justify-content: center;
    align-items: center;
  }

Just make sure the height of the parent is greater than the height of the child.

南城旧梦 2024-11-25 21:28:38

我在这里还没有看到另一个简单的解决方案:

.parent{
    display: flex;
    flex-direction: column;
    height: 40vh;
    width: 40vw;
}

.child{
    margin:auto;
}

An other simple solution I did not yet see here:

.parent{
    display: flex;
    flex-direction: column;
    height: 40vh;
    width: 40vw;
}

.child{
    margin:auto;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文