Jump to content
  • 0

Верстка табов


Justnewone
 Share

Question

Может кто покажет нагугленое место? Я чего-то никак не могу найти.

Подозреваю, что это непросто, по крайней мере сейчас не знаю как.

задача следующая, табы, сделанные на вложенном списке.

первый уровень - заголовки, сами табы.

второй, собственно представление табов, их содержимое.

пока пришел к единственному решению, но мне не очень нравится, измерять l с помощью JS и назначать для LI отриц. левый маргин.

Иллюстрация

3612473f19a3.png

Link to comment
Share on other sites

Recommended Posts

  • 0

Нужно именно на вложенном списке? А так ваще не катит?

http://psywalker.ru/Forum/Menu/Vkladki/1.html

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

Link to comment
Share on other sites

  • 0

нет Максим =)

такое я бы постеснялся спросить.

Нее, просто смотри, вот тут было дело, я Владу как то раз помогал делать подобную штуку, тут http://htmlbook.ru/ и помню что задача попахивала тем же. Зацени верхнее меню :)

Link to comment
Share on other sites

  • 0

еще вариант сейчас в голову пришел, абсолютное позиционирование, правда придется JS использовать все равно, чтобы потом ниже двигать, ох, несчастье...

Зацени верхнее меню

как раз выше написал, у меня неизвестна высота.

Link to comment
Share on other sites

  • 0

как раз выше написал, у меня неизвестна высота.

А ты попробуй замутить тоже самое, только на релативе, чтобы из потока не выпадать.

p.s. хотя я наверное погнал)

Link to comment
Share on other sites

  • 0

=)

ты попробуй на htmlbook релейтив назначь.

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

Link to comment
Share on other sites

  • 0

Посмотрите тут!

Там, вообще все построено на табах. Несколько уровней вложения.

Если это то, что нужно, напишите, скину прототип.

Оригинальный сайтец, конечно, но не то совсем.

Содержимое таба не вложено по коду внутрь самого таба.

Link to comment
Share on other sites

  • 0

Оригинальный сайтец, конечно, но не то совсем.

Содержимое таба не вложено по коду внутрь самого таба.

Есть у меня на уме одно извращение, не знаю, получится или нет, позже тебе скину вариантик.

Link to comment
Share on other sites

  • 0

Спасибо, я пока тож пытаюсь.

Подробней задачу описать можно? Табы по ширине должны занимать все пространство?

Так точно, по ширине пространство, грубо говоря, самого корневого UL.

Link to comment
Share on other sites

  • 0

А если так:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>tabs</title>
</head>
<body>
<ul class="tab-list">
<li class="tab-holder">
<span class="tab-btn">tab 1</span>
<div class="tab-content">
text
</div>
</li>
<li class="tabholder">
<span class="tab-btn">tab 2</span>
<div class="tab-content">
text
</div>
</li>
</ul>
</body>
</html>

Выбранной лишке класс, через этот класс показываем содержимое таба .tab-content

Улке ( .tab-list ) вверху паддинг, на него абсолютом вешаем .tab-btn

Пойдет?

Фигня конечно что позиционировать то всеравно придется каждый .tab-btn :)

Link to comment
Share on other sites

  • 0

А если так:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>tabs</title>
</head>
<body>
<ul class="tab-list">
<li class="tab-holder">
<span class="tab-btn">tab 1</span>
<div class="tab-content">
text
</div>
</li>
<li class="tabholder">
<span class="tab-btn">tab 2</span>
<div class="tab-content">
text
</div>
</li>
</ul>
</body>
</html>

Вибранной лишке класс, через этот класс показываем содержимое таба .tab-content

Улке ( .tab-list ) вверху паддинг, на него абсолютом вешаем .tab-btn

Пойдет?

Фигня конечно что позиционировать то всеравно придется каждый .tab-btn :)

Да, вот у меня что то подобное в голове крутилось. НО есть проблема, с позиционированием каждого таба.

Link to comment
Share on other sites

  • 0

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

UPD

вот что значит делают профи :)))) все в один вариант, не сговариваясь

Link to comment
Share on other sites

  • 0

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

UPD

вот что значит делают профи :)))) все в один вариант, не сговариваясь

А то! :)

Link to comment
Share on other sites

  • 0

Оригинальный сайтец, конечно, но не то совсем.

Содержимое таба не вложено по коду внутрь самого таба.

Почему не вложено!?

Там так:

1. 2 таба-базы (ul, li, div)

2. В каждом по 12 табов-месяцев (ul, li, div)

3. В каждом из 12 табов, вложены 30(!) табов-дней с конкретной информацией (ul, li, div).

У всех свое позиционирование и даже в IE все работает.

Таких два варианта - горизонтальный и вертикальный, просто на этом сайте только вертикальные используются.

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

Link to comment
Share on other sites

  • 0

Почему не вложено!?

Потому что у Вас так:

<ul class="tabs_a2">
<li>Таб</li>
<li>Таб</li>
<li>Таб</li>
</ul>
<div class="box_a2">Содержимое таба</div>
<div class="box_a2">Содержимое таба</div>
<div class="box_a2">Содержимое таба</div>

А мне надо так:

<ul class="tabs_a2">
<li>Таб
<div class="box_a2">Содержимое таба</div>
</li>
<li>Таб
<div class="box_a2">Содержимое таба</div>
</li>
<li>Таб
<div class="box_a2">Содержимое таба</div>
</li>
<li>Таб
<div class="box_a2">Содержимое таба</div>
</li>
</ul>

UPD

Целый день убил, мой ответ NO.

