Jump to content
  • 0

overflow:hidden


kvant
 Share

Question

Есть некоторый код (для примера)


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
</head>
<style>
div {
}
ul {
list-style-type:none;
margin: 0;
padding: 0;
}
li {
float: left;
margin: 3px;
}
</style>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<div>
bla-bla-bla
</div>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</body>
</html>

Посмотреть как работает можно здесь

В этом примере все криво и не так как нужно.

Проблему исправляет overflow: hidden для элемента ul. См. Посмотреть как работает можно здесь

Хотелось бы понять как все это работает. Почему без overflow все криво, а с ним нормально?

Насколько вообще корректен этот код, может можно сделать проще?

Link to comment
Share on other sites

  • Answers 51
  • Created
  • Last Reply

Top Posters For This Question

Top Posters For This Question

Recommended Posts

  • 0

и жирным минусом в виде значащих пробелов между тегами.

Хорошо, а как ты смотришь на такой выход?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Inline-block</title>
<style type="text/css">
* { margin: 0; padding: 0;}
.vegetables {
letter-spacing: -3px;
font-size: 0;

}
.vegetables li {
display: inline-block;
vertical-align: top;
background: red;
letter-spacing: 0;
font-size: 12px;

}
</style>
</head>

<body>

<ul class="vegetables">
<li><a href="#">и жирным минусом в виде значащих пробелов между тегами. </a></li>
<li><a href="#">и жирным минусом в виде значащих пробелов между тегами. </a></li>
<li><a href="#">и жирным минусом в виде значащих пробелов между тегами. </a></li>
<li><a href="#">и жирным минусом в виде значащих пробелов между тегами. </a></li>
<li><a href="#">и жирным минусом в виде значащих пробелов между тегами. </a></li>
</ul>

</body>
</html>

ПРоблема будет в ИЕ6-7, надо дисплей инлайн и зум дописать.

Это не проблема. Показывать, как пишется?

Link to comment
Share on other sites

  • 0

Хорошо, а как ты смотришь на такой выход?

Это не выход, т.к. ширина пробела и расстояние между символами может отличаться в разных браузерах даже под одной ОС. Например в сафари под виндами точка съедается. В той же убунте, данный пример не проверяла, но эти расстояния обычно больше.

Link to comment
Share on other sites

  • 0

Это не выход, т.к. ширина пробела и расстояние между символами может отличаться в разных браузерах даже под одной ОС. Например в сафари под виндами точка съедается. В той же убунте, данный пример не проверяла, но эти расстояния обычно больше.

Для этого всегда есть отличное средство. Масштабируемые единицы, такие например как em

Link to comment
Share on other sites

  • 0

При небольшом контенте или маленькой ширине блоки встают в ряд, а не друг под другом как в нормальном потоке ;)

Извини, тогда я не очень понял задачу. Ведь ты же сама написала:

Блоки должны быть друг под другом. Но при небольшом контенте блоки могут встать на одну строку.
Link to comment
Share on other sites

  • 0

Извини, тогда я не очень понял задачу. Ведь ты же сама написала:

Да, наверное, я неточно сформулировала. Имелось ввиду, что это минус inline-block, то что блоки могут встать в один ряд тогда, когда это совсем не нужно ;)

Link to comment
Share on other sites

  • 0

Да, наверное, я неточно сформулировала. Имелось ввиду, что это минус inline-block, то что блоки могут встать в один ряд тогда, когда это совсем не нужно ;)

А с float разве не аналогично? :)

Link to comment
Share on other sites

  • 0
как ты смотришь на такой выход?

Лично я — отрицательно (по тем же причинам, что озвучила sigma77 — никогда не скажешь наверняка, что у конкретного пользователя пробел будет точно 5px или точно .333em). Как и на обнуление font-size контейнеру с последующим выставлением его потомкам (в каких-то браузерах, не помню точно в каких, при этом оставались однопиксельные разрывы), хотя при фиксированном шрифте это чуть ближе к делу. На мой взгляд, единственное реальное решение — честно убрать эти пробелы, остальное — костыли. Но тогда приходится идти на компромиссы в плане читаемости кода.

