부모를 채우기 위해 CSS 너비를 만드는 방법은 무엇입니까?
이 문제가 이전에 요청 된 적이 있다고 확신하지만 답을 찾을 수없는 것 같습니다.
다음 마크 업이 있습니다.
<div id="foo">
<div id="bar">
here be dragons
</div>
</div>
내 욕망은 foo를 600px
( width: 600px;
) 너비 로 만들고 bar가 다음 동작을 갖도록 만드는 것입니다.
padding-left: 2px;
padding-right: 2px;
margin-left: 2px;
margin-right: 2px;
outerWidth: 100%;
즉, 막대의 너비를로 설정하는 대신 막대 592px
의 바깥 쪽 너비를로 설정하여 100%
로 계산되도록하고 싶습니다 592px
. 여기서 중요한 점은 내가 foo의 너비를로 변경할 수 800px
있고 bar가 렌더링 될 때 이러한 모든 인스턴스에 대해 수동으로 수학을 수행해야하는 대신 계산한다는 것입니다.
순수한 CSS에서 가능합니까?
그것으로 좀 더 재미 :
#bar
테이블 이면 어떨까요?- 어떤 경우
#bar
텍스트 영역은 무엇입니까? #bar
입력이 있다면 어떨까요?#foo
테이블 셀 (td
) 이면 어떻게 됩니까? (이로 인해 문제가 변경됩니까? 아니면 문제가 동일합니까?)
지금까지 table#bar
, input#bar
논의되고있다. textarea # bar에 대한 좋은 솔루션을 보지 못했습니다. 나는 아니 테두리 / 여백 / 패딩 텍스트 영역을 생각 div
와 랩 힘 작업 div
에 대한 경계로 작업에 스타일 textarea
.
수정 :
이 세 가지 요소는 모두 렌더링 규칙이 다릅니다.
따라서 :
table#bar
너비를 100 %로 설정해야합니다. 그렇지 않으면 필요한만큼만 너비가됩니다. 그러나 테이블 행의 총 너비가 너비보다 크면 bar
필요한 너비로 확장됩니다. 내가 기억한다면 당신은 display: block !important;
ive가 그것을 고쳐야 한 이후로 잠시 동안 설정함으로써 이것을 막을 수 있습니다 . (나를 잘못하면 누군가가 나를 바로 잡을 것입니다).
textarea#bar
i beleive는 블록 수준 요소이므로 div와 동일한 규칙을 따릅니다. 여기서주의해야 할 점은있다 textarea
의 속성을 cols
하고 rows
문자 컬럼에서 측정한다. 이것이 요소에 지정되면 CSS에서 지정한 너비를 재정의합니다.
input#bar
인라인 요소이므로 기본적으로 너비를 할당 할 수 없습니다. 그러나 textarea
의 cols
속성 과 유사하게 size
너비를 결정할 수있는 요소에 속성이 있습니다. 즉, display: block;
CSS에서 사용하여 항상 너비를 지정할 수 있습니다 . 그런 다음 div와 동일한 렌더링 규칙을 따릅니다.
td#foo
table-cell
약간의 광기 가있는로 렌더링됩니다 . 여기서 요점은 귀하의 목적 div#foo
에 따라 내용의 너비를 제한하는 것처럼 작동한다는 것 입니다. 여기서 유일한 문제는 너비 설정을 무시하게 만드는 열의 줄 바꿈 불가능한 텍스트 일 것입니다. 또한 열의 모든 셀은 가장 넓은 셀의 너비를 얻습니다.
이것이 블록 레벨 요소의 기본 동작입니다. 너비가 auto
(기본값)이면 포함하는 요소 내부 너비의 100 %가됩니다. 그래서 본질적으로 :
#foo {width: 800px;}
#bar {padding-left: 2px; padding-right: 2px; margin-left: 2px; margin-right: 2px;}
당신이 원하는 것을 정확하게 줄 것입니다.
거의, 단지 변경 outerWidth: 100%;
에 width: auto;
(outerWidth는 CSS 속성 없음)
또는 막대에 다음 스타일을 적용하십시오.
width: auto;
display: block;
스타일 사용
left: 0px;
또는 / 그리고
right: 0px;
또는 / 그리고
top: 0px;
또는 / 그리고
bottom: 0px;
나는 그 일을 할 대부분의 경우에 대해 생각합니다
따라서 연구 후 다음이 발견되었습니다.
A에 대한 div#bar
설정 display:block; width: auto;
의 등가 원인outerWidth:100%;
의 경우 table#bar
아래에 설명 된 규칙에 따라 div로 래핑해야합니다. 따라서 구조는 다음과 같습니다.
<div id="foo">
<div id="barWrap" style="border....">
<table id="bar" style="width: 100%; border: 0; padding: 0; margin: 0;">
This way the table takes up the parent div 100%, and #barWrap
is used to add borders/margin/padding to the #bar
table. Note that you will need to set the background of the whole thing in #barWrap
and have #bar
's background be transparent or the same as #barWrap
.
For textarea#bar
and input#bar
you need to do the same thing as table#bar
, the down side is that by removing the borders you stop native widget rendering of the input/textarea and the #barWrap
's borders will look a bit different than everything else, so you will probably have to style all your inputs this way.
참고URL : https://stackoverflow.com/questions/2232440/how-to-make-css-width-to-fill-parent
'Programing' 카테고리의 다른 글
django 프로덕션 서버에 virtualenv를 권장합니까? (0) | 2020.10.20 |
---|---|
npm -i 플래그는 무엇을 의미합니까? (0) | 2020.10.20 |
Windows 컴퓨터에서 Python을 완전히 제거하는 방법은 무엇입니까? (0) | 2020.10.20 |
터미널에서 경고음을 비활성화하고 싶습니다-Mac OSX (0) | 2020.10.20 |
API와 관련된 콜백 URL은 무엇입니까? (0) | 2020.10.20 |