Css3列水平溢出

时间:2014-06-03 02:44:01

标签: html5 css3

我无法通过仅使用HTML5 / CSS3来尝试获得所需的页面布局(无需JavaScript)。

基本概念是......

  1. 包含标题和正文的页面(静态)。
  2. 身体有几个“部分”,每个部分都有一个标题和正文(静态)。
  3. 这些部分从左向右流动(您可以水平滚动页面主体以查看它们溢出的部分。)
  4. 这些部分具有流体高度和宽度(高度根据页面大小调整,宽度根据内容调整或最小300px)。
  5. 截面体内的字段从上到下流动。当溢出时,溢出的字段应移动到新列,并且节主体应动态扩展。如果它们溢出到新列(标签和输入应该一起移动),则不应该分开。
  6. 注意:我目前正在IE11中测试,但最终解决方案应该在最新的Chrome / FF / IE / Safari版本中运行。

    当字段溢出到新列时,我似乎无法扩展节主体,同时仍保留列行为。

    HTML:

    <div class="container">
        <div class="header">Header</div>
        <div class="body">
            <div class="section">
                <div class="sectionheader">Section 1</div>
                <div class="sectionbody">
                    <div class="field">
                        <label>Field 1</label>
                        <input type="text" />
                    </div>
                    <!-- NOTE: repeat field element to create 5 or more fields... -->
                </div>
            </div>
            <!-- NOTE: repeat section element to create more sections... -->
        </div>
    </div>
    

    CSS:

    * {
        box-sizing: border-box;
        -moz-box-sizing: border-box;
    }
    html, body, .container {
        height: 100%;
        width: 100%;
        padding: 0;
        margin: 0;
        background-color: gray;
        overflow: hidden;
    }
    .header {
        height: 150px;
        background-color: red;
    }
    .body {
        position: absolute;
        top: 150px;
        bottom: 0;
        left: 0;
        right: 0;
        white-space: nowrap;
        vertical-align: top;
        padding: 40px;
        overflow-x: auto;
        overflow-y: hidden;
    }
    .section {
        min-height: 200px;
        height: 100%;
        border: 2px solid red;
        margin-right: 40px;
        display: inline-block;
        min-width: 300px;
        position: relative;
        vertical-align: top;
    }
    .sectionheader {
        height: 40px;
        color: white;
        font-size: 20pt;
        padding-left: 5px;
    }
    .sectionbody {
        white-space: normal;
        border: 2px solid blue;
        padding-top: 10px;
        color: white;
        height: calc(100% - 40px);
        column-count: auto;
        -webkit-column-count: auto;
        column-width: 320px;
        -webkit-column-width: 320px;
        column-fill: auto;
        -webkit-column-fill: auto;
    }
    .field {
        margin: 0 10px 10px 10px;
        width: 300px;
        display: inline-block;
    }
    .field label {
        font-size: 12px;
        line-height: 20px;
        display: block;
    }
    .field input {
        width: 100%;
        font-size: 16px;
        line-height: 20px;
        height: 40px;
        padding-left: 5px;
    }
    

    这是小提琴:http://jsfiddle.net/t7kQ4/7/

    (拖动手柄以调整结果窗格的高度以触发字段溢出)

1 个答案:

答案 0 :(得分:0)

这有用吗:http://jsfiddle.net/t7kQ4/10/

您需要删除正在执行的计算并允许它自动运行。

section { 
  height:auto;
}
.sectionbody {
  height:auto;
}