Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Резиновый дизайн (https://javascript.ru/forum/xhtml-html-css/20801-rezinovyjj-dizajjn.html)

debugx 17.08.2011 23:28

Резиновый дизайн
 
Всем привет,
Задача тривиальная.
Есть три дива, идут слева направо: левый сайдбар, див с контентом, правый сайдбар.
Хочу чтобы сайт тянулся на всю область.
Есть вариант задать width для всех трех в процентах, но я не хочу чтобы сайдбары тянулись. Нужно, чтобы сайдбары имели фиксированную ширину.
Например, я задал width для сайдбаров = 200px, как теперь сделать так, чтобы средний див занимал всю область между сайдбарами??
Если поставить ему width=100%, то понятное дело, он занимает всю область контейнера, и всё разъежается.

Octane 18.08.2011 01:17

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>…</title>
	<style>
		body {
			margin: 0;
			min-width: 600px;
		}
		header {
			height: 80px;
			background: #cff;
		}
		.wrapper {
			float: left;
			width: 100%;
			margin-left: -200px;
			background: #fcc;
		}
		.wrapper .inner-wrapper {
			float: right;
			width: 100%;
			margin-left: -400px;
			background: #fcf;
		}
		.wrapper article {
			margin-left: 400px;
			background: #fee;
		}
		.wrapper .sidebar-1 {
			float: left;
			width: 200px;
			margin-left: 200px;
			background: #cfc;
		}
		.sidebar-2 {
			float: right;
			width: 200px;
			background: #ccf;
		}
		footer {
			clear: both;
			height: 80px;
			background: #ffc;
		}
	</style>
</head>
<body>
	<header>header</header>
	<div class="wrapper">
		<div class="inner-wrapper">
			<article>content content content content content content content content content content content content content content content content content content content content content content content content content content content content</article>
		</div>
		<aside class="sidebar-1">sidebar 1</aside>
	</div>
	<aside class="sidebar-2">sidebar 2</aside>
	<footer>footer</footer>
</body>
</html>

devote 18.08.2011 02:17

Я обычно делаю так:
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>…</title>
    <style>
        body {
            margin: 0;
            min-width: 600px;
        }
        .header {
            height: 50px;
            background: #cff;
        }
        .right {
            float: right;
            width: 200px;
            background: #ccf;
        }
        .left {
            width: 200px;
            float: left;
            background: #cfc;
        }
        .wrapper {
            padding: 0 200px 0 200px;
            background: #fcc;
        }
        .content {
            background: #fee;
        }
        .footer {
            height: 50px;
            background: #ffc;
        }
    </style>
</head>
<body>
    <div class="header">Header</div>
    <div class="left">left block</div>
    <div class="right">right block</div>
    <div class="wrapper">
        <div class="content">
         content content content content content content content content content content content content content content content content content content content content content content content content content content content content
        </div>
    </div>
    <div class="footer">Footer</div>
</body>
</html>

Этот метод мне почему то кажется куда приятнее :)

Octane 18.08.2011 04:02

SEOшники загрызут за такое расположение контента ;)

Gozar 18.08.2011 12:21

Цитата:

Сообщение от Octane (Сообщение 121141)
SEOшники загрызут за такое расположение контента ;)

Значение расположения контента не всегда играет роль для поисковиков. А точнее я бы выразился так, после трех месяцев продвижения(не обязательно сеошного) вообще без разницы, контент может быть даже в footer-е.

У вас какие-то злые сеошники. В обоих вариантах грызть особо не за что. На сайте главное контент, а верстка не должна содержать мусор. В теоретическом аспекте твой вариант лучше, на практике зависит от контента.

Посмотреть на эффект применения <aside> и <article> у меня пока что не было возможности. Опять же применение этих тэгов делает место расположение их на странице практически любым, главное чтобы они там были и желательно в одинаковых местах.

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

devote,
Зачем использовать html5 и не использовать его преимущества?

devote 18.08.2011 12:29

Цитата:

Сообщение от Gozar
Зачем использовать html5 и не использовать его преимущества?

Все элементарно, когда исчезнет ИЕ ниже 9-ой версии, вот тогда и можно будет использовать теги HTML5 но щас не вижу смысл его использовать. ИЕ их не понимает, и вместо верстки получается каша.

devote 18.08.2011 12:33

Цитата:

Сообщение от Octane
SEOшники загрызут за такое расположение контента

