Создать таблицу, используя только CSS

Мне нужен макет таблицы, который выглядит следующим образом:

Ячейка один (rowspan 2)

Ячейка 2 и 3 (рядом с ячейкой 1 и друг с другом)

Ячейка четыре (colspan 2 под ячейкой два и три)

Проблема, с которой я столкнулся, заключается в том, что это нужно делать только с использованием CSS, я вообще не могу использовать какие-либо элементы таблицы в коде.

Ячейка 1 также должна растягиваться до ширины 100%, если ячейки 2, 3 и 4 пусты.

Я работаю над шаблоном Artisteer 4 в Joomla и искал все, и просто не могу найти рабочее решение.

У меня есть следующий код:

<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 ответ

Конечно!

Демо Фиддл

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;
}

Если вы хотите автоматически расширять / сворачивать функциональность, вы можете немного изменить код, как эта скрипка

Другие вопросы по тегам