[css] 입력 내 패딩은 너비 100 %를 끊습니다.
자, 우리는 객체에 패딩을 설정하면 너비가 명시 적으로 설정되어 있어도 너비가 변경된다는 것을 알고 있습니다. 이것에 대한 논리를 논할 수는 있지만, 일부 요소에 문제가 발생합니다.
대부분의 경우 하위 요소를 추가하고 100 %로 설정된 요소 대신 해당 요소에 패딩을 추가하지만 양식 입력의 경우 가능한 단계가 아닙니다.
이것을보십시오 : http://sandman.net/test/formcss.html
두 번째 입력의 패딩은 5px로 설정되어있어 기본 설정보다 훨씬 선호합니다. 그러나 불행히도 100 % 너비에 10px를 추가하는 것을 포함하여 모든 방향으로 입력이 10px 커집니다.
여기서 문제는 입력 내에 자식 요소를 추가 할 수 없어서 수정할 수 없다는 것입니다. 따라서 질문은 다음과 같습니다.
너비를 100 %로 유지하면서 입력 내부에 패딩을 추가하는 방법이 있습니까? 양식이 다른 너비의 부모로 렌더링되므로 부모의 너비를 미리 알 수 없으므로 100 % 여야합니다.
답변
CSS3를 사용하면 box-sizing 속성을 사용 하여 브라우저가 입력 너비를 계산하는 방법을 변경할 수 있습니다 .
input.input {
width: 100%;
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box; /* Opera/IE 8+ */
}
자세한 내용은 여기를 참조하십시오 : http://css-tricks.com/box-sizing/
답변
크로스 브라우저와의 호환성이 무엇인지 모르겠지만 (firefox 및 safari에서 작동)이 솔루션을 시도 할 수 있습니다.
DIV.formvalue {
padding: 15px;
}
input.input {
margin: -5px;
}
(변경 한 값만 게시)
답변
하나의 옵션은 패딩이 있는를 감싸는 것 INPUT
입니다 DIV
.
CSS :
div.formvalue {
background-color: #eee;
border: 1px solid red;
padding: 10px;
margin: 0px;
}
div.paddedInput {
padding: 5px;
border: 1px solid black;
background-color: white;
}
div.paddedInput input {
border: 0px;
width: 100%;
}
HTML :
<div class="formvalue">
<div class="paddedInput"><input type="text" value="Padded!" /></div>
</div>
답변
잊혀진 사람들 calc
은 여기서 구출 할 수 있습니다.
input {
width: calc(100% - 1em);
padding: 0.5em;
}
패딩이 요소의 너비에 추가 될 것이라는 것을 알고 있으므로 전체 너비에서 패딩을 빼기 만하면됩니다. 모든 주요 브라우저에서 지원되며 반응이 좋으며 지저분한 래퍼 div가 필요하지 않습니다.
답변
이와 비슷한 문제가 발생했습니다. 100 %의 입력과 작은 패딩을 가진 tds가 있습니다. 내가 한 것은 다음과 같이 td의 패딩을 보상하는 것입니다.
.form td {
padding-right:8px;
}
.form input, .form textarea {
border: 1px solid black;
padding:3px;
width:100%;
}
입력 / 텍스트 영역의 테두리와 패딩을 포함하도록 8px의 패딩. 도움이 되었기를 바랍니다!
답변
아마도 border + background를에서 빼고 input
대신 div
border + background 및 width : 100 %로 묶고 input
?에 여백을 설정하십시오 .
답변
내가 찾은 한 가지 해결책은 입력을 상대적으로 배치 된 부모 태그로 절대적으로 배치하는 것입니다.
<p class="full-width-input">
<input type="text" class="text />
</p>
스타일을 적용하십시오 :
p.full-width-input {
position: relative;
height: 35px;
}
p.full-width-input input.text {
position: absolute;
top: 0;
left: 0;
right: 0;
padding: 5px;
}
유일하게 알아야 할 것은 단락 태그의 높이 설정이 필요하다는 것입니다. 단, 위치가 지정된 어린이는 높이를 확장하지 않기 때문입니다. 이렇게하면 width: 100%
부모 요소의 왼쪽과 오른쪽에 고정 하여 설정할 필요가 없습니다 .