Всем не угодишь, и это проблемы сеошников... Хотят идеально, пусть пишут сами сайты.. Мы программисты а не исполнители желаний. Любой сайт с любой версткой даже с помойной версткой можно раскрутить и выставить на первые места в поисковиках. И знаю это не по наслышке... Знаком с некоторыми сеошниками, они продвигаю сайты любого типа... Неважна как сверстан. И причем сайты всегда на первых местах... Так что считаю что это глупый аргумент.

И да добавлю, в первую очередь я должен думать как мне заработать больше денег, а не о том как сделать так что бы сеошники их зарабатывали проще и быстрее. Я работаю в первую очередь для себя, и не намерен тратить время на то что бы какой-то сеошник щелкнул двумя пальцами и срубил денег, так как за него сделали всю грязную работу. А он получает сливки... Лично я на позиции программиста... Мой вариант мне нравиться тем, что каждый блок имеет свой отдельный элемент и не привязан к к другому элементу... То-есть любой блок легко отключить, убрать, поместить в другой файл и т.д. ИМХО

Octane 18.08.2011 14:04

Цитата:

Сообщение от devote
Все элементарно, когда исчезнет ИЕ ниже 9-ой версии, вот тогда и можно будет использовать теги HTML5 но щас не вижу смысл его использовать. ИЕ их не понимает, и вместо верстки получается каша.

Для IE7,8 достаточно выполнить простенький скрипт
document.createElement("header");
document.createElement("footer");
document.createElement("aside");
…
и добавить display:block для новых элементов, во всех остальных актуальных браузерах работает без костылей. Конечно для конкретных проектов надо оценивать аудиторию и исходя из этого выбирать используемые технологии, но на многих проектах уже можно использовать HTML5 и забить на пользователей IE<9 с отключенным JavaScript.

Цитата:

Сообщение от devote
Всем не угодишь, и это проблемы сеошников... Хотят идеально, пусть пишут сами сайты.. Мы программисты а не исполнители желаний…

Цитата:

Сообщение от devote
И да добавлю, в первую очередь я должен думать как мне заработать больше денег, а не о том как сделать так что бы сеошники их зарабатывали проще и быстрее…

Делать на "отебитесь" не мой вариант :) Верстальщик не макетонарезочный аппарат, иногда надо думать, как сделать лучше.

Цитата:

Сообщение от Gozar
Мне кажется что оптимизировать нужно там, где есть что оптимизировать. Если заглядывать в будущее, то вариант Octane мне больше нравиться, как минимум по тому, что пользователи увидят сначала Content, а потом всякие меню и рюшечки.

Ну и через media queries для устройств с небольшим дисплеем будет удобно в одну колонку сайт вытянуть.

Gozar 18.08.2011 14:08

Цитата:

Сообщение от devote (Сообщение 121173)
Все элементарно, когда исчезнет ИЕ ниже 9-ой версии, вот тогда и можно будет использовать теги HTML5

Я спрашивал зачем ты используешь такой DOCTYPE, если не собираешься использовать теги html5?
Цитата:

Сообщение от devote (Сообщение 121138)
<!DOCTYPE html>

А вот следующее похоже на полное отсутствие понимания зачем людям сайт и требование к нему:
Цитата:

Сообщение от devote (Сообщение 121174)
Всем не угодишь, и это проблемы сеошников... Хотят идеально, пусть пишут сами сайты..

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

Цитата:

Сообщение от devote (Сообщение 121174)
Знаком с некоторыми сеошниками, они продвигаю сайты любого типа... Неважна как сверстан. И причем сайты всегда на первых местах... Так что считаю что это глупый аргумент.

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

devote 18.08.2011 14:14

Цитата:

Сообщение от Octane
Для IE7,8 достаточно выполнить простенький скрипт

Вот именно, все к этому и идет... Зачем мне пришпандоливать Костыли, если проще сделать так как работает без костылей... Ради сео? Ну флаг им в руки. Хотят отделить блоки, сделают это сами, учитывая то что они и так после программиста там шурую не хило. Лично мне костыли не нужны, и страдать ради СЕО нафиг нужно... Скажу лишь одно, сколько сеошников столько и мнений, ни один сеошник не знает как ведут себя поисковые системы, и все их слова в основном основаны на информации найденной в сети, которую так же пишут те кто понятия не имеет о том как все работает... Так что моя политика такова, хочешь что бы для тебя делали так как надо, пиши стандарты. А не основывайся на том что пишут простые люди.
Цитата:

Сообщение от Octane
Делать на "отебитесь" не мой вариант Верстальщик не макетонарезочный аппарат, иногда надо думать, как сделать лучше.

