div 요소를 올바르게 정렬하려면 어떻게합니까?


350

내 html 문서의 본문은 3 가지 요소, 단추, 양식 및 캔버스로 구성됩니다. 버튼과 양식을 오른쪽 정렬하고 캔버스를 왼쪽 정렬 상태로 유지하고 싶습니다. 문제는 처음 두 요소를 정렬하려고 할 때 더 이상 서로를 따르지 않고 대신 가로로 옆에 있습니까?, 여기까지 코드가 있습니다. 오른쪽에있는 버튼 바로 다음에 양식을 따르기를 원합니다. 사이에 공간이 없습니다.

#cTask {
  background-color: lightgreen;
}

#button {
  position: relative;
  float: right;
}

#addEventForm {
  position: relative;
  float: right;
  border: 2px solid #003B62;
  font-family: verdana;
  background-color: #B5CFE0;
  padding-left: 10px;
}
<!DOCTYPE html>
<html lang="en">
<head>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
  <script type="text/javascript" src="timeline.js"></script>
  <link rel="stylesheet" href="master.css" type="text/css" media="screen" />
</head>

<body bgcolor="000" TEXT="FFFFFF">
  <div id="button">
    <button onclick="showForm()" type="button" id="cTask">
        Create Task
    </button>
  </div>
  <div id="addEventForm">
    <form>
      <p><label>Customer name: <input></label></p>
      <p><label>Telephone: <input type=tel></label></p>
      <p><label>E-mail address: <input type=email></label></p>
    </form>
  </div>
  <div>
    <canvas id="myBoard" width="1000" height="600">
      <p>Your browser doesn't support canvas.</p>
    </canvas>
  </div>
</body>
</html>

답변:


336

양식과 버튼을 모두 포함하는 div를 만든 다음을 설정하여 div를 오른쪽으로 띄울 수 float: right;있습니다.


플로트를 사용한다고 생각하지 않았습니다. 나는 시도 margin-left: auto;했지만 그게 효과가 없었기 때문에 오른쪽에 맞추려고하는 요소가 상대적이기 때문에 놀랐습니다.
DFSFOT

461

float는 괜찮지 만 ie6 & 7에는 문제가 있습니다.

margin-left:auto; margin-right:0;내부 div에 사용하고 싶습니다 .


6
@ShellNinja 왜? 나는 0유효하다는 것을 알고 있지만 0px도 마찬가지입니다 ... 우리가 무언가를 배우기 위해 요점을 주장하십시오.
pstanton

29
단위를 나가면 브라우저가 특정 계산을 건너 뛰어 성능을 향상시킵니다. 만약 0이라면 왜 단위를 기반으로 레이아웃을 계산하는 자원을 낭비합니까? 단위에 관계없이 0은 0입니다 ...이 논리는 지금까지 브라우저에 내장되어 있다고 생각할 것입니다. 링크
ShellNinja

7
동의 할 수는 없지만 성능에 많은 영향을 미칩니다. 편집하다.
pstanton

24
이 작업을 수행 할 수 없으며 div가 여전히 왼쪽으로 정렬됩니다. 바이올린이나 html / css의 (더 많은) 줄을 제공 할 수 있습니까?
Griddo

21
있는지 확인 요소는있다display: block;
derek_duncan

202

오래된 답변. 업데이트 : flexbox를 사용하면 모든 브라우저에서 거의 작동합니다.

<div style="display: flex; justify-content: flex-end">
  <div>I'm on the right</div>
</div>

그리고 더 간단하게 더 멋지게 만들 수 있습니다.

<div style="display: flex; justify-content: space-around">
  <div>Left</div>
  <div>Right</div>
</div>

그리고 더 환상적인 :

<div style="display: flex; justify-content: space-around">
   <div>Left</div>
   <div>Middle</div>
  <div>Right</div>
</div>


4
작동하지만 화면이 쌓이지 않고 작아지면 화면이 좁아집니다
jean d' arme

6
정의한 중단 점에서 플렉스 방향을 행에서 열로 변경하려면 미디어 쿼리를 추가해야합니다. 이 예제에서 정당성있는 내용을 변경하거나 제거하고 싶을 것입니다. 그렇지 않으면 왼쪽과 오른쪽이 아닌 위아래로 늘어납니다.
Michael Bushe

이것은 나를 위해 일했습니다. 이전 답변은 그렇지 않았습니다. "빛나는"사용하기.
Roger

30

