2013-05-10 43 views
0

我尝试通过使用div容器(带有信息的表单)构造以下结构。我只是不明白。没有明确的列或行系统。有任何想法吗?div或表格布局没有明确的行或列结构

+++++++++++++++++++++++++ 
+  +  b  + 
+ a +++++++++++++++++ 
+  + c +  + 
+++++++++++++++++ d + 
+  e  +  + 
+++++++++++++++++++++++++ 

我应该提到的是,a和d被固定在宽度(对准的左,D右对齐)和b,C,E(它们是所有左对齐)应在宽度随内容而异。

+1

最好加上你的HTML和CSS – 2013-05-10 15:41:19

+0

绝对定位看起来这里最好的解决方案,尤其是因为你的div显然需要有高度和宽度反正固定。 – Blazemonger 2013-05-10 15:43:30

+0

你真的不想看到这个... – user2370579 2013-05-10 15:43:43

回答

0

你要绝对定位的一切:

#a,#b,#c,#d,#e { 
    position: absolute; 
} 
#a { 
    left: 0; 
    top: 0; 
} 
#b { 
    left: 100px; 
    top: 0; 
} 
#c { 
    left: 100px; 
    top: 100px; 
} 
#d { 
    left: 200px; 
    top: 100px; 
} 
#e { 
    left: 0; 
    top: 200px; 
} 

http://jsfiddle.net/gyxJJ/1/

+0

它也可以用漂浮物完成。 – Michael 2013-05-10 15:52:24

+0

@迈克尔不容易,但如果你有一个例子,通过一切手段,分享它。 – Blazemonger 2013-05-10 15:54:32

+0

@Blazemonger你可以在我的回答中看到带有浮点数的例子) – 2013-05-10 15:55:23

0

看到这个演示:http://jsfiddle.net/T9Vvg/你可以使用类似的东西。

CSS:

.wrapper{ 
    height:150px; 
    width:150px; 
    border:solid 1px black; 
} 
.a { 
    height:98px; 
    width:48px; 
    float:left; 
    border:solid 1px black; 
} 
.b { 
    height:48px; 
    width:98px; 
    float:left; 
    border:solid 1px black; 
} 
.c { 
    height:48px; 
    width:48px; 
    float:left; 
    border:solid 1px black; 
} 
.d { 
    height:98px; 
    width:48px; 
    float:right; 
    border:solid 1px black; 
} 
.e { 
    height:48px; 
    width:98px; 
    float:left; 
    border:solid 1px black; 
} 

HTML:

<div class=wrapper> 
    <div class="a">a</div> 
    <div class="b">b</div> 
    <div class="c">c</div> 
    <div class="d">d</div> 
    <div class="e">e</div> 
</div> 
+0

这太神奇了!谢谢你太多了。 a和d将是固定大小。 b c和e的宽度是否可变? – user2370579 2013-05-10 15:55:39

+0

我很难想象它是如何工作的。需要考虑。但我的建议 - 看看基于表格的解决方案。这样构建这样的结构会变得容易得多 – 2013-05-10 16:00:46

+0

http://jsfiddle.net/tPJAQ/ 继承人是基于上述的半分类响应版本。 – Michael 2013-05-10 16:17:08

1

使用编号为td的和colspan属性。

例子:

<table border="1"> 
    <tr> 
     <td rowspan="2">a</td> 
     <td colspan="2" rowspan="1">b</td> 
    </tr> 
    <tr> 
     <td>c</td> 
     <td rowspan="2">d</td> 
    </tr> 
    <tr> 
     <td colspan="2">e</td> 

    </tr> 
</table> 

JSFiddle

+0

(回应来自Blazemonger的删除评论)它仍然是唯一可管理的解决方案。真的,即使在2013年用于布局的合法鄙视的布局。 **如果**不需要限制“列”的宽度,并且具有相同的高度单元格,那么良好的跨区域和行跨度在CSS中不具有等效性,并且在不久的将来不会有。除了网格布局,但只有IE10 – FelipeAls 2013-05-10 16:03:09

+0

是的,可以使用表格来获得所需的布局,但如果它必须响应,它将不会优雅地回流。 – cimmanon 2013-05-10 16:47:04

0

这里有一个首发:http://jsfiddle.net/asxde/

您可能会或可能不会需要有固定宽度的一些元素,取决于你的精确设计和约束。 A和D尤其如此。

CSS:

div { 
    outline: 1px solid red; 
    min-width: 100px; 
    min-height: 40px; 
} 
.a { 
    float: left; 
    min-height: 80px; 
} 
.b { 
    overflow: hidden; 
    background-color: lightgreen; 
} 
.c { 
    float: left; 
} 
.d { 
    float: right; 
    min-height: 80px; 
} 
.e { 
    float: left; 
    clear: left; 
    min-width: 300px; 
} 

HTML:

<div class="a">aaa</div> 
<div class="b">bbb</div> 
<div class="c">ccc</div> 
<div class="d">ddd</div> 
<div class="e">eee</div> 
+0

我不认为你的小提琴的工作,以及你认为它的确如此。 – Blazemonger 2013-05-10 16:02:22

+0

这就是为什么它是首发。必须知道A和D是否为固定宽度或其他约束条件。 – FelipeAls 2013-05-10 16:05:34

+0

对不起 - 我忘了提及:A和D将固定宽度。更新了问题... – user2370579 2013-05-10 16:10:32

0

http://jsfiddle.net/tPJAQ/

这里是从上面FAngel的回答分叉的方法。

.wrapper{ 
    height:/*250px*/ 100%; 
    width:/*250px*/ 100%; 
    overflow: visible; 
    border:solid 1px black; 
    box-sizing: border-box; 
} 
.a { 
    height:66.666666%; 
    width:33.333333%; 
    float:left; 
    border:solid 1px black; 
    box-sizing: border-box; 
} 
.b { 
    height:33.333333%; 
    width:66.666666%; 
    float:left; 
    border:solid 1px black; 
    box-sizing: border-box; 
} 
.c { 
    height:33.333333%; 
    width:33.333333%; 
    float:left; 
    border:solid 1px black; 
    box-sizing: border-box; 
} 
.d { 
    height:66.666666%; 
    width:33.333333%; 
    float:right; 
    border:solid 1px black; 
    box-sizing: border-box; 
} 
.e { 
    height:33.333333%; 
    width:66.666666%; 
    float:left; 
    border:solid 1px black; 
    box-sizing: border-box; 
} 
+0

为什么你将'min-height'和'max-height'设置为'height'? – gilly3 2013-05-10 16:56:49

+0

老实说,我正在尝试别的东西,忘了删除它。哈哈 – Michael 2013-05-10 17:04:45