С этим я соглашусь, я не буду говорить что я верстальщик, я в первую очередь программист и делаю так как удобнее мне а нет так как написал кто-то в блоге.

devote 18.08.2011 14:21

Цитата:

Сообщение от Gozar
Я спрашивал зачем ты используешь такой DOCTYPE, если не собираешься использовать теги html5?

Может просто потому что он проще пишется? :)
Цитата:

Сообщение от Gozar
это ты знаешь лучше всех что нужно заказчику - такой твой подход?

Ну зачем, я делаю так как мне пишут в ТЗ, я не говорю что я лучше знаю как нужно заказчику... Как приподнесли материал таков и получают результат... Если ты программист пишущий сайты, думаю ты в курсе того что как правило ТЗ писать никто не умеет, а тратить время на додумывание того что не описано в ТЗ может вылиться не очень хорошо, либо на тебя начнут выплескивать нервные срывы из-за того что ты сделал лишнее о чем не оговаривалось, либо потратишь время и ничего от этого не получишь... Я много раз обжигался в таких ситуациях, делал все идеально как считал нужным, а в ответ получал оскорбления... Так что по большей части не моя вина в том что пишем так как есть в ТЗ
Цитата:

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

Я и не аргументирую, просто говорю что не слышал жалоб со стороны сеошников в свою сторону. А мне этого достаточно.

devote 18.08.2011 14:50

И на последок добавлю, человек попросил из трех дивов сделать резинку, заметьте не из других тегов а именно из дивов.
Цитата:

Сообщение от debugx
Есть три дива, идут слева направо: левый сайдбар, див с контентом, правый сайдбар.

По вашему мнению я должен требования рассматривать так:
Прикатывает человек жигули в автосалон и говрит почините мне дверь. В автосалоне делают дверь и не ставят на дверь ручку для ее открытия. Приходит заказчик и говорит "как я буду ее открывать?" В ответ получит "Ну вы можете заказать у нас внедрение автооткрытия". Тоесть по сути получается приделать костыль. Как упомянул об этом Octane, не думаю что заказчику это понадобится и/или понравиться. Или другой пример, человек покупает молоко, ему дают его в кружке, говоря о том что так его проще пить... Это не верная логика. Если вам хочется быть идеалистом, ваше право. Я читаю спецификации раз в месяц ища что-то новое, и делаю для себя удобные решения. (Заметим сразу для себя). Которые будут работать в том что есть на сегодняшний день... Если завтра вдруг исчезнет все то что не поддерживает все то новое что есть на данный момент, то буду делать иначе. Но на сегодняшний день и в ближайшие как минимум два года я буду делать так как работает везде. Исключения будут лишь тогда когда об этом будет описано в ТЗ. Так что все мои решения касаются лишь меня и я никоем образом их не навязываю. Мне сегодня удобнее так. Завтра может все измениться, вот тогда и буду думать о других вариантах.

Octane 18.08.2011 14:58

Вообще HTML5 на эту верстку никак не влияет, всего-лишь новые теги, забудем про него.

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

http://habrahabr.ru/blogs/webdev/125247/

devote 18.08.2011 15:14

Цитата:

Сообщение от Octane
Мой вариант лучше тем, что более важная информация заведомо будет находится в начале документа и такой макет удобнее трансформировать.

Ну запустил я твой код сейчас... Если честно, никакой дополнительной трансформации от той что делает мой вариант я не заметил. Идентично оба варианта делают одно и тоже. За исключение одного, при сжатии страницы в твоем варианте, правый блок наезжает поверх левого, в моем варианте, правый блок опускается под левый. Тоесть содержание обоих блоков никуда не теряются.. Так что говорить о том чей лучше а чей нет, можно веками. Я свою точку зрения выразил в постах выше. И напоню еще раз, никому не навязываю. Что по поводу того что контент ниже сайдбаров это опять же смотря для чего, где-то это важно где-то это не важно... Так что не вижу смысла разводить тут сопли и доказывать чей вариант лучше... Напомню сразу я не говорил что мой вариант лучше для всех, я говорил что он лучше для меня. Если тебе Octane, нравиться делать так как делаешь, дело твое личное. Лично я не видел в спецификациях информации о том как лучше. Ибо вся ваша информация построена на писанине в блогах. И она никак не может являться достоверной.

Octane 18.08.2011 15:23

Если вытянуть макет в одну колонку для мобильного браузера, то в твоем варианте пользователю придется долго тереть пальцем по экрану, пока не до скролит до контента, так понятнее?

devote 18.08.2011 15:56

Цитата:

