Jump to content
  • 0

3 равных по ширине блока


brainiac
 Share

Question

Скажите, а как разместить 3 DIV'a по всей ширине страницы, при этом у всех них должна быть равная ширина?

Можно, конечно, написать для каждого width: 33%. Но тогда останется 1%. Есть ли какой-то красивый способ?

Link to comment
Share on other sites

Recommended Posts

  • 0
Скажите, а как разместить 3 DIV'a по всей ширине страницы, при этом у всех них должна быть равная ширина?

Можно, конечно, написать для каждого width: 33%. Но тогда останется 1%. Есть ли какой-то красивый способ?

Написать для одного div'a ширину 34%

Link to comment
Share on other sites

  • 0

psywalker,

Колись давай уже, куда копать. ^_^

Пока единственный кросс, что приходит в голову - это сделать таблицей с table-layout: fixed;

Upd. Хотя, кажется, нашла решения без использования таблиц, точнее не для всех браузеров они используются ;)

Edited by sigma77
Link to comment
Share on other sites

  • 0

Измеряйте ^_^

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Классы 4</title>
<style type="text/css">
*{ margin: 0; padding: 0;}
.left,.right { float: left; width: 33.333%; background: blue;}
.right { float: right;}
.content { overflow: hidden; background: red;}
</style>
</head>

<body>
<div class="left">Left</div>
<div class="right">Right</div>
<div class="content">Content</div>

</body>
</html>

Link to comment
Share on other sites

  • 0

psywalker,

Можно и так. Но в Опере ширина контента будет немного шире. При ширине экрана 1280 разница составляет 13px, если увеличить до 2048, разница уже 22px.Насколько это критично... ну не знаю. Тоже думала об этом варианте, но именно из-за некорректной обработки Оперой дробных значений от него отказалась. У меня погрешность 1px, но код немного длиннее.

Link to comment
Share on other sites

  • 0
psywalker,

Можно и так. Но в Опере ширина контента будет немного шире. При ширине экрана 1280 разница составляет 13px, если увеличить до 2048, разница уже 22px.Насколько это критично... ну не знаю. Тоже думала об этом варианте, но именно из-за некорректной обработки Оперой дробных значений от него отказалась. У меня погрешность 1px, но код немного длиннее.

С оперой ничего не попишешь. Так что показывай свой вариант ^_^

Link to comment
Share on other sites

  • 0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<style type="text/css">
* {padding: 0; margin: 0;}
div.table {display: table; width: 100%; table-layout: fixed;}
div.td {display: table-cell;}
</style>
</head>
<body>

<div class="table">
<!--[if lte IE 7]>
<table style="width: 100%; border-collapse: collapse; table-layout: fixed;">
<tr>
<td style="background: red; vertical-align: top"><![endif]-->
<div class="td" style="background: red;"><p>Lorem ipsum dolor.</p></div>
<!--[if lte IE 7]></td><![endif]-->
<!--[if lte IE 7]><td style="background: yellow; vertical-align: top""><![endif]-->
<div class="td" style="background: yellow;"><p>Lorem ipsum dolor sit amet consectetuer ante dui auctor non ut. Pellentesque pellentesque libero mauris id non non nec semper egestas ac. Mauris quis felis laoreet hendrerit quam Morbi Phasellus In Vestibulum in. Felis laoreet Aliquam Vivamus rhoncus id et urna nec et Nam. Turpis augue quis senectus elit.</p></div>
<!--[if lte IE 7]></td><![endif]-->
<!--[if lte IE 7]><td style="background: green; vertical-align: top""><![endif]-->
<div class="td" style="background: green;"><p>Lorem ipsum dolor sit amet consectetuer libero quis turpis id velit. Tortor justo In non pretium pretium consequat Maecenas libero Nulla at. Metus sagittis justo congue Sed condimentum laoreet Nulla Donec velit Sed. A eleifend id elit eu Phasellus velit interdum.</p></div>
<!--[if lte IE 7]></td></tr></table><![endif]-->
</div>
</body>
</html>

Edited by sigma77
Link to comment
Share on other sites

  • 0

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

Можно расслабиться и оставить только таблицу -) При том, что у нее table-layout: fixed, прогрессивный рендеринг у нас возможен, и не остается никаких преимуществ у варианта без талиц, кроме идеологического.

Ну это если не планируется сложную версию для печати делать.

Link to comment
Share on other sites

  • 0
Тогда они будут не равные по ширине.

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<title>An XHTML 1.0 Strict standard template</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />

<style type="text/css">
* {
margin: 0;
padding: 0;
font: 14px Arial, Tahoma, Verdana, sans-serif;
}

body {
margin: 10px;
}

table {
width: 100%;
border-collapse: collapse;
border-spacing: 0;
border: 0;
}

.td1 {
background: red;
}

.td2 {
background: green;
}

.td3 {
background: blue;
}
</style>

<script type="text/javascript">

</script>
</head>

<body>

<table cellspacing="0">
<tbody>
<tr>
<td class="td1">1</td>
<td class="td2">2</td>
<td class="td3">3</td>
</tr>
</tbody>
</table>

</body>
</html>

Link to comment
Share on other sites

  • 0

Great Rash,

Твой пример рабочий лишь до тех пор пока содержимое всех ячеек одинаково. Чтобы все ячейки были одинаковой ширины при разном содержимом добавь table-layout: fixed

Да и выше я уже писала, что можно сделать таблицами. Но дивами всё-таки кошернее ^_^

Edited by sigma77
Link to comment
Share on other sites

  • 0
Чтобы все ячейки были одинаковой ширины при разном содержимом добавь table-layout: fixed

Это все я знаю. Не в этом дело, я просто хотел показать, что абсолютно одинаковых блоков не добиться. Потому что 100 на 3 ну никак не делится без остатка.

Link to comment
Share on other sites

  • 0
Это все я знаю. Не в этом дело, я просто хотел показать, что абсолютно одинаковых блоков не добиться. Потому что 100 на 3 ну никак не делится без остатка.

Кстати тоже самое хотел сказать, что как бы кто ни пытался, а 100/3 не удастся)

Link to comment
Share on other sites

  • 0
А таблице удастся :-)

Нет, разница будет в 1 пиксель. Мерял в фотошопе.

зато есть отступы с обоих сторон по 5 и вау... 90 уже теперь делится на 3!

Лучше уж тогда по 0.5%, и тогда 99 тоже будет делиться.

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