div 내에서 버튼을 가운데에 배치하는 방법은 무엇입니까?


220

너비가 100 % 인 div가 있습니다.

버튼을 중앙에 배치하고 싶습니다. 어떻게해야합니까?

<div style="width:100%; height:100%; border: 1px solid">
  <button type="button">hello</button>
</div>


버튼에 사용하는 코드는 무엇입니까?
David Nguyen

2
나는 그가 수직 및 수평 센터링을 원한다고 생각합니다. 지금까지 어떤 해결책도 이것을 달성하지 못했습니다. CSS는 수직 센터링에 좋지 않습니다 = (.
mrtsherman

flexbox가이 답변을 2014 년에 쓸모 없게 만든다고 말하겠습니다. 예, 베이비!
foreyez

답변:


352

업데이트 된 답변

적극적인 답변임을 알았 기 때문에 업데이트했지만 Flexbox가 올바른 접근 방식입니다.

라이브 데모

수직 및 수평 정렬.

#wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
}

가로 만 (기본 플렉스 축이 가로 인 경우 기본값)

#wrapper {
  display: flex;
  justify-content: center;
}

고정 폭을 사용하고 flexbox를 사용하지 않는 원본 답변

원래 포스터가 고정 된 너비 및 높이의 버튼에 대해 세로 및 가운데 정렬을 쉽게하려면 다음을 시도하십시오.

라이브 데모

CSS

button{
    height:20px; 
    width:100px; 
    margin: -20px -50px; 
    position:relative;
    top:50%; 
    left:50%;
}

수평 정렬의 경우

button{
    margin: 0 auto;
}

또는

div{
    text-align:center;
}

21
-1 이것은 끔찍하다. 기본적으로 너비를 100 %로 설정 한 다음 여백을 -50으로 설정합니다. 그러나 버튼이 포함 요소 위로 올라가고 크기 조정과 잘 작동하지 않는 등의 다른 문제가 발생합니다.
CodyBugstein

3
적어도 귀하의 다운 투표 @Imray를 설명해 주셔서 감사합니다. 또한 가변 너비가 아니라 너비와 높이가 고정되어 있습니다. 따라서 크기 조정은 중요하지 않습니다. "기본적으로"너비를 100 %가 아닌 100px로 설정 하고 여백을 -50px로 반으로 설정했습니다. 이것은 센터링을위한 매우 표준적인 방법입니다. 나는 당신의 답변을 기대합니다 :)
Loktar

1
당신의 welcs (가혹한 유감, 유머 감각이 기쁘다) 100px을 의미했습니다. 난 당신이 "고정"쓴 실현하지 못했지만, 여전히 나는이 대답은 대부분의 경우 좋지 않을 것이라고 생각
CodyBugstein

109

당신은 단지 만들 수 있습니다 :

<div style="text-align: center; border: 1px solid">
  <input type="button" value="button">
</div>

또는 대신 다음과 같이 할 수 있습니다.

<div style="border: 1px solid">
  <input type="button" value="button" style="display: block; margin: 0 auto;">
</div>

첫 번째는 div 내부의 모든 것을 가운데 정렬합니다. 다른 하나는 버튼 만 가운데 정렬합니다.


28

et voila :

button {
  width: 100px; // whatever your button's width
  margin: 0 auto; // auto left/right margins
  display: block;
}

업데이트 : OP가 수평 및 수직 중심을 찾고 있다면 이 대답 은 고정 너비 / 높이 요소에 대해 수행합니다.


11
"display : block;"이 필요할 수도 있습니다.
SoluableNonagon

1
@SoluableNonagon 그게 다야! "display : block"은 "margin : 0 auto"로 트릭을 수행합니다.
Tomas Lukac

8

여백 : 0 자동; 수평 중심에 대해서만 정답입니다. jquery를 사용하여 이와 같은 방식으로 작동하는 두 가지 방법을 가운데에 맞추려면 다음을 수행하십시오.

var cenBtn = function() {
   var W = $(window).width();
   var H = $(window).height();
   var BtnW = insert button width;
   var BtnH = insert button height;
   var LeftOff = (W / 2) - (BtnW / 2);
   var TopOff = (H / 2) - (BtnH /2);
       $("#buttonID").css({left: LeftOff, top: TopOff});
};

$(window).bind("load, resize", cenBtn);

업데이트 ... 5 년 후 , 부모 DIV 요소에서 flexbox를 사용하여 버튼을 수평 및 수직으로 쉽게 중앙에 배치 할 수 있습니다.

최상의 지원을 위해 모든 브라우저 접두사 포함

