Модераторы: Illuminaty
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сочетание в одном <div> текст и список, неверные отступы у текста после списка  
V
    Опции темы
Qwesa
Дата 14.2.2010, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 9.10.2007

Репутация: нет
Всего: нет



Сочетание в одном диве текст и список: Есть див-коробка, в котором идут:
Текст:
список пунктов
Текст:
список пунктов
Текст:
список пунктов
Код

<div id="content"><h2 class="if">Текст</h2>
        <ul class="os1">
         <li><a href="#">пунктов</a></li>
         <li><a href="#">пунктов</a></li>
         <li><a href="#">пунктов</a></li>
         <li><a href="#">пунктов</a></li>
                </ul><h2 class="if">Текст2</h2>
        <ul class="os1">
         <li><a href="#">пунктов</a></li>
         <li><a href="#">пунктов</a></li>
         <li><a href="#">пунктов</a></li>
         <li><a href="#">пунктов</a></li>
                </ul><h2 class="if">Текст3</h2>
        <ul class="os1">
         <li><a href="#">пунктов</a></li>
         <li><a href="#">пунктов</a></li>
         <li><a href="#">пунктов</a></li>
         <li><a href="#">пунктов</a></li>
                </ul>

Код

#content
{ width: 600px; height: 100%; margin: 0; float: left; }

.os1 li
{ text-align: left; float: left; width: 90px; height: 10px;
  padding: 3px 20px 3px 20px; margin: 5px; }

h2.if
{margin: 20px; text-align: center;}


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

Пробовал через <span>, не вышло, и даже отделял Тексты в отдельные <div>, но результат не изменился. Я так и не смог добиться чтоб между списками и следующими за ними текстом, был нормальный отступ. Подскажите на что обратить внимание и где поправить.
PM MAIL   Вверх
SelenIT
Дата 14.2.2010, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 97
Всего: 401



Имхо, проще всего — добавить заголовкам clear:left (или clear:both, на всякий случай). Дело в том, что float-ы не влияют на высоту своего контейнера (в данном случае ul) и она оказывается нулевой, а clear должен гарантировать то, что заголовок пойдет после float-ов.

Другие варианты — отдельный контекст форматирования для .osl (проще всего -- с помощью overflow:hidden, ну и zoom:1 для IE6-7) либо вообще отказаться от float для li в пользу display: inline-block (правда, для этого придется убрать пробелы между соседними тегами </li><li>).


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Qwesa
Дата 14.2.2010, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 9.10.2007

Репутация: нет
Всего: нет



при добавление clear:both или лефт в CSS ничего ровным образом не меняется
Код

#content
{ width: 600px; height: 100%; margin: 0; float: left; }
.os1 li
{ text-align: left; float: left; width: 90px; height: 10px;
  padding: 3px 20px 3px 20px; margin: 5px; }
h2.if
{margin: 20px; text-align: center; clear:both}



А по поводу других шаманств((, если честно хотелось бы сделать все как можно проще пусть и даже приметивней. Я очень не люблю шаманить с всякими хаками для разных браузеров.
PM MAIL   Вверх
Alex103
Дата 19.2.2010, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: нет
Всего: нет



Ваши основные проблемы:
1. Стили пишите в столбик - меньше путаницы;
2. Установите WebDeveloper или еще что-нибудь подобное для просмотра границ эл-тов;
3. height: 10px; - нарушает все Ваши padding, обратите внимание;
4. Если делается такого рода обтекание то необходимо список тоже обтекать слева или как правильно определил SelenIT - задать высоту. С другой стороны можно сделать обтекание всех элементов, это же ведь блоки.
5. margin-ы заголовка справа и слева лучше заменить padding-ами, если это необходимо, иначе будет проблемы с расчетом ширины в ИЕ.
Вот пример:
Код

#content{ 
    width: 800px; 
    height: 100%; 
    float: left;
}
.os1{
    float:left;
    width:100%;
}
.os1 li{
    text-align: left; 
    float: left; 
    width: 90px; 
    padding: 3px 20px 3px 20px; 
    margin: 5px; 

}

h2.if{
    margin-top:20px;
    margin-bottom:20px;
    margin-left:20px;
    margin-right:20px;
    text-align: center;
    float:left;
    width:100%;

}



Это сообщение отредактировал(а) Alex103 - 19.2.2010, 01:44


--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
Qwesa
Дата 24.2.2010, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 9.10.2007

Репутация: нет
Всего: нет



большое спасибо, но я решил все поросто - для каждого заголовка и списка сделал свой див. так проще и понятней.
PM MAIL   Вверх
vened
Дата 3.3.2010, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Не правильно вы решили свою проблему.
Она в действительности решается очень просто, всего навсего вам нужно сделать список инлайнблоком
Код

.os1{display: inline-block}

и проблема решится

Есть ещё одно решение, может пригодиться в других случаях
Код

.os1:after{content: '.';display: block;clear:both;visibility: hidden;height:0;font-size:0;}

и для любимого IE прописываем
Код

.os1{zoom:1}


P.S.: правильно делаете что пишите css код в строчку а не в столбик, в строчку гораздо удобнее, это с первого взгляда код кажется не удобным и не читаемым, а дело обстоит совсем наоброт, ещё бы рекомендовал записывать свойства в определённом порядке, тогда дальнейшая поддержка кода очень упрощается.
Плюс такого оформления ещё в оптимизации размера css файла, например у меня на одном проекте он весит 250kb, оформлен в строку, в столбик было бы все 300-350. Ещё пример - если css код хабра переписать в таком стиле, размер его снижается на 30-35%.

Это сообщение отредактировал(а) vened - 3.3.2010, 00:58
PM MAIL   Вверх
Violator
Дата 3.3.2010, 04:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 10.1.2009

Репутация: 15
Всего: 15



vened
впринципе в посте SelenIT и так все уже сказано, единственное что можно добавить, так это то что пробелы между соседними li не обязательно убирать, можно обнулить font-size для .osl и вернуть его для .osl li, правда хром оставит 1px разрыв, который в свою очередь можно убрать с помощью letter-spacing: -1px
Код

.osl {
...
font-size: 0;
letter-spacing: -1px;
...
}
.osl li {
...
font-size: 12px;
letter-spacing: normal;
...
}


PS а что касается ксс, то лучше записывать код столбиком, удобнее читать, а для оптимизации существует CSSTidy
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Вёрстка веб-сайтов | Следующая тема »


 




[ Время генерации скрипта: 0.0698 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.