2 слоя на одном уровне

berkut

Новичок
2 слоя на одном уровне

подскажите как разместить 2 слоя на одном уровне друг с другом.
Код:
<style type="text/css">
.menu {
	width: 90px;
	padding-left: 45px;
	background-color: red;
}
.menu div {
	background-color: blue;
}
#marker {
	width: 23px;
	margin: 0 0 0 -27px;
	background-color: green;
}
</style>
<table width="200" border="1">
    <tr>
        <td>
		<div class="menu">
			<div id="marker">-></div><div>menu's item</div>
		</div>
	</td>
    </tr>
</table>
как #marker разместить на том-же уровне, что и "menu item"?
 

@ndrey

Новичок
соседняя ветка :) - float:left. или какие-то проблемы с кроссбраузерностью?
 

berkut

Новичок
указываю в .menu div float: left - в опере, фоксе - нормально,, в ie - становятся на один уровень, но <div id="marker"> выходит за пределы таблицы слева
 

@ndrey

Новичок
надо чтобы зеленое и синее было на одном уровне и закрывали красное? чтобы красное не выходило, так?
...float:left пихать в #marker
 

berkut

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

berkut

Новичок
>>float:left пихать в #marker
всё тоже-самое. в ие див маркер уходит за таблицу
 

@ndrey

Новичок
>>float:left пихать в #marker всё тоже-самое. в ие див маркер уходит за таблицу
вобщем 6-ки нет, чтобы проверить, возможно где-то паддинг или маргин кривой. к сожалению практически не бывает такого - один стиль и работает во всех браузерах, если проблема в 6-ке и в маргинах с паддингами, то можно применить небольшой хак, который будет виден только 6-ке: "_padding".
но вообще вся "философия" float очень хорошо изложена у Сагалаева.. ссылку я приводил в соседнем топике.
 

pitbull

Новичок
Сам чаще всего использую
Код:
<!--[if IE 6]>
Special instructions for IE 6 here
<![endif]-->
Отсюда http://www.quirksmode.org/css/condcom.html
Хотя их море.
 

berkut

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

alekciy

Новичок
Автор оригинала: berkut
надо зелёное и синие на одном уровне. на крсаное наплевать, главное, что-бы синее никуда не сдвигалось.
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
 <style type="text/css">
.menu {
  	width: 90px;
  	padding-left: 45px;
  	background-color: red;
}
.menu div {
  	background-color: blue;
  	float:left
}
 #marker  {
  	width: 23px;
  	margin: 0 0 0 -27px;
  	background-color: green;
  	float:left
 }
</style>
</head>
<body>
  <table width="200" border="1">
      <tr>
          <td>
  		<div class="menu">
  			<div id="marker">-></div><div>menu's item</div>
  		</div>
  	</td>
      </tr>
  </table>
 </body>
</html>
В IE6 работает 100%.

-~{}~ 17.10.07 04:10:

Автор оригинала: berkut
так вёрстаю ещё. вариант с дивами удалил безвозвратно
"Жители Виллариба все еще верстают дивами, а жители Виллабаджиое давно уже сверстали таблицами и еб**ат друг друга в кваку" (с) :D
Да?
 

berkut

Новичок
alekciy не работает в ie6. синий слой растягивается по высоте на 2 строки, текст "menu's item" занимает 2 строки.
в опере и ff всё нормально.

да я так и не понимаю, в чём фишка верстать только дивами
 

@ndrey

Новичок
да я так и не понимаю, в чём фишка верстать только дивами
дивы против таблиц - http://weblancer.net/articles/3.html, как одно из мнений.
По большому счету, имхо, дело сугубо личных предпочтений - конечному пользователю наплевать как у вас сверстано, ему главное чтобы работало.
Для себя давно решил - дивы, т.к. лаконичнее, элегантней...и самое удивительное - просто. А таблицы только там где нужен вывод табличной информации.
 

pitbull

Новичок
berkut, скорее всего проблема в следующем была...
<!--[if IE 6]> работает только в коде html, т.е. если подключать файл стилей в котором сие прописано работать не будет.
Тогда нужно сделать так:
Код:
Подключили внешний css файл
<!--[if IE 6]>
Подключили внешний css файл с поправками для IE
<![endif]-->
 

berkut

Новичок
pitbull дык не совсем балбес я, знаю что хтмл комментарии в таблице стилей не допустимы. я также делал проверку в блоке if - ставил цветастый фон - в ие этот условный блок отрабатывался 100%, но ничерта не работало как нужно: маркер распологался выше item
 

alekciy

Новичок
Автор оригинала: berkut
alekciy не работает в ie6. синий слой растягивается по высоте на 2 строки, текст "menu's item" занимает 2 строки.
в опере и ff всё нормально.
Ну насчет количества строк ты ни чего не говорил ;)

Для вида со строками нужно изменить шапку:
Код:
<!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">
...
 

berkut

Новичок
alekciy
Ну насчет количества строк ты ни чего не говорил
я так думаю, что априори считается, что во всех браузерах должно выглядеть одинаково. а тот пример 1 и 2 строки соответственно в ff и ie.

со вторым объявлением получается всё тоже самое, что и при варианте @ndrey. в ie маркер уходит за границы ячейки таблицы
 

alekciy

Новичок
Автор оригинала: berkut
alekciy

я так думаю, что априори считается, что во всех браузерах должно выглядеть одинаково.
Уже по определению априорно так считать не может. Без всякой априорики сходим из словестой постановки задачи и/или ТЗ.

Автор оригинала: berkut
а тот пример 1 и 2 строки соответственно в ff и ie.
А причина тут простая. Просто у каждого браузера по умолчанию свой размер шрифта. Свое вычисляемое значение оного. В IE он просто крупнее, чем в FF. К примеру вышеприведенный код на работе в IE6 (моник 1200*1024) дает одну строку, а дома тот же IE6 уже на монике в 1024*768 дает уже 2 строки. Поставь для меню 50px и получишь во всех браузерах двустрочье. Так что тут в принципе и аппелировать к CSS2 спеце бессмыслено.

Автор оригинала: berkut
со вторым объявлением получается всё тоже самое, что и при варианте @ndrey. в ie маркер уходит за границы ячейки таблицы
Ну это конечно IE как обычно "фичует". Но кто сказал, что нет обходных путей? Ведь как я понимаю не обязательно разверстывать именно как у тебя. Нам ведь нужно ехать, а не шашечки.

Например такой вариант, к тому же валидный:
Код:
<!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>

<title></title>
<style type="text/css">
.menu {
  	width: 100px;
  	padding-left: 45px;
  	background-color: red;
  	border: 1px solid silver;
}
.menu div {
  	background-color: blue;
  	margin: 0 0 0 -27px;
}
#marker  {
  	width: 23px;
  	background-color: green;
  	float:left;
  	margin: 0;
}
</style>
</head>

<body>
  <table style="width:200px;border:1px solid #000">
      <tr>
          <td>
  		<div class="menu"><div><div id="marker">-></div>menu's item</div></div>
  	</td>
      </tr>
  </table>
</body>

</html>
смотриться одинаково везде.
 
Сверху