仅使用CSS创建表

时间:2014-03-04 13:57:10

标签: html css joomla css-tables

我需要一个如下所示的表格布局:

单元格1(行数2)

第二和第三单元格(单元格1和单元格旁边)

第4单元格(第2单元和第3单元下方的第2单元)

我遇到的问题是它只需要使用CSS完成,我根本不能使用代码中的任何表元素。

如果Cell 2,3和4为空,单元格1还需要拉伸到100%宽度。

我正在Joomla的一个Artisteer 4模板上工作,并且已经搜遍了所有人,但却找不到合适的解决方案。

我的代码如下:

<div class="prof-layout-wrapper">
   <div class="prof-content-layout">
      <div class="prof-content-layout-row">
         <div class="prof-layout-cell prof-content">
<?php
 echo $view->position('banner2', 'prof-nostyle');
 if ($view->containsModules('breadcrumb'))
 echo artxPost($view->position('breadcrumb'));
 echo $view->positions(array('user1' => 50, 'user2' => 50), 'prof-article');
 echo $view->position('banner3', 'prof-nostyle');
 echo artxPost(array('content' => '<jdoc:include type="message" />', 'classes' => ' prof-m  essages'));
 echo '<jdoc:include type="component" />';
 echo $view->position('banner4', 'prof-nostyle');
 echo $view->positions(array('user4' => 50, 'user5' => 50), 'prof-article');
 echo $view->position('banner5', 'prof-nostyle');?>
 </div>
 <?php if ($view->containsModules('left')) : ?>
   <div class="prof-layout-cell prof-sidebar1">
     <?php echo $view->position('left', 'prof-block'); ?>
   </div>
  <?php endif; ?>
 <?php if ($view->containsModules('right')) : ?>
    <div class="prof-layout-cell prof-sidebar2">
       <?php echo $view->position('right', 'prof-block'); ?>
    </div>
        <?php endif; ?>
       </div>
     </div>
   </div>

css是:

.prof-layout-wrapper
{
  position: relative;
  margin: 0 auto 0 auto;
  z-index: auto !important;
 }

.prof-content-layout
{
  display: table;
  width: 100%;
  table-layout: fixed;    
  float: left;
}

.prof-content-layout-row
{
   display: table-row;
 }

.prof-layout-cell
{
  display: table-cell;
  vertical-align: top;
}

对于我的生活,我不能让Cell 4跨越而不破坏整个布局。

请帮忙!

(我希望这是一个很好的解释)

1 个答案:

答案 0 :(得分:5)

当然!

Demo Fiddle

HTML

<div class='table'>
    <div class='row'>
        <div class='cell'>cell1</div>
        <div class='cell'>
            <div class='table'>
                <div class='row'>
                    <div class='cell'>cell2</div>
                    <div class='cell'>cell3</div>
                </div>
                <div class='caption'>cell4</div>
            </div>
        </div>
    </div>
</div>

CSS

html, body {
    width:100%;
}
.table {
    display:table;
    width:100%;
}
.row {
    display:table-row;
}
.cell {
    display:table-cell;
    border:1px solid grey;
}
.caption {
    display:table-caption;
    caption-side:bottom;
    border:1px solid grey;
}

如果您想要自动展开/折叠功能,可以稍微调整代码,a la this fiddle