2014-02-27 58 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更好? –