2014-02-27 59 views
1

我一直在試圖建立9圈在一個3×3格的HTML/CSS佈局的響應式佈局3×3格。創建9圈

我想佈局響應,這樣的佈局將集中坐在一個大屏幕上(但沒有任何垂直滾動),然後縮減到平板電腦/手機屏幕很好地坐得。

這是那種我想要實現的東西的圖片

enter image description here

我已經把我的很差精力codepen(減去瓶子的底部角落!) - 讓我們說我不是CSS大師。

這個例子有一個固定寬度的容器,所以它不是敏感。當我嘗試設置一個高度時,所有的圈子都會拉長。

任何幫助將不勝感激。

+1

難以響應時,它被硬編碼到1000px寬。這是你要找的東西:http://stackoverflow.com/questions/12121090/responsively-change-div-size-keeping-aspect-ratio – cimmanon

回答

1

那麼,作爲一個純CSS的解決方案,你可以使用vhViewport-percentage lengths#container指定視口的高度其尺寸的基礎。

這是我試圖做到這一點:

薩斯版本:

html { height: 100%; } 

body { 
    height: 100%; 
    margin: 0; 
    padding: 0; 
    overflow-y: hidden; /* Hide the vertical overflow */ 
} 

#container { 
    max-width: 90vh; /* = 90% of the height of initial containing block */ 
    max-height: 90vh; 
    margin: 5vh auto; 
    position: relative; 
    background-color: gold; 
} 

#main { 
    height: 100%; 
    width: 100%; 

    .row { 
    width: 100%; 
    height: 33.33%; 
    font: 0/0 a; /* Hide the white space between inline(-block) elements */ 

    .circle { 
     display: inline-block; 
     vertical-align: middle; 
     margin: 3%; 
     width: 27.33%; 
     padding-bottom: 27.33%; 
     background-color: #333; 
     border-radius: 50%; 
    } 
    } 
} 

WORKING DEMO(水平和垂直調整面板/窗口的大小)

我應該注意它沒有完全的browser support,但它適用於大多數現代Web瀏覽器。

+1

非常感謝,這真是太棒了,你甚至可以固定圈子尺寸並在它們之間增加一些空間。這會給我一個很好的起點去做我需要做的事情。 – bradfields

0

http://jsfiddle.net/Tzx2E/http://jsfiddle.net/ZkD5v/

HTML:

<div id="grid"> 
    <div class="row"> 
    <div class="circle"></div> 
    <div class="circle"></div> 
    <div class="circle"></div> 
    </div> 
    <div class="row"> 
    <div class="circle"></div> 
    <div class="circle"></div> 
    <div class="circle"></div> 
    </div> 
    <div class="row"> 
     <div class="circle"></div> 
     <div class="circle"></div> 
     <div class="circle"></div> 
    </div> 
    </div> 
</div> 

CSS:

.circle{border:1px solid black;border-radius:50%;width:33%;float:left;margin:0;padding:0;} 
.row{clear:left;} 

或者:

JS:

$('.circle').height($('.circle').width()); 

或者:

CSS:

.circle{padding-top:33%;} 
+0

該OP不要求JS解決方案。 – cimmanon

+0

他沒有明確表示不使用JS。雖然您提到的填充解決方案可能會更好,但您無法將內容添加到圈子中。編輯... –

+0

@cimmanon更好? –