0

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

例子

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;
    }
}
4

1 回答 1

1

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

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

还要注意这个问题与您使用的网格框架无关:)

#test {
    background-color: green;
    height: 400px;
    max-width: 400px;
    margin: 0 auto;
    overflow: hidden;
}
于 2014-07-03T14:24:27.793 回答