使用CSS在DIV上居中DIV

时间:2014-07-10 09:47:08

标签: html css button center

我正在尝试在CSS中创建一个非常简单的按钮,但我无法让按钮中的箭头位于我的圆圈中心。

我用过:

top: 50%
left: 50%

尝试将我的箭头div放在我的圆圈div中心,但当然这只是我的箭头div的左上角,而不是中心位置。

如何将div完美地放在div中?理想情况下,我喜欢这样的解决方案,其中两个div的宽度和高度无关紧要,因此我可以在以后轻松更改它们。

我目前的代码: http://jsfiddle.net/zhWGx/

7 个答案:

答案 0 :(得分:2)

尝试这一个,制作三角形position:absolute,然后在顶部,左下角,右边为0.将其设为margin:auto。然后你就完成了。

.triangle
{
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 5px 0 5px 5px;
    border-color: transparent transparent transparent red;

    position: absolute;
    top: 0;
    left: 0;
    right:0;
    bottom:0;
    margin:auto;
}

链接:http://jsfiddle.net/Vigiliance/zhWGx/4/

P.S。

当你使用这种方法时,你会诅咒IE。

答案 1 :(得分:2)

如果您希望能够使具有未知尺寸的元素居中,则可以对该元素使用转换(translate)。

transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);

http://jsfiddle.net/zhWGx/23/

请注意,这仅适用于现代浏览器。

答案 2 :(得分:1)

如果您的圈子大小始终相同,则可以尝试此操作:http://jsfiddle.net/zhWGx/1/

.triangle
{
width: 0;
height: 0;
border-style: solid;
border-width: 10px 0 10px 17.3px;
border-color: transparent transparent transparent #ffffff;

position: relative;
display: block;
margin: 10px auto ;
top: 10px;

}

答案 3 :(得分:1)

这应该解决它

  .triangle
    {
        width: 0;
        height: 0;
        border-style: solid;
        border-width: 10px 0 10px 17.3px;
        border-color: transparent transparent transparent #ffffff;
        background:linear-gradient(transparent, transparent, transparent, #FFFFFF);
        position: relative;
        margin-left: 15px;
        top:24%

    }

答案 4 :(得分:0)

http://jsfiddle.net/Oliboy50/zhWGx/14/

如果您想以您想要的方式调整三角形位置:

.triangle
{
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 10px 0 10px 17.3px;
    border-color: transparent transparent transparent #ffffff;

    position: absolute; /* absolute (the parent is relative) */
    top: 50%;
    left: 50%;
    margin-top: -10px; /* triangle height/2 */
    margin-left: -6px; /* triangle width/2 (6.85px) or what you want */
}

答案 5 :(得分:0)

您可以尝试:

.triangle {
width: 0;
height: 0;
border-style: solid;
border-width: 10px 0 10px 17.3px;
border-color: transparent transparent transparent #ffffff;
position: relative;
top: 25%;
left: 40%;
}

答案 6 :(得分:0)

如果您的div中只有文本,您可以这样做:

.inside-div {
  display: inline: // for IE
  display: inline-block;
  text-align: center;
}

否则:

.parent-div {
  position: relative;
}
.inside-div {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 500px;
  margin-left: -250px;
  height: 500px;
  margin-top: -250px;
}

http://jsfiddle.net/zhWGx/27/这样的东西,但在这种情况下你应该计算三角形的几何位置而不是设定边距。