html - 使用 float 并排对齐 div 元素

标签 html css css-float grid-layout

<分区>

我主要是一名后端开发人员,但我正在努力使布局正确。基本上我正在创建一个 ListView 页面,该页面将在左侧包含一个 div 标记,该标记具有一堆过滤器(下拉列表、复选框等)。在屏幕的右侧,我将有一个包含网格的 div 标记。这似乎有效,但当我在头顶上方或屏幕未最大化时看起来很糟糕。我这样做对吗?基本上这就是我所追求的:

enter image description here

我为此做的 CSS 就这么简单:

.filterContainer {
    width:20%; 
    float:left;
}


.gridContainer {
    width:79%; 
    float:right;
}

基本上 .filterContainer 是我左边的 div (dLeft) 而 .gridContainer 是我右边的 div (dRight ).这对我想要实现的目标有效吗?结果如下所示:

http://i.imgur.com/WFasMF1.png

但是,如果我调整窗口大小,我最终会得到以下结果:

http://i.imgur.com/4u9HRlK.png

我想这很正常,因为我正在调整大小,但我的 css 有效吗?

最佳答案

首先,当您处理基于网格的布局时,请始终确保您使用

* {
   -moz-box-sizing: border-box;
   -webkit-box-sizing: border-box;
   box-sizing: border-box;

   /* Resets */
   margin: 0;
   padding: 0;
}

Note: * is nothing but a universal selector which will apply the defined properties to every element. Inorder to target specific elements, use more specific selectors like div.class_name etc

现在,你为什么需要它?

如果你在下图中看到..

CSS Box Mode;

CSS 在框外而不是框内添加 marginpaddingborder,这是内容框的默认行为,所以当您使用我分享的片段,它改变了盒子模型的行为,并使元素计算元素内的 borderpadding


关于您的问题,您提供的 CSS 是完美的,但是 positionfloatmargin 甚至 uncleared floating元素 任何事情都可能导致您面临的问题,所以如果可以的话,请考虑更改您的 CSS 样式表,如果您使用 box-sizing: border-box;


您如何实现这一点?

好吧,显然,我不会为您提供全部内容,而只是提供如何实现此目的的一般思路,因为我看到您正在使用 width: 79%; 现在这就是为什么我建议你改变盒子模型的非常重要的原因。

现在,我有两个元素向左浮动,改变了盒子模型,所以我不必为任何元素使用 -1% width元素。当您需要间距时,在网格内嵌套更多 block ,然后使用 padding 代替 margin,尤其是在 float 父元素上。

Demo

<div class="wrap">
    <div class="left_wrap"></div>
    <div class="right_wrap"></div>
</div>

* {
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;

    /* Resets */
    margin: 0;
    padding: 0;
}

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

.wrap > div {
    min-height: 300px;
}

.wrap .left_wrap {
    width: 30%;
    float: left;
    border: 3px solid #f00;
}

.wrap .right_wrap {
    border: 3px solid #000;
    width: 70%;
    float: left;
}

关于html - 使用 float 并排对齐 div 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21408574/

上一篇:javascript - 如何在具有特定 ID 的 <ul> 下过滤 <li>?

下一篇:javascript - 菜单上的箭头处于事件状态时

相关文章:

javascript - 从 DIV 中删除元素以及之前插入的值

javascript - polymer 悬停 css 不起作用

html - 如何在 UIWebView 中显示本地 html 文件?

html - CSS 动画不起作用

html - 将 DIVS 放在一条线上然后居中

android - float :left stops click event on android?

html - div 不限制自己在父级内

javascript - 使图像过渡更平滑的推荐技术

javascript - 更改 css 中事件导航栏的颜色

javascript - 始终位于区域内的顶部 div