Сообщение от Octane
Если вытянуть макет в одну колонку для мобильного браузера, то в твоем варианте пользователю придется долго тереть пальцем по экрану, пока не до скролит до контента, так понятнее?

Ты вообще читаешь что я пишу или нет? Поясняю, я не заметил того что бы в твоем варианте контент оставался вверху, а сайдбары падали вниз... Сам то хоть запусти свой код... перед тем как говорить что да как... Да и вообще размусоливать это все нет желания... А если нужно будет написать что-то для мобилы, тогда и буду думать как писать для мобилы.

Gozar 18.08.2011 16:04

devote,
Цитата:

Сообщение от Gozar (Сообщение 121169)
пользователи увидят сначала Content, а потом всякие меню и рюшечки.

Этого вполне достаточно, чтобы свести все твои аргументы в НОЛЬ!
Тебе никто ничего не навязывает, не хочешь понимать, гни линию дальше. Ты, кстати, сам не читаешь то, что тебе пишут.

devote 18.08.2011 17:18

Цитата:

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

Не увидел в его решении что бы оно так и было.
Цитата:

Сообщение от Gozar
Ты, кстати, сам не читаешь то, что тебе пишут.

Читаю, и не только читаю, а даже пробую, смотрю, проверяю. И что-то не вижу ничего из того что вы мне говорите. Покажите пример? Вот из того варианта что дал Octane, сделайте что бы при сжатии страницы у меня контент был сверху а рюшечки/менюшечки снизу??? Лично я этого не добился. Поправьте меня, может я что делаю не так.
Цитата:

Сообщение от Gozar
гни линию дальше.

Я не гну линию, а говорю то что вижу. Если я что-то упускаю, ткните меня носом в факты

Gozar 18.08.2011 17:51

Цитата:

Сообщение от devote (Сообщение 121216)
Поправьте меня, может я что делаю не так.

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

devote 18.08.2011 19:01

Цитата:

Сообщение от Gozar
А по большому счету без разницы кто прав.

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

Gozar 18.08.2011 20:16

Цитата:

Сообщение от devote (Сообщение 121227)
Вот и я о том же.

Мы о разном.

Octane 19.08.2011 00:11

Цитата:

Сообщение от devote
Покажите пример? Вот из того варианта что дал Octane, сделайте что бы при сжатии страницы у меня контент был сверху а рюшечки/менюшечки снизу??? Лично я этого не добился. Поправьте меня, может я что делаю не так.

Я писал:
Цитата:

Сообщение от Octane
через media queries для устройств с небольшим дисплеем будет удобно в одну колонку сайт вытянуть

В том коде нет media queries, поэтому ничего и не происходит.

Вот: Screenshot
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>…</title>
<!--[if lt IE 9 ]>
	<script>
	(function ($) {
		$("header");
		$("footer");
		$("article");
		$("section");
		$("aside");
		$("hgroup");
	}(document.createElement));
	</script>
<![endif]-->
	<style>
	header, footer, section, article, aside, hgroup {
		display: block;
	}
	header {
		background: #cff;
	}
	.wrapper {
		background: #fcc;
	}
	.wrapper .inner-wrapper {
		background: #fcf;
	}
	.wrapper article {
		background: #fee;
	}
	.wrapper .sidebar-1 {
		background: #cfc;
	}
	.sidebar-2 {
		background: #ccf;
	}
	footer {
		background: #ffc;
	}
	@media only screen and (min-width: 240px) {

		body {
			margin: 0;
		}
		header {
			height: 80px;
		}
		.wrapper {
			float: left;
			width: 100%;
			margin-left: -200px;
		}
		.wrapper .inner-wrapper {
			float: right;
			width: 100%;
			margin-left: -400px;
		}
		.wrapper article {
			margin-left: 400px;
		}
		.wrapper .sidebar-1 {
			float: left;
			width: 200px;
			margin-left: 200px;
		}
		.sidebar-2 {
			float: right;
			width: 200px;
		}
		footer {
			clear: both;
			height: 80px;
		}

	}
	</style>
</head>
<body>
	<header>header</header>
	<div class="wrapper">
		<div class="inner-wrapper">
			<article>content content content content content content content content content content content content content content content content content content content content content content content content content content content content</article>
		</div>
		<aside class="sidebar-1">sidebar 1</aside>
	</div>
	<aside class="sidebar-2">sidebar 2</aside>
	<footer>footer</footer>
</body>
</html>

devote 19.08.2011 16:35

Цитата:

Сообщение от Octane
Вот: Screenshot

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


Часовой пояс GMT +3, время: 12:15.