【问题标题】:Vertical CSS Flexbox with squares带正方形的垂直 CSS Flexbox
【发布时间】:2014-03-19 00:13:45
【问题描述】:

我正在尝试通过以下方式实现响应式布局: - 固定的标题宽度宽度为 100%,高度为例如50像素 - 右侧 3 个相等的正方形,占据页面从顶部到底部的整个空间。 - 一个主要内容正在占用页面上的剩余空间

目前我的代码看起来像这样 (jsfiddle) 但我无法根据当前高度自动设置右侧框的宽度以便显示为正方形...有人知道吗用纯 CSS 解决这个问题?

HTML:

        <div id="mainView">
            <div id="content">
            </div><!-- content -->

            <div id="squaressWrapper">
                <div id="square1"></div><!-- dummy -->
                <div id="square2"></div><!-- dummy -->
                <div id="square3"></div><!-- dummy -->
                <div id="square4"></div><!-- dummy -->
            </div><!-- squaressWrapper -->           
        </div><!-- mainView -->
    </div><!-- wrapper -->

CSS: html { 高度:100%; 边距:0; 填充:0; }

body {
    height: 100%;
    width: 100%;
    margin: 0px;
    padding: 0px;
}

#wrapper {
    width: 100%;
    height: 100%;
    display: flex;
    display: -webkit-flex;
    flex-direction: column;
    -webkit-flex-direction: column;
    -webkit-align-content: stretch;
    align-content: stretch;
}

#header {
    height: 50px;
    width: 100%;
    background: #ffb8c4;
}

#mainView {
    flex: 1;
    -webkit-flex: 1;
    position: relative;
    background: #666;
}

#squaressWrapper {
    position: absolute;
    height: 100%;
    background: green;
    right: 0;
    display: flex;
    display: -webkit-flex;
    flex-direction: column;
    -webkit-flex-direction: column;
    -webkit-align-content: stretch;
    align-content: stretch;
}

#square1 {
    position: relative;
    flex: 1;
    -webkit-flex: 1;
    width: 100px;
    border: 2px solid white;
    background: green;
}

#square2 {
    position: relative;
    flex: 1;
    -webkit-flex: 1;
    width: 100px;
    border: 2px solid white;
    background: green;
}

#square3 {
    position: relative;
    flex: 1;
    -webkit-flex: 1;
    width: 100px;
    border: 2px solid white;
    background: green;
}

【问题讨论】:

标签: html css responsive-design flexbox


【解决方案1】:

我得到了一个解决方案,使用 Nicho 建议的 vh 单位。

CSS

#squaressWrapper {
    position: absolute;
    height: 100%;
    width: 33vh;
    right: 0;
    display: flex;
    display: -webkit-flex;
    flex-direction: column;
    -webkit-flex-direction: column;
    -webkit-align-content: stretch;
    align-content: stretch;
}

.squares {
    position: relative;
    flex: 1;
    -webkit-flex: 1;
    width: calc(100% - 15px);
    border: 2px solid white;
    background: green;
    right: -11px;
}

demo

尺寸有点奇怪,因为将容器的宽度设置为 calc(33vh - 15px) 不起作用。

可能在不久的将来会更容易。

我不知道浏览器对此的支持是什么,我只在 Chrome 中测试过。

注意:15px 是页眉的尺寸(45px)除以方块数。

【讨论】:

    【解决方案2】:

    好吧,我对此进行了拍摄... 我在你的 css 上改变了你的尺寸

    这里是小提琴的链接。

    http://jsfiddle.net/D7RSP/2/

    #header {
        height: 20%;
        width: 100%;
        background: #ffb8c4;
    }
    
    #mainView {
        flex: 1;
        width: 69%;
        height: 100%;
        float: left;
        background: green;
    
    }
    
    .square {        
        flex: 1;
        -webkit-flex: 1;
        width: 30%;
        border: 1px solid white;
        background: green;
        height: 25%;
        float:right;
    }
    

    【讨论】:

    • 感谢您的帮助,但不幸的是,这还不是。右边的框应该是正方形,其中高度 = 宽度...
    • 对不起,我误解了。我又玩了一些。我认为新的 vh 功能可能会对您有所帮助。我真的很想了解如何做到这一点。如果你弄清楚了,请发布答案,我也会这样做。
    猜你喜欢
    • 2015-06-01
    • 2015-07-10
    • 1970-01-01
    • 2017-05-17
    • 2015-04-26
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多