【问题标题】:How to create an easy responsive grid with one column and two boxes?如何使用一列和两个框创建一个简单的响应式网格?
【发布时间】:2014-09-27 10:32:34
【问题描述】:

我想创建一个有两列的 CSS 网格(不使用任何外部库)。第一列包含一个框。第二列包含两个框。

第一列/左列中的框应具有两个框的高度(相应地考虑边距底部)。看看下图 - 红色框代表不受欢迎的行为,绿色代表想要的行为。

首先:这是否可能不使用任何JavaScript(例如计算两个右框的总和并动态设置左框的高度)?

如果是,我怎样才能最有效地使用 CSS 实现这一点?我如何确保这也适用于平板电脑和智能手机等移动设备?我想避免使用表格。

在尝试实现这一点时,我总是对positiondisplayfloat 感到困惑。但这是我迄今为止尝试过的,但问题是我静态设置了左框的高度。

display: inline-block; width: 40%; min-width: 420px 是我试图让它保持响应。

CSS

.box-layout {
  display: inline-block;
  width: 40%;
  float: left;
  outline: 1px solid #C3C3C3;
  padding: 10px 20px;
  margin: 0 10px;
  background-color: #FAFAFA;
  min-width: 420px;
}

.left-box {
  min-height: 440px;
}

HTML

<div class="box-layout left-box">
    <h1>Left large box</h1>
</div>

<div class="box-layout right-box right-box-first">
    <h1>Right first box</h1>
</div>

<div class="box-layout right-box right-box-second">
    <h1>Right second box</h1>
</div>

Here is a jsFiddle.

【问题讨论】:

  • 这并不完美.. 但它是纯 CSS 的一个很好的起点(响应也是!):jsfiddle.net/jbLtv/2

标签: css responsive-design grid-layout


【解决方案1】:

如果您只想使用 CSS 来实现这一点,我建议您使用父容器

.container{
    width:1024px;
    margin:0 auto;
    height:440px;
}

这是sample JSFiddle

此时,您需要确定这些框的高度。如果你想要高度动态,据我所知你应该使用 JS,像这样;

$(document).ready(function(){
    var height = $(window).height();
    var leftBoxHeight = height;
    var rightBoxHeight = height / 2 - 20;
    $('.left-box').css('height', leftBoxHeight + 'px');
    $('.right-box').css('height', rightBoxHeight + 'px');
});

这是我的第二个JSFiddle

希望这会有所帮助。

【讨论】:

  • 是的,它有帮助,谢谢。可惜 CSS 本身不支持这一点。
  • 是的,不幸的是它没有——据我所知。我猜原因是:必须有某种方法来包含不确定数量的数据,比如长段落或长列表。它必须自动继续向一个方向。而且从上到下滚动更方便,就像报纸一样。否则,小屏幕用户会在 div 内滚动。因此,我相信,由于这种性质,响应高度更难从 CSS 中设置。最后,我认为您可能会在本文档中找到有关设备高度的媒体查询的有用信息:w3.org/TR/css3-mediaqueries/#device-height
猜你喜欢
  • 2019-08-20
  • 1970-01-01
  • 2014-07-12
  • 2014-04-25
  • 2019-03-18
  • 2020-10-05
  • 2017-03-14
  • 2019-10-24
  • 2018-06-26
相关资源
最近更新 更多