【问题标题】:Table like layout in responsive design cross browser响应式设计跨浏览器中的表格布局
【发布时间】:2015-05-31 02:24:09
【问题描述】:

在网页中,我的布局有以下标记

<div class="parent">
      <div class="left-content"></div>
      <div class="right-content"></div>
</div>

给定标记的样式是:

.parent{
   display:table;
   width:100%;
}
.parent > .left-content{
   width:auto;
}
.parent > .right-content{
   width:320px;
}

如何让“right-content”占据320px的可用宽度,而“left-content”div占据所有剩余宽度?

注意:我不能使用以下技术来实现这种行为,因为我的布局是响应式的,我需要将“右内容”移动到“左内容”的底部具体分辨率。

标记:

<div class="parent">
     <div class="right-content"></div>          
     <div class="left-content"></div>
</div>

样式

.parent{
   display:block;
   width:100%;
}
.parent > .left-content{
   width:auto;
}
.parent > .right-content{
   width:320px;
   float:right;
}

【问题讨论】:

  • 你还在这里问问题吗?
  • 看看这句话。 “现在的问题是“左内容” div 如何占据所有剩余空间,而“右内容”占据 320px 的可用宽度。”
  • 这不是问题......这是一个声明。你想让它做什么?
  • 我想要什么在声明中明确描述。 “'left-content' div 如何占据所有剩余空间,'right-content' 占据 320px 的可用宽度”。
  • Abdul,我也没有真正明白你的问题。也许您可以制作一个小提琴,向我们展示挑战是什么,以及您想要实现的目标是什么。我想帮你解决这个问题。

标签: html css responsive-design


【解决方案1】:

为了让事情更简单,我会首先更改标记,使左侧内容低于右侧内容(根据智能手机分辨率的需要)。

 <div class="left-content"></div>
 <div class="right-content"></div>          

接下来,因为你的第一个 div 是占据剩余宽度的那个,所以简单的解决方案似乎是display:table-cell(父级为display:table)。它看起来也可以使用 inline-blocks 或 floats,但你可能不得不求助于 width: calc(100% - 320px); 这样的东西,所以我更喜欢 table 解决方案。

接下来,您添加一个简单的媒体查询以更改回较低分辨率的块。

.parent {
  display: table;
  width: 100%;
}
.parent > .left-content {
  display: table-cell;
  width: auto;        

  /* Added for visualisation */
  background: blue;
  height: 50px;
}

.parent > .right-content {
  display: table-cell;
  width: 320px;

  /* Added for visualisation */
  height: 50px;
  background: red;
}
    
/* Media query */
@media(max-width: 550px) {
.parent > .left-content {
  display: block;
}
.parent > .right-content {
  display: block;
  width: 100%;
}
}
<div class="parent">
  <div class="left-content">Left</div>
  <div class="right-content">Right</div>
</div>

【讨论】:

    【解决方案2】:

    我强烈建议使用calc,而不是强迫你的标记表现得像一个表格。

    http://sassmeister.com/gist/c87585fcff7fae356adb

    .left-content,
    .right-content {
      width: 100%;
    }
    
    @media (min-width: 600px) {
    
      .left-content {
        float: left;
        width: calc(100% - 320px);
      }
    
      .right-content {
        float: right;
        width: 320px;
      }
    }
    

    【讨论】:

    • 'calc' 不支持跨浏览器。
    • 好吧,如果您仍然支持旧的 IE,那么您可以使用显示表作为特定于浏览器的后备。现代优先...优雅地降级。
    猜你喜欢
    • 2013-06-30
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多