Jump to content
  • 0

Внешний блок с Float тянется на всю ширину, ИЕ6,7


TonKhaO
 Share

Question

Есть такой урл http://kirtour.undersite.ru/, там есть менюха верхняя со странами ЯПОНИЯ, АВСТРАЛИЯ и т.д.

Есть внешний блок .whole_div в котором находятся 3 дива, два из них отфлоачены по бокам (.left_div и .right_div), а третий тянущийся посерединке (.center_div), сам внешний блок тоже отфлоачен слева, в 6 и 7 версиях ИЕ, почему то как бы не работают, при флоатах же обычно если не указавать ширину то блок тянется по контенту, а тут .whole_div ведет себя словно флоата то у него нет ) хм, впервые на такое наткнулся, кто нить знает? ;)

wrong_float.jpg

Link to comment
Share on other sites

Recommended Posts

  • 0
1) Ты скоро с таким успехом экспертом станешь по ИЕ, будешь уже нам чудеса ИЕ объяснять :)

это ты меня явно подколол ;) я боюсь до такого мне еще далеко поэтому пока у вас учусь :)

2) Зум пробовал? (Я видел, так все спрашивают)

да, прозумил все внешние и даж дочерние блоки, все в зуме :D

вот кортинго нарисовал чтобы попонятней было ))) сори но я не пикассо )

wrong_float2.jpg

Edited by TonKhaO
Link to comment
Share on other sites

  • 0

Все очень просто, и даже логично.

center_div - дисплей блок =)

Нельзя блочное вставлять в строчное в IE.

потому что строчное, получившее haslayout станочится уже не совсем строчным )))

Вобщем, center_div дисплей инлайн с зумом и далее разруливаем.

Link to comment
Share on other sites

  • 0
Так, а нахрена ты отступы этому блоку прописал?

div.center_div {

margin-left:17px;

margin-right:17px;

Вместо них повесь оверфлуху и зум

так у меня .center_div тянется по идее, а блоки .left_div и .right_div с гифными картинками у которых бока прозрачные, если уберу маргины то получается .center_div растянется на всю ширину и его фон перекроет прозрачные гифы с уголками ;)

Все очень просто, и даже логично.

center_div - дисплей блок =)

Нельзя блочное вставлять в строчное в IE.

потому что строчное, получившее haslayout станочится уже не совсем строчным )))

Вобщем, center_div дисплей инлайн с зумом и далее разруливаем.

так народ понял один для ся непонятный момент, DIV по умолчанию без каких либо CSS атрибутов имеет display: block или display: inline?судя по тому что происходит перенос строки при просто <div></div> то наверное block?

и еще непонятен момент, ты говоришь поставить .center_div на display: inline НО ведь тада он потеряет свою тенучесть разве не так?

Edited by TonKhaO
Link to comment
Share on other sites

  • 0
Все очень просто, и даже логично.

center_div - дисплей блок =)

Нельзя блочное вставлять в строчное в IE.

потому что строчное, получившее haslayout станочится уже не совсем строчным )))

Вобщем, center_div дисплей инлайн с зумом и далее разруливаем.

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

ТС - меню надо делать на списках, а не как ты. Переделай на UL, сделай как тут например http://psywalker.ru/Portfolio/Joom/main-page.html

Link to comment
Share on other sites

  • 0
так народ понял один для ся непонятный момент, DIV по умолчанию без каких либо CSS атрибутов имеет display: block или display: inline?

и еще непонятен момент, ты говоришь поставить .center_div на display: inline НО ведь тада он потеряет свою тенучесть разве не так?

Див по дефольту имеет блок, именно это демонстрирует .center_div без указателя какого-то иного дисплея. Но вот чья-та жестокая рука диву .whole_div, внутри которого и находится .center_div, назначила дисплей:инлайн, сделав его, на всякий случай уточню строчным.

мне думается, что задача целиком и полностью для дисплей:тейбл а стало быть обретет идейный вдохновитель такого себе геморроя с IE6 и 7. Я бы сделал таблицей и не парился.

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

ТС - меню надо делать на списках, а не как ты.

Где я говорил что нельзя? Читай внимательно.

Link to comment
Share on other sites

  • 0
Где я говорил что нельзя? Читай внимательно.

Извиняюсь, был не прав ;) Но вот это интересно:

