css3: translateX to center element horizontally

前端 未结 4 1967
闹比i
闹比i 2020-12-19 08:01

I\'m trying to center horizontally an element: jsfiddle

On the child I

相关标签:
4条回答
  • 2020-12-19 08:30

    If you don't want to set the width of child-element

    #child {
        display: flex;
        justify-content: center;
    }
    
    0 讨论(0)
  • 2020-12-19 08:37

    You were missing a position relative on your parent, position absolute on the child and the left and top values to help offset the child.

    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;
    }
    
    0 讨论(0)
  • 2020-12-19 08:47

    You can do it by display flex and justify-content is center.

    Example: http://jsfiddle.net/ugw9o3qp/1/

    #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;
    }
    
    0 讨论(0)
  • 2020-12-19 08:55

    I use this technique to horizontally align some elements in situations where "text-align:center;" does not work correctly.

     position:relative; 
     left:50%;
     transform:translateX(-??em) /*or -??px or other unit of measure */
    

    ... "??" has to be tweaked depending on how wide the element is. I know it's kinda hacky, but seems to work on the screens I've tried it on so far.

    In your fiddle, applying this technique, I get:

    #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;
    }
    

    which exactly centers the child div horizontally.

    0 讨论(0)
提交回复
热议问题