В частном случае списков можно воспользоваться преимуществом опциональных закрывающих тегов, при этом тоже пробелов не будет ;)

А с float разве не аналогично?

Почти аналогично в плане поведения самих блоков, не аналогично в плане влияния на внешний контейнер этих блоков (inline-блоки хотя бы сами не требуют clear-ить контейнер). Поэтому, сугубо имхо, inline-block всё-таки чуточку лучше. Но лишь самую чуточку :)

Link to comment
Share on other sites

  • 0

Да чего там показывать? Просто не закрывать <li> явно... ;)

<ul>
<li>
<h3>Inline-block</h3>
<p>Удобная вещь, но с нюансами.</p>
<li>
<h3>Float</h3>
<p>Старый проверенный метод, но требует подпорок.</p>
<li>
<h3>Table/table-cell</h3>
<p>Блок никуда не убежит, но ширина тоже может скукожиться.</p>
</ul>

Link to comment
Share on other sites

  • 0

Да чего там показывать? Просто не закрывать <li> явно... ;)

<ul>
<li>
<h3>Inline-block</h3>
<p>Удобная вещь, но с нюансами.</p>
<li>
<h3>Float</h3>
<p>Старый проверенный метод, но требует подпорок.</p>
<li>
<h3>Table/table-cell</h3>
<p>Блок никуда не убежит, но ширина тоже может скукожиться.</p>
</ul>

Но это же неправильно с точки зрения семантики и вообще ведь может нести в себе минусы, так?

Link to comment
Share on other sites

  • 0

Неправильно только с точки зрения синтаксиса XML, поэтому неприменимо в XHTML (настоящем). Семантике пофигу (в чем-то даже чуточку лучше — меньше незначащей разметки), браузерам, при типе контента text/html, тоже. Плюс единообразие с IE7- (он закрывающие </li> в любом случае игнорирует). Практических минусов, честно говоря, не вижу...

Link to comment
Share on other sites

  • 0

Неправильно только с точки зрения синтаксиса XML, поэтому неприменимо в XHTML (настоящем). Семантике пофигу (в чем-то даже чуточку лучше — меньше незначащей разметки), браузерам, при типе контента text/html, тоже. Плюс единообразие с IE7- (он закрывающие </li> в любом случае игнорирует). Практических минусов, честно говоря, не вижу...

Да, но например цмс гинерит код, он же всегда с закрывающими тегами.

Хотя я, конечно, осторожно и с опаской, какгрица...

И я)

Link to comment
Share on other sites

  • 0
цмс гинерит код, он же всегда с закрывающими тегами

У уважающих себя ЦМС, по-моему, бывает опция "выдавать генерируемый код в одну строку для экономии трафика и вообще". Если речь о собственном шаблоне, его тоже всегда можно подправить, чтобы элементы шли подряд без зазоров. При автоматической генерации, имхо, проблема как раз менее актуальна.

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

Link to comment
Share on other sites

  • 0

У уважающих себя ЦМС, по-моему, бывает опция "выдавать генерируемый код в одну строку для экономии трафика и вообще". Если речь о собственном шаблоне, его тоже всегда можно подправить, чтобы элементы шли подряд без зазоров. При автоматической генерации, имхо, проблема как раз менее актуальна.

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

Согласен. Тогда выходит всё упирается в доктайп?

Link to comment
Share on other sites

  • 0

У уважающих себя ЦМС, по-моему, бывает опция "выдавать генерируемый код в одну строку для экономии трафика и вообще". Если речь о собственном шаблоне, его тоже всегда можно подправить, чтобы элементы шли подряд без зазоров. При автоматической генерации, имхо, проблема как раз менее актуальна.

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

Можно подробней?

Как это проявилось? Типа после инлайна не было пробела или чеаще? ;)

Link to comment
Share on other sites

  • 0
выходит всё упирается в доктайп?

С точки зрения валидации — да. С точки зрения браузеров — скорее, в mime-тип. Это же закреплено в новом "живом стандарте": при text/html любой доктайп должен парситься по правилам HTML5 с опциональными тегами, при что-то/что-то+xml — любой доктайп, хоть никакого, парсится как XML.

Как это проявилось?

Меня ткнули носом на Хабре. Я долго не верил...

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