Нельзя блочное вставлять в строчное в IE.

потому что строчное, получившее haslayout станочится уже не совсем строчным )))

Можешь поподробнее, интересненько

Link to comment
Share on other sites

  • 0
Див по дефольту имеет блок, именно это демонстрирует .center_div без указателя какого-то иного дисплея. Но вот чья-та жестокая рука диву .whole_div, внутри которого и находится .center_div, назначила дисплей:инлайн, сделав его, на всякий случай уточню строчным.

мне думается, что задача целиком и полностью для дисплей:тейбл а стало быть обретет идейный вдохновитель такого себе геморроя с IE6 и

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

то есть что я имею ввиду я это делал по аналогу када есть сайт из 3-х колонок с фикс левым флоатом, правым флоатом тож фиксированным и посерединке средний див, которому просто делаю маргины на расстояние правого и левого блоков

Link to comment
Share on other sites

  • 0
мож я тя не так понял, но ты вроде сам сказал его инлайном сделать, по умолчанию он у меня конечно был блоковым, мне же нужен этот элемент чтобы он растягивался почти на всю ширину, иначе как тада правый флоат будет к нему прилегать правильно, хммм )

то есть что я имею ввиду я это делал по аналогу када есть сайт из 3-х колонок с фикс левым флоатом, правым флоатом тож фиксированным и посерединке средний див, которому просто делаю маргины на расстояние правого и левого блоков

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

Link to comment
Share on other sites

  • 0
Извиняюсь, был не прав ;) Но вот это интересно:

Можешь поподробнее, интересненько

например, осел начинает чувствовать верт паддинги и маргины строчного элемента у которого haslayout.

Link to comment
Share on other sites

  • 0
мож я тя не так понял, но ты вроде сам сказал его инлайном сделать, по умолчанию он у меня конечно был блоковым, мне же нужен этот элемент чтобы он растягивался почти на всю ширину, иначе как тада правый флоат будет к нему прилегать правильно, хммм )

то есть что я имею ввиду я это делал по аналогу када есть сайт из 3-х колонок с фикс левым флоатом, правым флоатом тож фиксированным и посерединке средний див, которому просто делаю маргины на расстояние правого и левого блоков

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

если нет, я ваще тогда не понимаю, почему не сделать спан>спан>спан, всем трем дать дисплей блок. а самому внешнему флоат. ну и бекграундами разрулить... зачем вообще тут звучит слово "тянущийся"??

Link to comment
Share on other sites

  • 0
Я в это не верю, покажи мне этот пример с колонками, где ты середине марджины ставишь, могу поспорить, что он разваливается у тебя

http://shinoda.ru/bug_fix/3columns.htm

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

если нет, я ваще тогда не понимаю, почему не сделать спан>спан>спан, самому вложенному всем стрем дать дисплей блок. а самому внешнему флоат. ну и бекграундами разрулить... зачем вообще тут звучит слово "тянущийся"??

да возможно я не прально выразился, .center_div должен не тянуться а растягивать блоки которые слева от него и справа, так лучше ? :D

ведь я не знаю сколько символов будет в названии страны и поэтому не могу задать фиксированную ширину .center_div ;)

Link to comment
Share on other sites

  • 0
http://shinoda.ru/bug_fix/3columns.htm

да возможно я не прально выразился, .center_div должен не тянуться а растягивать блоки которые слева от него и справа, так лучше ? :D

ведь я не знаю сколько символов будет в названии страны и поэтому не могу задать фиксированную ширину .center_div ;)

1) Хм...странно, видимо я перепутал, с оверфлоу и марджинами. Ладненько, позже выясним

2) Если надо чтобы пункты растягивались, сделай так

<li>

<span>

<a href="#">Home</a>

</span>

</li>

На LI вешаешь левую часть, на Спан правую, а на ссылку центр и отступы делаешь нужные.

Link to comment
Share on other sites

  • 0
http://shinoda.ru/bug_fix/3columns.htm

да возможно я не прально выразился, .center_div должен не тянуться а растягивать блоки которые слева от него и справа, так лучше ? :D

ведь я не знаю сколько символов будет в названии страны и поэтому не могу задать фиксированную ширину .center_div ;)

cпан>спан>спан

