Нужна помощь: Tabs на dl dt dd
Вложений: 1
Посмотрел реализацию Tabs на Ul li -http://www.linkexchanger.su/2009/99.html
Мне кажется что с семантической точки зрения данный список неверно испльзуется - задавать заголовки табов в отдельном списке - как-то некошерно Мне кажется наиболее подходящим в данном случае будет использование <dl> <dt>Первая закладка</dt> <dd><p>Содержимое первой закладки</p></dd> <dt>Вторая закладка</dt> <dd><p>Содержимое второй закладки</p></dd> </dl> Встает лишь вопрос создание css для реализации Tabs как на прилагаемой картинке Кто может - подскажите реализацию css для такого табс |
wwwboy, попробуй так, сам не делал, но по идее должно сработать.
Для DL задаешь position: relativ, absolut или fixed. Для всех DT - float: left. Для всех DD - display: none и position: absolut. И координаты для позиционированных DD задаешь, чтобы они друг под другом были (стопкой лежали). По клику в ссылке указанной в определенном DT с помощью JavaScript меняешь в соответствующем DD display на значение block. Как вариант, можно попробовать вместо display использовать z-index и просто его зачение менять, ставя нужный слой наверх. |
Да, помоему все верно, только position: absolute тут создаст проблему. лучше display: none; для всех кроме активного tab-sheet'а. Или z-index. Кстати, если tab-sheet'ы проименованы(имеют айдишники) то можно для полного счастья прописать dd:target{display: block;} Тогда будет работать даже с отключенным js :)
|
Цитата:
первый раз такое вижу |
|
Что вы все так рветесь UI использовать, 5 минут не можете потратить чтобы самим эти табы написать?
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<style type="text/css">
#tabs {margin: 0px auto;overflow: hidden;width: 204px;}
#tabs div {border-left: 1px solid #DDD;overflow: hidden;width: 205px;height: 22px;}
div a {display: block;float: left;width: 48px;border: 1px solid #DDD;border-left: none;text-align: center;text-decoration: none;}
div a:hover {background: #FBFBFB;}
ul {display: block;margin: 0px;padding: 0px;width: auto;height: auto;}
li {border: 1px solid #DDD;border-top: none;display: none;float: left;list-style-type: none;width: 195px;height: 50px;}
.display, .first {background: #EBFAFE;display: block;}
</style>
<script type="text/javascript">
$(function(){
$('div a').each(function(i){
$(this).click(function(){
$(this).toggleClass('display').siblings().removeClass('display first');
$('ul').each(function(){
$(this).find('li:eq('+i+')').toggleClass('display').siblings().removeClass('display first');
});
});
});
});
</script>
<div id="tabs">
<div>
<a class="first" href="#">1</a><a href="#">2</a><a href="#">3</a><a href="#">4</a>
</div>
<ul>
<li class="first">#text_tab_1</li><li>#text_tab_2</li><li>#text_tab_3</li><li>#text_tab_4</li>
</ul>
</div>
|
в одном проекте использовал, не помню где нашел:
$('ul.tabs').delegate('li:not(.current)', 'click', function() {
$(this).addClass('current').siblings().removeClass('current')
.parents('div.tab-container').find('div.box').hide().eq($(this).index()).show();
});
В сотни(или мож тыщи) раз меньше чем ui tabs)) |
Цитата:
|
Цитата:
|
Цитата:
Элемент <div/> не имеет никакого отношения к <li/>, за исключением того что он является родительским для элементов <a/>, которые в свою очередь имеют прямое отношение к <li/>. Часто встречающиеся структуры для табов и пр. меню. 1.
<div>
<ul>
<div>
<a></a>
</div>
<li></li>
</ul>
</div>
2.
<div>
<ul>
<li>
<div>
<a></a>
</div>
</li>
<li>
<ul>
<li></li>
</ul>
</li>
</ul>
</div>
и теперь моя структура:
<div id="#">
<div>
<a></a> - каждый элемент 'a' соответствует элементу 'li'
<div>
<ul>
<li></li>
</ul>
</div>
Что в ней нелогичного, то разве она не прозрачней или семантически не связана? Если вас смущает что элементы а не являются дочерними 'ul', то переместите их туда, в чем проблема? |
| Часовой пояс GMT +3, время: 09:25. |