使用简单网格系统在移动尺寸上溢出的Div容器内容

时间:2014-07-03 14:19:26

标签: html css grid grid-system

我正在尝试了解一种更好的方法来使自定义逻辑适应简单网格(Simple Grid System,当自定义宽度div大于移动布局时。我的问题是我的div宽度大于移动设备网格划分填充布局和溢出。例如,我有一个400px宽度div,在较小的设备上给出左右白色填充20px(网格规则),但由于它大于手持设备大小,我的div溢出在正确的20px填充上。我正在尝试理解使用网格的最佳方法。我应该创建自己的断点来缩小div宽度以适应移动吗?我应该使用覆盖溢出的CSS属性吗?我最好的是什么?方法?我只想找到一个黄金标准来保持工作流程的一致性。谢谢。

Example

HTML:

<!doctype html>

<html>

    <head>
        <title>Simple Grid</title>
        <meta charset="utf-8" />
        <link rel="stylesheet" type="text/css" href="simplegrid.css" />
        <link rel="stylesheet" type="text/css" href="styles.css" />


    </head>

    <body>
        <!-- Grid 2/3 and 1/3-->
        <div class="grid">
            <div class="col-1-1">
                <div id="test">
                    <h1>This is a test.</h1>
                </div>
            </div>
        </div>
        <!-- Grid 1/2 -->

    </body>

</html>

CSS:

#test {
    background-color: green;
    height: 400px;
    width: 400px;
    margin: 0 auto;
    overflow: hidden;
}

#test h1 {
    text-align: center;
}

简单网格:

/*
  Simple Grid
  Learn More - http://dallasbass.com/simple-grid-a-lightweight-responsive-css-grid/
  Project Page - http://thisisdallas.github.com/Simple-Grid/
  Author - Dallas Bass
  Site - dallasbass.com
*/

*, *:after, *:before {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}

body {
    margin: 0px;
}

[class*='col-'] {
    float: left;
    padding-right: 20px; /* column-space */
}

.grid {
    width: 100%;
    max-width: 1140px;
    min-width: 755px;
    margin: 0 auto;
    overflow: hidden;
}

.grid:after {
    content: "";
    display: table;
    clear: both;
}

.grid-pad {
    padding-top: 20px;
    padding-left: 20px; /* grid-space to left */
    padding-right: 0px; /* grid-space to right: (grid-space-left - column-space) e.g. 20px-20px=0 */
}

.push-right {
    float: right;
}

/* Content Columns */

.col-1-1 {
    width: 100%;
}
.col-2-3, .col-8-12 {
    width: 66.66%;
}

.col-1-2, .col-6-12 {
    width: 50%;
}

.col-1-3, .col-4-12 {
    width: 33.33%;
}

.col-1-4, .col-3-12 {
    width: 25%;
}

.col-1-5 {
    width: 20%;
}

.col-1-6, .col-2-12 {
    width: 16.667%;
}

.col-1-7 {
    width: 14.28%;
}

.col-1-8 {
    width: 12.5%;
}

.col-1-9 {
    width: 11.1%;
}

.col-1-10 {
    width: 10%;
}

.col-1-11 {
    width: 9.09%;
}

.col-1-12 {
    width: 8.33%
}

/* Layout Columns */

.col-11-12 {
    width: 91.66%
}

.col-10-12 {
    width: 83.333%;
}

.col-9-12 {
    width: 75%;
}

.col-5-12 {
    width: 41.66%;
}

.col-7-12 {
    width: 58.33%
}



/* Pushing blocks */

.push-2-3, .push-8-12 {
    margin-left: 66.66%;
}

.push-1-2, .push-6-12 {
    margin-left: 50%;
}

.push-1-3, .push-4-12 {
    margin-left: 33.33%;
}

.push-1-4, .push-3-12 {
    margin-left: 25%;
}

.push-1-5 {
    margin-left: 20%;
}

.push-1-6, .push-2-12 {
    margin-left: 16.667%;
}

.push-1-7 {
    margin-left: 14.28%;
}

.push-1-8 {
    margin-left: 12.5%;
}

.push-1-9 {
    margin-left: 11.1%;
}

.push-1-10 {
    margin-left: 10%;
}

.push-1-11 {
    margin-left: 9.09%;
}

.push-1-12 {
    margin-left: 8.33%
}


@media handheld, only screen and (max-width: 767px) {
    .grid {
        width: 100%;
        min-width: 0;
        margin-left: 0px;
        margin-right: 0px;
        padding-left: 20px; /* grid-space to left */
        padding-right: 10px; /* grid-space to right: (grid-space-left - column-space) e.g. 20px-10px=10px */
    }

    [class*='col-'] {
        width: auto;
        float: none;
        margin-left: 0px;
        margin-right: 0px;
        margin-top: 10px;
        margin-bottom: 10px;
        padding-left: 0px;
        padding-right: 10px; /* column-space */
    }


    /* Mobile Layout */

    [class*='mobile-col-'] {
        float: left;
        margin-left: 0px;
        margin-right: 0px;
        margin-top: 0px;
        margin-bottom: 10px;
        padding-left: 0px;
        padding-right: 10px; /* column-space */
        padding-bottom: 0px;
    }

    .mobile-col-1-1 {
        width: 100%;
    }
    .mobile-col-2-3, .mobile-col-8-12 {
        width: 66.66%;
    }

    .mobile-col-1-2, .mobile-col-6-12 {
        width: 50%;
    }

    .mobile-col-1-3, .mobile-col-4-12 {
        width: 33.33%;
    }

    .mobile-col-1-4, .mobile-col-3-12 {
        width: 25%;
    }

    .mobile-col-1-5 {
        width: 20%;
    }

    .mobile-col-1-6, .mobile-col-2-12 {
        width: 16.667%;
    }

    .mobile-col-1-7 {
        width: 14.28%;
    }

    .mobile-col-1-8 {
        width: 12.5%;
    }

    .mobile-col-1-9 {
        width: 11.1%;
    }

    .mobile-col-1-10 {
        width: 10%;
    }

    .mobile-col-1-11 {
        width: 9.09%;
    }

    .mobile-col-1-12 {
        width: 8.33%
    }

    /* Layout Columns */

    .mobile-col-11-12 {
        width: 91.66%
    }

    .mobile-col-10-12 {
        width: 83.333%;
    }

    .mobile-col-9-12 {
        width: 75%;
    }

    .mobile-col-5-12 {
        width: 41.66%;
    }

    .mobile-col-7-12 {
        width: 58.33%
    }

    .hide-on-mobile {
        display: none !important;
        width: 0;
        height: 0;
    }
}

1 个答案:

答案 0 :(得分:1)

这里的问题是你给这个元素一个400px的固定元素。因此,无论视口大小如何,浏览器都会将其渲染为400。

要解决此问题,我建议改用 max-width 。基本上,div在视口内尽可能宽,直到达到400px - 然后它将停止。

另外值得注意的是,此问题与您正在使用的网格框架无关。

#test {
    background-color: green;
    height: 400px;
    max-width: 400px;
    margin: 0 auto;
    overflow: hidden;
}