我正试图水平居中一个元素:jsfiddle
<div id="parent">
<div id="child">
</div>
在孩子身上,我现在有以下css,它不是中心:
transform: translateX(50%);
不幸的是,50%来自#child而不是父母。有没有办法使用变换来居中这个元素(我知道我可以使用它来居中,例如'left')?
以下是css的完整列表
#parent {
width: 300px
height: 100px;
background-color: black;
border: 1px solid grey;
}
#child {
height: 100px;
width: 20px;
-webkit-transform: translateX(50%);
background-color:red;
}
答案 0 :(得分:14)
您错过了父母的位置亲戚,孩子的绝对位置以及帮助抵消孩子的左侧和上方值。
DEMO http://jsfiddle.net/nA355/6/
#parent {
width: 300px;
height: 100px;
background-color: black;
border: 1px solid grey;
position: relative;
}
#child {
position: absolute;
height: 100px;
width: 20px;
left: 50%;
top: 50%;
-webkit-transform: translateX(-50%) translateY(-50%);
-moz-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
background-color:red;
}
答案 1 :(得分:1)
如果您不想设置子元素的宽度
#child {
display: flex;
justify-content: center;
}
答案 2 :(得分:0)
您可以在flex上显示它,并且证明内容居中。
简单:shadowed()
#parent {
display: flex;
justify-content: center;
width: 300px;
height: 100px;
background-color: black;
border: 1px solid grey;
}
#child {
height: 100px;
width: 20px;
background-color:red;
}
答案 3 :(得分:-2)
我使用这种技术在&#34; text-align:center;&#34;的情况下水平对齐某些元素。不能正常工作。
position:relative;
left:50%;
transform:translateX(-??em) /*or -??px or other unit of measure */
...&#34; ??&#34;必须根据元素的宽度进行调整。我知道它有点像hacky,但似乎在我迄今为止尝试过的屏幕上工作。
在你的小提琴中,应用这种技巧,我得到:
#parent {
width: 300px
height: 100px;
background-color: black;
border: 1px solid grey;
}
#child {
position:relative;
height: 100px;
width: 20px;
left:50%;
transform: translateX(-10px); /*or transform: translateX(-50%);*/
-webkit-transform: translateX(-10px);/*or -webkit-transform: translateX(-50%); */
-ms-transform: translateX(-10px);/*or -ms-transform: translateX(-50%);*/
background-color:red;
}
将child div水平居中。