이 질문에 대한 다른 답변 float:right은 부모 div 외부로 갈 수 있기 때문에 좋지 않습니다 (오버플로 : 부모에게는 숨겨져 때로는 도움이 될 수 있습니다 margin-left: auto, margin-right: 0).

text-align: right요소와 부모가 모두 inline또는 일 때 이것이 작동한다고 가정하고 특정 요소의 경우 작동 한다는 것을 알았습니다 inline-block.

참고 : text-alignCSS 속성은 텍스트와 같은 인라인 내용이 부모 블록 요소에서 어떻게 정렬되는지를 설명합니다. text-align블록 요소 자체의 정렬을 제어하지 않고 인라인 컨텐츠 만 제어합니다.

예를 들면 :

<div style="display: block; width: 80%; min-width: 400px; background-color: #caa;">
    <div style="display: block; width: 100%">
        I'm parent
    </div>
    <div style="display: inline-block; text-align: right; width: 100%">
        Caption for parent
    </div>
</div>

다음은 JS Fiddle 입니다.



15

상위 div의 오른쪽 끝에 나란히 정렬하려는 여러 div가있는 경우 상위 div에서 설정 text-align: right;하십시오.


14

flexboxwith flex-grow를 사용 하여 마지막 요소를 오른쪽으로 밉니다.

<div style="display: flex;">
  <div style="flex-grow: 1;">Left</div>
  <div>Right</div>
</div>

1
나는 개인적으로 이것이 2020 년에 대한 정답이라고 생각합니다. : P
Mike Kellogg

2

당신은 IE9을 지원하고이 문제를 해결하기 위해 인 flexbox를 사용 할 수 있습니다 아래에없는 경우 : codepen

IE10 및 11 ( flexbox support ) 에는 몇 가지 버그가 있지만이 예제에는 없습니다.

로 컨테이너를 감싸서 <button>와를 세로로 정렬 할 수 있습니다 . 요소의 소스 순서는 위에서 아래로 표시되는 순서가되므로 순서를 다시 지정했습니다.<form>flex-direction: column

그런 다음 양식 & 버튼 컨테이너를로 컨테이너에 싸서 캔버스와 수평으로 정렬 할 수 있습니다 flex-direction: row. 다시 요소의 소스 순서는 왼쪽에서 오른쪽으로 표시되는 순서가되므로 다시 정렬했습니다.

또한,이 모든 제거하는 것이 필요 position하고 float질문에 링크 된 코드에서 스타일 규칙을.

다음은 위에 링크 된 코드 펜에서 HTML 버전을 정리 한 것입니다.

<div id="mainContainer">
  <div>
    <canvas></canvas>
  </div>
  <div id="formContainer">
    <div id="addEventForm"> 
      <form></form>
    </div>
    <div id="button">
      <button></button>
    </div>
  </div>
</div>

그리고 여기 관련 CSS가 있습니다

#mainContainer {
  display: flex;
  flex-direction: row;
} 

#formContainer {
  display: flex;
  flex-direction: column;
}

1

간단한 답변은 다음과 같습니다.

<div style="text-align: right;">
    anything:
    <select id="locality-dropdown" name="locality" class="cls" style="width: 200px; height: 28px; overflow:auto;">
    </select>
</div>

0

padding-left : 60 % (예를 들어)를 사용하여 콘텐츠를 오른쪽에 맞추고 동시에 모든 컨테이너에서 콘텐츠를 감싸서 반응 형 컨테이너 (필자는 navbar가 필요함)로 모든 예제에서 작동하도록 할 수 있습니다.


0

부트 스트랩을 사용하는 경우 :

<div class="pull-right"></div>

나는 당신이 의미하는 것 같아요 <div class="text-right"></div>.
Alex Barker

1
anil이 잘못되지 않은 경우 클래스 "pull-right"는 "float : right;"가됩니다. (Bootstrap 3.4.1로 테스트)
Fabian Horlacher

-13

나는 이것이 오래된 게시물이라는 것을 알고 있지만 바로 사용할 수는 없습니다 <div id=xyz align="right">.

왼쪽, 가운데, 오른쪽으로 바꿉니다.

내 사이트에서 일했습니다 :)


21
HTML 속성을 사용하여 페이지를 형식화하지 마십시오. 이것이 CSS를위한 것입니다. 실제로 align속성은 더 이상 사용되지 않습니다 .
Hanna

4
... 따라서 오래된 방법이 더 이상 작동하지 않기 때문에 이와 같은 질문의 이유와 대답의 필요성.
vapcguy

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