div {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align : center;
  -moz-box-align    : center;
  -ms-flex-align    : center;
  -webkit-align-items : center;
  align-items : center ;
  justify-content : center;
  -webkit-justify-content : center;
  -webkit-box-pack : center;
  -moz-box-pack : center;
  -ms-flex-pack : center;
}


2
jQuery? 진심이야?
Pranesh Ravi

3
@PraneshRavi-2011 년 CSS에서 세로로 중심을 잡을 수있는 옵션이 많지 않았으므로 요소의 정확한 높이와 너비를 모르고 여백을 빼면 자바 스크립트가 드물지 않았습니다.
adeneo

항상 flex를 사용하여 요소를 세로 및 가로로 가운데에 맞출 수 있습니다.
Pranesh Ravi

6
@PraneshRavi-네, 가능합니다. flexbox는이 질문에 대한 훌륭한 답변입니다. 추가 할 것이지만 2011 년에는 flexbox가 없었습니다.
adeneo

@JGallardo - 난 당신이 다른 답변이 아니라 수평 버튼을 중심으로하려고하지만, 수직으로뿐만 아니라,하고있는 부분을 놓친 생각 만 CSS와이를위한 정말 좋은 옵션이 있었다 9 년 ago
adeneo


7

flexbox 사용

.Center {
  display: flex;
  align-items: center;
  justify-content: center;
}

그런 다음 버튼에 수업을 추가하십시오.

<button class="Center">Demo</button> 

6

당신은 여기에 간단하게 가져 가야합니다.

먼저 텍스트 또는 버튼의 초기 위치가 있습니다.

<div style="background-color:green; height:200px; width:400px; margin:0 0 0 35%;">
   <h2> Simple Text </h2>
      <div>
           <button> Simple Button </button>
      </div>
</div>

이 CSS 코드 라인을 h2 태그 또는 버튼 태그보유한 div 태그에 추가하여

style : "text-align : center;"

Finaly 결과 코드는 다음과 같습니다.

<div style="background-color:green; height:200px; width:400px; margin:0 0 0 35%;">
<h2 style="text-align:center;"> Simple Text </h2> <!-- <<--- here the changes -->

      <div style="text-align:center">        <!-- <<--- here the changes -->
                <button> Simple Button </button>
      </div>
</div>

여기에 이미지 설명을 입력하십시오


당신은
환영


2

너비가 <button type = "button">가로 세로로 가로로 가운데에 가운데로 정렬 하려면 다음 <div>과 같이하십시오.

  1. text-align: center;줄 바꿈으로 설정 <div>: 이것은 <div>(또는 오히려 창)의 크기를 조정할 때마다 버튼의 중앙에 위치합니다
  2. 수직 정렬의 margin: valuepx;경우 버튼 을 설정해야 합니다. 이것은 계산 방법에 대한 규칙입니다 valuepx.

    valuepx = (wrappingDIVheight - buttonHeight)/2

다음은 JS Bin 데모 입니다.


2

대부분의 경우에 적용되는 매우 간단한 대답은 여백을 0 auto설정하고 디스플레이를로 설정하는 것 block입니다. CodePen 데모에서 버튼의 중앙 위치를 확인할 수 있습니다

여기에 이미지 설명을 입력하십시오


1

가장 쉬운 것은 "div"로 입력하면 "margin : 0 auto"를 주지만 중앙에 오게하려면 너비를 지정해야합니다.

  Div{
   Margin: 0 auto ;
   Width: 100px ;
  }

1

부모 요소 크기에 관계없이 버튼을 세로 및 가로로 가운데에 배치하는 반응 형 CSS 옵션 (명확성과 분리 문제를 위해 데이터 속성 후크 사용) :

HTML

<div data-element="card">
  <div data-container="button"><button>CTA...</button></div>
</div>

CSS

[data-container="button"] {
  position: absolute;
  top: 50%;
  text-align: center;
  width: 100%;
}

피들 : https://jsfiddle.net/crrollyson/zebo1z8f/


1

div에서 버튼을 중앙에 배치하는 반응 형 방법 :

<div 
    style="display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 2rem;">
    <button type="button" style="height: 10%; width: 20%;">hello</button>
</div>

1
이 답변은 인라인 스타일을 제거하고 데모를 보여줌으로써 개선 될 수 있습니다.
JGallardo

1

div가 #div이고 button이 #button이라고 가정합니다.

#div {
    display: table-cell;
    width: 100%;
    height: 100%;
    text-align: center;
    vertical-align: center;
}

#button {}

그런 다음 평소와 같이 버튼을 div에 중첩시킵니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.