2011-09-29 4 views
45

처음에는 알 수없는 너비의 요소, 특히 사용자가 제공 한 MathJax 방정식을가집니다. 요소의 너비가 내용에 맞는지, 정의 된 너비를 가지도록 요소를 인라인 블록으로 설정했습니다. 그러나 이는 기존의 센터링 방법을 방해합니다.인라인 블록 요소를 가운데에 배치 할 수 있습니까? 그렇다면 어떻게해야합니까?

.equationElement 
{ 
    display: inline-block; 
    margin-left: auto; 
    margin-right: auto; 
} 

을 그리고 해결책이 될 수 없다 : 즉, 다음은 작동하지 않습니다

.equationElement 
{ 
    display: block; 
    width: 100px; 
    margin-left: auto; 
    margin-right: auto; 
} 

을 나는 폭이 실제로 사전 방정식에 사용자가 클릭하면해야 무슨 생각이 없기 때문에, 전체 수식을 강조 표시해야하므로 너비를 0으로 설정할 수 없습니다. 누구나이 방정식을 중심으로하는 솔루션을 갖고 있습니까?

+0

를 등록하기 Brok 보인다 그 페이지에 Chrome과 함께. 자바 스크립트가 있거나없는 등록 버튼을 클릭해도 아무런 변화가 없습니다. – phihag

+0

매혹적인! Chrome을 사용하고 있으며 정상적으로 작동합니다. 어떤 계정 유형을 사용하고 있습니까? Google, Facebook, Twitter? –

+1

myopenid. 나는 자바 스크립트가 꺼져 있다면 구글 크롬에서 작동하지 않을 것이다. 버튼은 양식조차도 아니며 제출 버튼이 아닙니다. – phihag

답변

92

단순히 컨테이너에 text-align: center;을 설정하십시오.

Here's a demo.

+0

이것은 좋은 아이디어이며'display : block'을 설정하면 작동하지만 그 다음 요소는 컨테이너의 너비를 차지하거나 수동으로 너비를 설정해야하지만 너비는 어떻게 될지 모릅니다 . 요소가'inline-block'으로 설정되면 작동하지 않습니다. '인라인 블록 (inline-block) '이 필요한 이유는 그 폭이 그 내용에 대해 동적이기 때문입니다. 그래도 좋은 아이디어를 가져 주셔서 감사합니다. '인라인 블록 (inline-block) '에서 완벽하게 작동하도록 변경할 수 있다면. –

+1

@Vivek Viswanathan "요소가 인라인 블록으로 설정된 경우 작동하지 않습니다"라는 이유를 자세히 설명해 주시겠습니까? 데모 페이지에 [link] (http://phihag.de/2011/so/inline-block-center.html)를 추가했습니다. – phihag

+1

부모 요소에'text-align : center'가 설정되어 있기 때문에 작동하는 것처럼 보입니다. 그러나,'inline-block' 엘리먼트는 중앙에 놓일 수없는 형제를 가지고 있기 때문에 코드에서 그렇게 할 수 없습니다. 이것에 대한 당신의 도움에 다시 한번 감사드립니다. –

19

이 작업을 수행하는 또 다른 방법은 (또한 블록 요소 작동) :

.center-horizontal { 
    position: absolute; 
    left: 50%; 
    transform: translateX(-50%); 
} 

설명 : 왼쪽 : 당신이 하려는, 그래서 50 %, 부모를 포함하는의 중심에서를 시작 요소를 배치합니다을 해당 폭의 절반만큼 뒤쪽으로 당깁니다. translateX (-50 %)

주 1 : parent를 포함하는 위치를 position : relative로 설정하십시오.

주 2 상대 : 상위 절대적 안에 100 %의 폭과 높이, 0 패딩 마진 DIV두고 그것의 위치를 ​​부여에 위치하는 경우도

top:50%; 
transform: translateY(-50%); 
+0

이 하나는 굉장합니다! – metahamza

+4

절대 위치 지정이 필요없고'margin : 50 %; '를 사용할 수 있습니다. – Kevin

+1

절대 위치는 필요하지 않지만 위치가 정적 인 경우 왼쪽/오른쪽이 작동하지 않습니다 (기본 요소의 위치 지정). 'absolute'가 특별한 필요가 없다면,'relative'를 사용해야합니다. –

2

작은으로 센터링 수직에 대해 변형 될 수있다 늦었지만 Ivek의 대답과 비슷한, 그렇게, leftmargin-left를 사용하는 대신하여 position 선언을 사용하여 피할 수 있습니다 : 그런데

margin-left: 50%; transform: translateX(-50%);

관련 문제