2016-04-18 6 views
-2

У меня есть эта таблица, в которой отображается текущий статус запроса. Стол образец будет выглядеть, как показано ниже в HTMLОтобразить временную шкалу в таблице HTML

enter image description here

Таблица довольно просто, только вопрос заключается в том, чтобы показать, что график в статусе. Я не буду возражать против использования некоторой сетки для той же цели, если она показывает временную шкалу, как показано ниже, или что-то подобное.

Timeline в новом утверждённом Реализуются и т.д.

+0

Ожидается, что вы по крайней мере попытаться закодировать это для себя. Stack Overflow не является службой записи кода. Я бы предположил, что вы проводите дополнительные исследования, либо через Google, либо путем поиска SO, сделайте попытку и. если у вас все еще есть проблемы, вернитесь ** с кодом ** и объясните, что вы пробовали, и почему это не сработало. –

ответ

3

я предлагаю использовать :before и :after для непрерывной шкалы.

Мы будем иметь два класса для этого: .has-left и .has-right для определения временной шкалы дисплея:

table { 
 
    border-collapse: collapse; 
 
} 
 
table td { 
 
    border: 1px solid #ddd; 
 
} 
 
.timeline { 
 
    text-align: center; 
 
    vertical-align: middle; 
 
    height: 30px; 
 
    width: 50px; 
 
    position: relative; 
 
} 
 
.timeline span { 
 
    width: 14px; 
 
    height: 14px; 
 
    border-radius: 50%; 
 
    background-color: gray; 
 
    display: none; 
 
} 
 
.timeline.has-left:before { 
 
    content: ''; 
 
    display: inline-block; 
 
    position: absolute; 
 
    left: -1px; 
 
    width: 50%; 
 
    height: 3px; 
 
    top: 12px; 
 
    background-color: gray; 
 
} 
 
.timeline.has-right:after { 
 
    content: ''; 
 
    display: inline-block; 
 
    position: absolute; 
 
    right: -1px; 
 
    width: 50%; 
 
    height: 3px; 
 
    top: 12px; 
 
    background-color: gray; 
 
} 
 
.timeline.has-left span, 
 
.timeline.has-right span { 
 
    display: inline-block; 
 
}
<table> 
 

 
    <tr> 
 
    <td class="timeline has-right"><span></span> 
 
    </td> 
 
    <td class="timeline has-left has-right"><span></span> 
 
    </td> 
 
    <td class="timeline has-left"><span></span> 
 
    </td> 
 
    <td class="timeline"><span></span> 
 
    </td> 
 
    </tr> 
 

 
    <tr> 
 
    <td class="timeline has-right"><span></span> 
 
    </td> 
 
    <td class="timeline has-left"><span></span> 
 
    </td> 
 
    <td class="timeline has-right"><span></span> 
 
    </td> 
 
    <td class="timeline has-left"><span></span> 
 
    </td> 
 
    </tr> 
 

 
    <tr> 
 
    <td class="timeline"><span></span> 
 
    </td> 
 
    <td class="timeline has-right"><span></span> 
 
    </td> 
 
    <td class="timeline has-left has-right"><span></span> 
 
    </td> 
 
    <td class="timeline has-left"><span></span> 
 
    </td> 
 
    </tr> 
 
</table>

+0

WOW Justinas, именно то же самое, что я искал. Отлично и спасибо. – user2739418

+0

Есть ли шанс показать только символ без левой и правой линии? – user2739418

+0

@ user2739418 Да, просто измените отображение по умолчанию '.timeline span' на' display: inline-block' и удалите правило '.timeline.has-left span, .timeline.has-right span'. – Justinas

0

Мой подход (если вынуждены использовать таблицы) было бы применить некоторые CSS :after селекторы ,

HTML

<table width="50%" cellpadding="0" cellspacing="0"> 
<tr> 
    <th width="25%">Item</th> 
    <th width="25%">Status 1</th> 
    <th width="25%">Status 2</th> 
    <th width="25%">Status 3</th> 
</tr> 
<tr class="status3"> 
    <td>Stat3</td> 
    <td><i class="circle"></i></td> 
    <td><i class="circle"></i></td> 
    <td><i class="circle"></i></td> 
</tr> 
<tr class="status1"> 
    <td>Stat1</td> 
    <td><i class="circle"></i></td> 
    <td></td> 
    <td></td> 
</tr> 
<tr class="status2"> 
    <td>Stat2</td> 
    <td><i class="circle"></i></td> 
    <td><i class="circle"></i></td> 
    <td></td> 
</tr> 
</table> 

CSS

i.circle {display:block;width:20px;height:20px;border-radius:10px;background:#ccc;margin:auto} 
tr.status3 td:nth-child(2):after, 
tr.status3 td:nth-child(3):after, 
tr.status3 td:nth-child(4):after, 
tr.status2 td:nth-child(2):after, 
tr.status2 td:nth-child(3):after {  
    display: block; 
    width: 50%; 
    background: #ccc; 
    height: 5px; 
    content: ' '; 
    float: right; 
    margin-top: -12px; 
} 
tr.status3 td:nth-child(3):after{ 
    width: 100%; 
} 
tr.status3 td:nth-child(4):after{ 
    width: 50%; 
    float: left; 
} 
tr.status2 td:nth-child(3):after{ 
    width: 50%; 
    float: left; 
} 

Смотрите следующую скрипку:

https://jsfiddle.net/0Lz3zfLn/

+0

@Paulie_D - Я сначала проделывал ответ. –

+0

Не нужно быть самым быстрым оружием. Вы всегда должны отправлять полные ответы ... не заполнители. Мы не ЗНАЕМ, что вы ответите позже. –

+0

Это то, чего я ожидал, и это то, чего я достиг. https://jsfiddle.net/5737a0x9/ – user2739418