2017-11-21 1 views
0

총 4 개의 HTML 요소를 가로 100 %로 나란히 놓고 싶습니다.html 요소를 나란히 쌓기

<input type="number" name="height" placeholder="weight"> 
<span>kg</span> 
<input type="number" name="weight" placeholder="height"> 
<span>cm</span> 

하지만 스택 오버플로가 작동하지 않는 경우가 많습니다. 나는

see the middle w(eight) and h(height)

+2

귀하의 질문에 정확성이 부족합니다. 컨텍스트, 코드 등을 추가하여 편집 해보십시오. [최소의 완전하고 검증 가능한 예제를 만드는 방법] (https://stackoverflow.com/help/mcve) – Zenoo

+0

그 페이지? 관계없는 공간을 요소 사이로 이동 하시겠습니까? 스트레칭에 맞추어야할까요? –

답변

1

inputspan 요소 "인라인"요소이다 ... 이런 식으로 뭔가를 얻을. 너비는 내용만큼 넓습니다 (또는 input의 경우 너비가 넓다고 말한 경우). 당신은 이미 그것들을 나란히 배치하고 있습니다, 그러나 그것들을 합계로 사용 가능한 너비의 100 %를 차지할 수 있도록 width을 설정할 수있는 "블록"요소처럼 취급해야합니다. 그 페이지.

당신은 웹 페이지에서 기본적으로 어떻게 레이아웃 작품을 이해하기 시작하는 block 대에 inline 요소와 CSS Box Model을 볼 필요가있다. 여기

input 필드가 빈 공간을 채우기 위해 스트레칭됩니다 예입니다 :

input { 
 
    display:inline-block;  /* Allow the inline element to be sized as a block element */ 
 
    width:calc(50% - 2.5em); /* Each will be 50% of the width of the parent - roughly 2.5 characters */ 
 
}
<input type="number" name="height" placeholder="weight"> 
 
<span>kg</span> 
 
<input type="number" name="weight" placeholder="height"> 
 
<span>cm</span>

또는, 당신은 정상으로 폭을 원하지만, 모든 4 개 요소를 원하는 경우 사용 가능한 너비에 맞춰 지도록하려면 부모 요소에 자식 요소를 가로로 정렬하는 방법을 알려야합니다. text-align :

.center { 
 
    text-align:center; 
 
}
<div class="center"> 
 
    <input type="number" name="height" placeholder="weight"> 
 
    <span>kg</span> 
 
    <input type="number" name="weight" placeholder="height"> 
 
    <span>cm</span> 
 
</div>

2

인 flexbox

당신이 가지고있는, 부모 컨테이너를 필요로 등, 이제까지 포장 결코 나머지 폭, 포장 또는 점유하지 (두 축) 정렬 쉽게 변화, 폭, 수 있습니다 display: flex. 그것은 플렉스 컨테이너입니다. 이제 모든 어린이는 플렉스 상품입니다.

CSS 속임수는 대단한 Cheatsheet for Flexbox입니다. 그것은 (표지 요소되어야 스팬에 의해 점유되지 않은 공백

  • 입력되지 점유하며 :

    여기 2 예?) - Codepen

  • 각 요소의 폭의 약 25 %를 차지하고, 음의 각 입력 및 라벨 사이에 필요한 마진 - Codepen

html { 
 
    box-sizing: border-box; 
 
} 
 

 
* { 
 
    box-sizing: inherit; 
 
} 
 

 
body { 
 
    margin: 0; 
 
} 
 

 
.container { 
 
    display: flex; 
 
    padding: 2rem 1rem; 
 
    background-color: tomato; 
 
} 
 

 
.container input { 
 
    flex-grow: 1; 
 
} 
 

 
.container span { 
 
    margin: 0 4rem 0 0.5rem; 
 
} 
 

 
.container span:last-of-type { 
 
    margin-right: 0; 
 
}
<div class="container"> 
 
    <input type="number" name="height" placeholder="weight"> 
 
    <span>kg</span> 
 
    <input type="number" name="weight" placeholder="height"> 
 
    <span>cm</span> 
 
</div>

html { 
 
    box-sizing: border-box; 
 
} 
 

 
* { 
 
    box-sizing: inherit; 
 
} 
 

 
body { 
 
    margin: 0; 
 
} 
 

 
.container { 
 
    display: flex; 
 
    padding: 2rem 1rem; 
 
    background-color: beige; 
 
} 
 

 
.container input, 
 
.container span { 
 
    width: calc(25% - 0.5rem); /* half of the margin set below */ 
 
} 
 

 
.container span { 
 
    margin-left: 1rem; 
 
}
<div class="container"> 
 
    <input type="number" name="height" placeholder="weight"> 
 
    <span>kg</span> 
 
    <input type="number" name="weight" placeholder="height"> 
 
    <span>cm</span> 
 
</div>

+0

이것은 좋은 Flexbox 답이지만 기본 레이아웃에 대한 이해 부족으로 인해 적절한 지 궁금합니다. –

+0

"인라인 블록 및 4 * 25 %"와 비교하여 네 번째 요소가 첫 번째 줄에 머무르지 않는 이유는 무엇입니까? ;) 나는 초보자가 이것에 어떻게 대처하는지 모른다. 한편으로는 레이아웃 용 수납 공간을 남용 할 필요가 없습니다 (과거의 극단적 인 경우). 반면 Flexbox는 많은 속성과 값 및 수십 가지 가능성을 가진 강력한 가격입니다. – FelipeAls

관련 문제