棘手的HTML布局

Den*_*sky 19 html css

任何人都可以想到一种方法来将以下方案转换为非表格html布局吗?

在此输入图像描述

也许还有一些值得一提的事情.

  • 只有中央块是强制性的(如果它是唯一的那个,则应该变成正常的方块).
  • 块的总数是不可预测的,因此布局应该易于扩展(因此非表格).
  • 所有块中文本的完全左对齐并不重要.
  • 除了显示之外不允许有任何间隙
  • 灰色背景可以是半透明的,因此也不允许重叠.

提前致谢!

ste*_*ecb 12

好吧..这很难:) ..顺便说一句,如果里面的文字是'静态',你可以用浮点数和负边距这样做一些技巧:

http://www.jsfiddle.net/steweb/Xa5X6/

我知道这不是最好的结果,但它可能是一种开始的方式:)

标记:

<div class="wrapper">
    <div class="column">
        <div id="sq-1"></div>
        <div id="rect-1"></div>
    </div>
    <div class="column">
        <div id="sq-2"></div>
        <div id="rect-2"></div>
    </div>
    <div class="column main">
        <div class="text-container-1">
            <div class="text-1">
                text 
            </div>
            <div class="text-2">
                text 
            </div>
        </div>
        <div class="text-3">text </div>
        <div class="text-4">text</div>
        <div class="text-5">text</div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.wrapper{
    overflow:hidden;
    background:#777;
    display:inline-block;
}
.column{
    float:left;
}
#sq-1{
    width:20px;
    height:21px;
}
#sq-2{
    width:20px;
    height:21px;
    margin-top:20px;
    border-top:2px solid #FFFFFF;
}
#rect-1{
    height:104px;
    border-right:2px solid #FFFFFF;
}
#rect-2{
    height:82px;
    border-right:2px solid #FFFFFF;
}

.text-container-1{
    width:200px;
    border-right:2px solid #FFFFFF;
}
.text-1, .text-2{
    border-bottom:2px solid #FFFFFF;
}
.text-3{
    float:left;
    width:220px;
    margin-top:-44px;
    padding-top:54px;
    padding-bottom:10px;
    border-bottom:2px solid #FFFFFF;
    border-right:2px solid #FFFFFF;
}
.text-4{
    float:left;
    width:240px;
    margin-left:-222px;
    margin-top:-44px;
    padding-top:84px;
    border-bottom:2px solid #FFFFFF;
    border-right:2px solid #FFFFFF;
}
.text-5{
    float:left;
    width:260px;
    margin-left:-242px;
    margin-top:-44px;
    padding-top:104px;
    border-bottom:2px solid #FFFFFF;
    border-right:2px solid #FFFFFF;
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,您必须为左侧的元素指定静态高度.而且,右边元素的负边距也是静态的.

static text => static dimensions/margins =>一种奇怪的结果

如果文本是动态的,我认为在不使用JS和/或表的情况下实现结果几乎是不可能的,因为这些'L'元素和它们的宽度/高度很难管理.

动态文字=>咒骂


Den*_*sky 1

已解决,但动态边距(针对 js/php/whatever 中的每个元素计算)和需要动态计算高度的窄元素并不完美。

在此输入图像描述

和截图:

在此输入图像描述