спан{

флоат:left;

маргин:0 ширина-левого-краснокакашечного-уголка 0 ширина-правого-краснокакашечного-уголка;

бекграунд:красно-какашечный;

}

спан спан{

маргин:0 0 0 "минус"ширина-левого-краснокакашечного-уголка;

паддинг-лефт:ширина-левого-краснокакашечного-уголка;

флоат:ноне;

бекграунд:урл(левый-краснокакашечный-уголок) не-повторяца 0 0;

}

спан спан спан{

маргин:0 "минус"ширина-правого-краснокакашечного-уголка 0 0;

паддинг-райт:ширина-правого-краснокакашечного-уголка;

бекграунд:урл(правый-краснокакашечный-уголок) не-повторяца 100% 0;

}

Link to comment
Share on other sites

  • 0

Народ справился с задачей, посмотрите, помоему как раз то что нужно, просто тупенько сделал .left_div, .center_div, .right_div все флоатами лефт, и тот самый злосчастный .center_div поставил перед .right_div, и как раз они идут друг за дружкой и получается тянучка, то что доктор прописал, терь мне самому нужно дойти до конца почему же первый вариант не сработал ) хотя если брать 3 колонки которые я выложил выше то такой подход вполне подходит ;)

Edited by TonKhaO
Link to comment
Share on other sites

  • 0
Народ справился с задачей, посмотрите, помоему как раз то что нужно, просто тупенько сделал .left_div, .center_div, .right_div все флоатами лефт, и как раз они идут друг за дружкой и получается тянучка, то что доктор прописал, терь мне самому нужно дойти до конца почему же первый вариант не сработал ) хотя если брать 3 колонки которые я выложил выше то такой подход вполне подходит ;)

я бы так не делал. но хозяин-барин.

UPD.

А вообще все мы тут дураки, увлеклись твоими тремя блоками, совсем забыв что задача лехко решается двумя... так то...

Link to comment
Share on other sites

  • 0

Ты посмотри, во что это тебе вылелось

div class="whole_div">
<div class="left_div"/>
<div class="center_div">
<a id="amenu24" class="menuact" onclick="show_submenu('24')" href="java script:void(0)">Япония</a>
</div>
<div class="right_div"/>
<div style="clear: both;"/>
</div>

Мало того, ещё и не семантично, потому что это меню, оно по-идее должно быть списком.

Link to comment
Share on other sites

  • 0
я бы так не делал. но хозяин-барин.

UPD.

А вообще все мы тут дураки, увлеклись твоими тремя блоками, совсем забыв что задача лехко решается двумя... так то...

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

Ты посмотри, во что это тебе вылелось

div class="whole_div">
<div class="left_div"/>
<div class="center_div">
<a id="amenu24" class="menuact" onclick="show_submenu('24')" href="java script:void(0)">Япония</a>
</div>
<div class="right_div"/>
<div style="clear: both;"/>
</div>

Мало того, ещё и не семантично, потому что это меню, оно по-идее должно быть списком.

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

Link to comment
Share on other sites

  • 0
ты имеешь ввиду первый блок сделать, поставить туда левую картинку, далее его же залить однородным с картинкой цветом, и в потом в этот блок вложить сам текст и правую картинку, так?

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

еще проще....

делаешь длиннючую табину, пикселей на 1000 шириной, получица не более 2к все равно, если уголки прозрачные и через них выглядывает сложный фон - тогда внешнему диву картинку вставляешь "не-повторяца 100% 0;", слева маргин а справа паддинг , чтобы уголок не залило бекграундом, а внутреннему элементу этоу же картинку "не-повторяца 0 0;" и левые отриц. маргин и полож паддин, для симметрии ))))

Link to comment
Share on other sites

  • 0
да да только спан не нужен, отыграйся li и a.

аа, тоесть тупо полоску длинную по ширине уже с углом, да? тогда да, можно и без спана, всё таки вариант куда красивее чем с 5-6ю дивами)))

Link to comment
Share on other sites

  • 0
аа, тоесть тупо полоску длинную по ширине уже с углом, да? тогда да, можно и без спана, всё таки вариант куда красивее чем с 5-6ю дивами)))

а смысл, 3 штуки весом суммарным, допустим о.5к, или 1 весом 1-2 к.

я думаю одна круче, даже в плане сервака и одновременности появления на медленном клиенте.

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