Как сделать зебру таблице? Smarty, jQuery, CSS3

Как сделать зебру таблице? Smarty, jQuery, CSS3

css, css3, javascript, jquery, smarty, шаблон

Под словосочетанием «зебра» понимают окраску n-той строки в таблице или в списке. Таким образом значительно улучшая читабельность и восприятия информации, особенно в длинных таблицах или списках. В статье рассмотрены разные примеры как достичь окраску каждой второй строки используя разные приемы и техники - css, css3, jquery un smarty.

1. Используя CSS для статической таблицы:

table tr.even td {

   background: #cacaca;
}
<table>

<thead>
<tr>
<th>Header</th>
</tr>
</thead>
<tbody>

<tr>
   <td>Lorem ipsum dolor sit amet</td>
</tr>

<tr class="even">
   <td>Lorem ipsum dolor sit amet</td>
</tr>

...

</table>

2. Используя CSS3

table tr:nth-child(even) {

   background-color: #cacaca;
}
<table>
<thead>
<tr>
   <th>Header</th>
</tr>
</thead>

<tbody>
<tr>
   <td>Lorem ipsum dolor sit amet</td>
</tr>

<tr>
   <td>Lorem ipsum dolor sit amet</td>
</tr>

...

</table>

Не работает в IE8,7,6

3. Используя javascript и jQuery библиотеку.

.even {

  background: #cacaca;
}
$(document).ready(function(){

   $("tr:even").addClass("even");
});

4. Используя javascript и jQuery библиотеку. Сценарий по сложнее.

$(document).ready(function(){

   $('table tr').each(function(i, it){

      if(i % 2 == 0) {

         $(this).addClass('even');
      }

   })

});

Порядковый номер элемента (строки) делиться и, в зависимости от наличия или отсутствия остатка (% оператор), определяется это четные или нечетные строка. Соответственно, четным линиям добавляется класс "even ", который обеспечивает окраску строки.

5. Используя PHP систему шаблонов Smarty.

<table>
<thead>
<tr>
   <th>Header</th>
</tr>
</thead>

<tbody>

{foreach from=$items item=item name=foo}

   <tr {if $smarty.foreach.foo.index % 2}class="even"{/if}>

      <td>Lorem ipsum dolor sit amet</td>

   </tr>

{/foreach}

</tbody>
</table>

Мы видим, механизм похож рассмотренному в предыдущем примере - номер последовательности делится на 2, и в зависимости от наличия или отсутствия остатка определяется, это четная или нечетная запись. Класс добавляется непосредственно в шаблон. Этот метод универсальнее первого, так, как он может обрабатывать таблицы динамически.

6. Используя PHP систему шаблонов Smarty. Сценарий по сложнее.

{counter assign=k start=0}

{foreach from=$items item=item name=foo}

   {math equation="n % 2" n=$k assign="nth"}

      <tr {if $nth}class="even"{/if}>
         <td>Lorem ipsum dolor sit amet </td>
      </tr>

   {counter}

{/foreach}

В этом случае, номер последовательности инкрементируеться при каждом вызове оператора - counter. Полезно в случаях, когда номер последовательности цикла по какой-то причине не может быть использована. Например, перед созданием HTML записи производиться сравнение (не является запись пустой и т. д.)

Использованные источники:

http://www.smarty.net/
http://www.quirksmode.org/css/nthchild.html

 

» Оцени статю с ластами

(9)

» Статьи по Теме

» Комментарии

Ну молодцы, очередной сайт с тем же примером.

$("tr:even").addClass("even");
а если нужно только к определенной таблице?

$('#tcartid>tbody>tr:even').addClass('even');< br /> так не работает ((((
Alexa 2012-05-19 00:57
Ну молодцы, очередной сайт с тем же примером.

$("tr:even").addClass("even");
а если нужно только к определенной таблице?

$('#tcartid>tbody>tr:even').addClass('even');< br /> так не работает ((((
Alexa 2012-05-19 01:02
* обязательный
* не публицыруется

Поиск
ключевые слова

iinuu on g+

Актуально

MQL4 PHP digg     vimeo youtube     blogs.mail.ru livejournal liveinternet vkontakte facebook twitter