2013-05-14 4 views
14

내 질문에 사업부의 높이 기준을 유지하는이 질문에 매우 유사하다 : CSS: 100% width or height while keeping aspect ratio?CSS : 폭

나는 위치가 고정되어 사업부가 있습니다. div의 너비은 100 %이어야하고 높이는 정확히 너비는의 1/6이어야합니다. -webkit-calc()이 방법이 있습니까?

참고 : 줌/방향 변경이 너비/높이에 영향을 줄 수 있으므로 JS 해결책이 바람직하지 않습니다.

+0

감사합니다. 나는 개인적으로 1 년 전에이 문제가 있었고 문맥을 잃어 버렸기 때문에 그것을 다시 테스트 할 수 없습니다. 아마도이 문제를 가진 다음 사람이 당신의 솔루션을 시험해 볼 것입니다. :) – Akshay

답변

10

에 대한 코멘트에서 두 번째 제안이 당신이 후에 무엇인가를 이동? 나는 -webkit-calc()을 전혀 사용하지 않고있다. 이미지로 1px을 삽입하고 position: fixed이 적용된 div에 이미지를 입력하고 width100%position: relative 인 이미지로 설정합니다. 그렇다면 나는 내면을 추가했습니다. 이는 그 조상만큼 높고 넓어 지도록 절대적으로 배치 된 내부 div을 추가했습니다.

은 이제 외부 div의 폭을 변경할 수 있으며, 이미지 'width: 100% 설정을 확인합니다 모두 외부와 내부 div'(들 항상 폭의 1/6와 같은 높이가 보장됩니다 또는 적어도 정확히 정확히 같은 높이에 가깝게, 높이는 픽셀의 가장 가까운 전체 수로 반올림됩니다. 모든 콘텐츠는 내면 div 내부로 들어갈 수 있습니다.

HTML

<div> 
    <div></div> 
    <img src="https://dl.dropboxusercontent.com/u/6928212/sixbyone.png" /> 
</div> 

CSS

html, body { 
    margin: 0px; 
    padding: 0px; 
} 
div { 
    position: fixed; 
    width: 100%; 
} 
div > div { 
    position: absolute; 
    top: 0px; 
    right: 0px; 
    bottom: 0px; 
    left: 0px;  
} 
img { 
    width: 100%; 
    display: block;  
    position: relative; 
} 

여기에 요청 된 동작을 보여주는 jsFiddle입니다.

+1

+1 매우 멋진 창의적인 솔루션! – Christoph

+0

고마워요, 록 :) – Akshay

+0

영리한 솔루션! –

-1

당신은 항상 DIV 폭과 같이 설정할 수 있습니다

$('#div1').css("width", $('#div1').height()/6); 

편집 :

또는이 같은 것을 사용할 수 있습니다

/* Firefox */ 
width: -moz-calc(100%/6); 
/* WebKit */ 
width: -webkit-calc(100%/6); 
/* Opera */ 
width: -o-calc(100%/6); 
/* Standard */ 
width: calc(100%/6); 

이것은 단지 예입니다 - ..하지만 css 파일의 픽셀에서 div의 높이를 구하는 것은 불가능합니다. jquery를 사용해야합니다.

EDI T :

$('#div1').css("height", window.width()/6); 
+0

답변 주셔서 감사하지만 이것은 내 질문을 해결하지 않습니다. 너비 : -webkit-calc (100 %/16.66666666667); 부모 너비의 1/6 너비를 만듭니다. 너비 1/6th가 필요해! :) 어쨌든 고마워요 – Akshay

+0

@Akshay하지만 CSS로 할 수는 없어요. 자바 스크립트로만 할 수 있습니다. –

+0

웹킷 계산에 대해 읽고 있었는데 우리가 그것을 할 수 있는지 궁금 해서요. – Akshay

-1

당신이 jQuery를 사용할 수있는 폭의

높이 1/6, 예를 들어,

$('.someclass').css('width', 180); $('.someclass').css('height', $('.someclass').width()/6); 가독성

$('.btnResize').click(function() { $('.div').css('height', $('.div').width()/6);}); 
+0

고마워. 문제를 해결하지 못합니다. 너비는 크기 조정 문제에만 100 % 필요합니다. 따라서 JS로 한 번 높이를 고정하고 방향을 변경하거나 변경하면 높이가 1/6 너비로 재설정되지 않습니다. – Akshay

+0

미안하지만, 나는 오해하고, 아마도 나는 여전히 그렇습니다. 크기 조정에만 문제가 있다면 jquery로 잡을 수있는 트리거 이벤트가 있어야합니다 (수정 된 게시물의 예제 참조). 버튼을 통해 크기가 조절되지 않으면 catch 할 수있는 적절한 이벤트가 있어야합니다. –

5

Responsive square columns에 설명 된 해결책을 사용할 수도 있습니다.

부모 요소의 너비에 따라 % padding-top/bottommargin-top/bottom이 계산된다는 사실을 기반으로합니다.

은 다음과 같을 것입니다 상황에 적응 :

FIDDLE

HTML :

<div class="wrap"> 
    <div class="content"> 
    </div> 
</div> 

CSS : 솔루션에 대한

.wrap{ 
    position:fixed; 
    width:100%; 
    padding-bottom:16.666%; /* 100x1/6 = 16.666...*/ 
} 
.content{ 
    position:absolute; 
    top:0; 
    bottom:0; 
    left:0; 
    right:0; 
}