2017-02-08 3 views
2

Почему центрирование с преобразованием трансформируется и левое 50% центра отлично (с относительным относительным положением), но не правильно 50%?CSS-центрирование с преобразованием

Рабочий пример:

span[class^="icon"] { 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    transform: translate(-50%, -50%); 
} 

Пример, который не центр:

span[class^="icon"] { 
    position: absolute; 
    top: 50%; 
    right: 50%; 
    transform: translate(-50%, -50%); 
} 

ответ

1

Поскольку translateX(-50%) движется что-то назад к оставил 50% (из-за - отрицательное значение), которое означает, что он пары с left: 50%;, чтобы центрировать что-то.

Если вы хотите использовать right: 50%;, то используйте это с translateX(50%) в центр.

* {margin:0;} 
 
span { 
 
    position: absolute; 
 
    top: 50%; right: 50%; 
 
    transform: translate(50%,-50%); 
 
    background: black; 
 
    color: white; 
 
} 
 

 
body:after, body:before { 
 
    content: ''; 
 
    position: absolute; 
 
    background: red; 
 
} 
 

 
body:after { 
 
    top: 50%; 
 
    left: 0; right: 0; 
 
    height: 1px; 
 
} 
 
body:before { 
 
    left: 50%; 
 
    top: 0; bottom: 0; 
 
    width: 1px; 
 
}
<span>center me</span>

+0

также зависит от 'direction' РТЛ или LTR – Banzay

+0

@Banzay не стесняйтесь оставить свой ответ уточнение роли' direction' на этом типе позиционирования. При использовании 'left' или' right' не имеет значения, что такое «направление» документа, поскольку вы указываете «right» или «left» http://codepen.io/anon/pen/PWdrBG –

+0

это был больше вопрос, чем примечание. спасибо :) – Banzay

Смежные вопросы