буду делать с JS

Link to comment
Share on other sites

  • 0

Потому что у Вас так:

<ul class="tabs_a2">
<li>Таб</li>
<li>Таб</li>
<li>Таб</li>
</ul>
<div class="box_a2">Содержимое таба</div>
<div class="box_a2">Содержимое таба</div>
<div class="box_a2">Содержимое таба</div>

А мне надо так:

<ul class="tabs_a2">
<li>Таб
<div class="box_a2">Содержимое таба</div>
</li>
<li>Таб
<div class="box_a2">Содержимое таба</div>
</li>
<li>Таб
<div class="box_a2">Содержимое таба</div>
</li>
<li>Таб
<div class="box_a2">Содержимое таба</div>
</li>
</ul>

UPD

Целый день убил, мой ответ NO.

буду делать с JS

Ну и пральна. Поддерживаю. Изврат тут свеч не стоит.

Link to comment
Share on other sites

  • 0

Только не подайте со стульев от смеха :)

Запутался окончательно, код сырой, может и не так понял задачу, но по вашему "условию" у меня вот что получилось:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Content</title>

<style>
.mytabs {
position: relative;
width: 570px;
height: 300px;
margin-left: 100px;
margin-top: 100px;
border: 2px solid #818181;
}
.tabs {
width: 528px;
height: 298px;
margin-top: 0;
}
.tabs li {
position: relative;
list-style: none;
margin-left: -40px;
display: inline-block;
}
div.tab1, div.tab2,
div.tab3, div.tab4 {
width: 138px;
height: 20px;
background: #ddd;
border: 1px solid #636363;
cursor: pointer;
}
div#content1, div#content2,
div#content3, div#content4 {
position: absolute;
top: 23px;
display: none;
width: 563px;
height: 272px;
border: 1px solid #636363;
}
div.tab1:hover, div.tab2:hover,
div.tab3:hover, div.tab4:hover {
background: #636363;
border: 1px solid #636363;
color: #fff;
}
div.tab1:hover div#content1,
div.tab2:hover div#content2,
div.tab3:hover div#content3,
div.tab4:hover div#content4 {
background: #ddd;
display: block;
}
</style>
</head>

<body>
<div class="mytabs">
<ul class="tabs">
<li>
<div class="tab1" style="margin-left: 2px;">Таб 1
<div id="content1" style="margin-left: 0;">
Содержимое таба 1
</div>
</div>
</li>

<li>
<div class="tab2" style="margin-left: 36px;">Таб 2
<div id="content2" style="margin-left: -143px;">
Содержимое таба 2
</div>
</div>
</li>

<li>
<div class="tab3" style="margin-left: 36px;">Таб 3
<div id="content3" style="margin-left: -284px;">
Содержимое таба3
</div>
</div>
</li>

<li>
<div class="tab4" style="margin-left: 36px;">Таб 4
<div id="content4" style="margin-left: -426px;">
Содержимое таба 4
</div>
</div>
</li>
</ul>
</div>

</body>
</html>

tab.JPG

Обожаю головоломки.... :)

Link to comment
Share on other sites

  • 0

А попробуйте так, вроде работает и без высоты блока "контект" и "митабс":


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Content</title>

<style>
.mytabs {
position: relative;
width: 570px;
//height: 300px;
margin-left: 100px;
margin-top: 100px;
//border: 2px solid #818181;
}
.tabs {
width: 528px;
//height: 298px;
margin-top: 0;
}
.tabs li {
position: relative;
list-style: none;
margin-left: -40px;
display: inline-block;
}
div.tab1, div.tab2,
div.tab3, div.tab4 {
width: 138px;
height: 20px;
background: #ddd;
border: 1px solid #636363;
cursor: pointer;
}
div#content1, div#content2,
div#content3, div#content4 {
position: absolute;
top: 23px;
display: none;
width: 563px;
//height: 272px;
border: 1px solid #636363;
}
div.tab1:hover, div.tab2:hover,
div.tab3:hover, div.tab4:hover {
background: #636363;
border: 1px solid #636363;
color: #fff;
}
div.tab1:hover div#content1,
div.tab2:hover div#content2,
div.tab3:hover div#content3,
div.tab4:hover div#content4 {
background: #ddd;
display: block;
}
</style>
</head>

<body>
<div class="mytabs">
<ul class="tabs">
<li>
<div class="tab1" style="margin-left: 2px;">Таб 1
<div id="content1" style="margin-left: 0;">
Содержимое таба 1<br>
</div>
</div>
</li>

<li>
<div class="tab2" style="margin-left: 36px;">Таб 2
<div id="content2" style="margin-left: -143px;">
Содержимое таба 2<br>
Содержимое таба 2
</div>
</div>
</li>

<li>
<div class="tab3" style="margin-left: 36px;">Таб 3
<div id="content3" style="margin-left: -284px;">
Содержимое таба 3<br>
Содержимое таба 3<br>
Содержимое таба 3
</div>
</div>
</li>

<li>
<div class="tab4" style="margin-left: 36px;">Таб 4
<div id="content4" style="margin-left: -426px;">
Содержимое таба 4<br>
Содержимое таба 4<br>
Содержимое таба 4<br>
Содержимое таба 4
</div>
</div>
</li>
</ul>
</div>

</body>
</html>

tab2.JPG

ЗЫ. Вы, извините, что вмешиваюсь, для меня это просто хобби и все это похоже на ситуацию из анекдота, когда некто, изобрел вечный двигатель, потому что ....не знал, что это невозможно :)

Edited by Aleksty
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy