За последние 24 часа нас посетили 17866 программистов и 1654 робота. Сейчас ищут 1495 программистов ...

Наложение div-ов с прозрачными картинка друг на друга

Тема в разделе "HTML и CSS", создана пользователем Tigrish, 29 июн 2009.

  1. Tigrish

    Tigrish Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    Билась над этой проблемой всю ночь, но работать корректно оно не хочет.
    Есть 3 дива: 1 с нижней большой картинкой, второй с прозрачной картинкой-закладкой поверх 1 и 3 див с текстом и фоном прозрачным, который тоже поверх большой картинки. Они нормально друг на друга накладываются, НО при этом под большой картинкой появляется отступ равный по высоте двум нижним дивам (хотя сами дивы висят на месте).
    Отсуп есть во всех браузерах, включая IE6.

    Вот код:

    HTML:
    1. ...
    2. <td valign='top'>
    3.     <div id='actual5'>  <img src='img/actual5.png' width='171' height='99' border='0' /> </div>
    4.     <div id='big_main_foto' width='100%' height='315'>
    5.                 <img src='img/news/img.png>' width='730' height='315'  style='border: 1px solid #606060;' />
    6.     </div>
    7.     <div id='text_in_grey_scale' width='100%' > text </div>
    8.    
    9. </td>
    10. ...
    [css]#actual5, #big_main_foto, #text_in_grey_scale { position: relative; }
    #big_main_foto { z-index: 1; top: -101px; }
    #actual5 { z-index: 2; left: 0px;}
    #text_in_grey_scale { z-index: 3; bottom: 60px; left: 0px; height: 60px; background: url("/img/actual_greyscale.png"); }
    [/css]

    Причем большая картинка (id='big_main_foto') имеет серую рамочку, которая идет вокруг этого отступа.

    Есть еще одна неприятная мелочь. В ИЕ6 #actual5 не хочет позиционироваться к левому краю, а упорно стоит ровно посередине.

    Кто может помочь разобраться?! Буду очень благодарна.
     
  2. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    Tigrish
    сделали бы четко - минимальный код для копипаста, чтоб можно было посмотреть, а так как гадать? Может там элементарно тегу A или другим надо margin & padding сделать 0?

    вообще интересно, дивы брать в A, по-моему это не везде корректно :)
     
  3. Tigrish

    Tigrish Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    sylex, про <a> поняла и убрала (он только на картинку распространяется, а я пока мучила дивы уже забыла про него).

    Картинку скриншота можно глянуть здесь. Оранжевая закладка это #actual5. (В ИЕ6 она находиться точно на лбу у девушки :? )Текст можно надо поднять на картинки, но для этого надо увеличить значение его позиции bottom: до 150 (примерно), а это высота всего отступа, которого не должно быть.

    Чем этот код не подходит для копи-паста? Картинки я ж не могу выслать...
     
  4. Tigrish

    Tigrish Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    Неужели никто не может помочь?
     
  5. igortik

    igortik Активный пользователь

    С нами с:
    29 июн 2009
    Сообщения:
    41
    Симпатии:
    0
    верстка на дивах - это жесть, учитывая баги IE и кроссбраузерность вцелом.

    почитай http://softwaremaniacs.org/blog/category/web/primer/

    Я решаю подобные вопросы так - каждый шаг проверяю в браузере.. разных..
    в конце концов, иногда возникают моменты, когда решения нет, т.к. браузер понимает неверно его, в таком случае надо менять ccs для браузера, где существует проблема... отдавать другой стиль для, IE, например
     
  6. Tigrish

    Tigrish Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    igortik, спасибо за совет. Попробую поэкспериментировать. Самое жуткое, что ошибка видна во ВСЕХ браузерах.
     
  7. igortik

    igortik Активный пользователь

    С нами с:
    29 июн 2009
    Сообщения:
    41
    Симпатии:
    0
    для позиционирования там где надо контейнера я задаю position:absolute и правлю его координаты margin-left:-143px и т.д. ну и контейнер надо создавать так, чтобы понимать где он берет свое начало и откуда начнется отчет пикселов
     
  8. Tigrish

    Tigrish Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    Вот это код под копи-паст. Там очень хорошо виден отступ внизу. Никак не могу понять откуда он берется.

    HTML:
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    3. <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    5. <title>  </title>
    6. <style type="text/css">
    7.  
    8. body { color: yellow;}
    9.  
    10. img {margin: 0, padding: 0;}
    11.  
    12. #actual5, #big_main_foto,  #text_in_grey_scale { position: relative; /* Относительное позиционирование */  }
    13. #big_main_foto { top: -100px;  }
    14. #big_main_foto  { z-index: 1; }
    15. #actual5        { z-index: 2; left: 0px; top: 0;}
    16. #text_in_grey_scale  { z-index: 3; color: #FFFFFF; top: -180px; left: 0px; height: 60px; background: url("http://www.oetv.lv/img/actual_greyscale.png"); padding: 15px 0 0 20px; text-align: left; font-size: 20px; font-weight: bold;  }
    17.  
    18.  
    19.  
    20.  
    21. </head>
    22. <body bgcolor='#000000' >
    23. <table width="730" border="1" cellspacing="0" align='center' cellpadding="0" >
    24.                
    25.                 <tr><td valign='top' bgcolor='white'>
    26.                             <img id='actual5' src='http://www.oetv.lv/img/actual5.png' width='171' height='99' border='0' />
    27.                        
    28.                        
    29.                             <a href='' style=' color: #FFFFFF;' id='big_main_foto'>
    30.                                 <img src='http://www.oetv.lv/img/news/f_17524143.gif' width='730' height='315'  style='border: 1px solid #606060;' />
    31.                             </a>   
    32.                             <div id='text_in_grey_scale' width='100%' > tekst </div>
    33.                 </td></tr>
    34. </table>               
    35.  
    36.  
    37. </body>
    38. </html>
    39.  
     
  9. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Насколько я помню свойство position:relative не убирает элемент из основного потока (как, например position:absolute). Таким образом последующие элементы выводятся так, как будто дивы остались на месте.

    Можно заменить css:
    [css]
    #actual5, #big_main_foto, #text_in_grey_scale { position: absolute;}
    #big_main_foto { top: 0px; left: 0px; z-index: 1;}
    #actual5 { z-index: 2; left: 0px; top: 0;}
    #text_in_grey_scale { z-index: 3; color: #FFFFFF; top: 255px; left: 0px; height: 60px; background:
    url("http://www.oetv.lv/img/actual_greyscale.png"); padding: 15px 0 0 20px; text-align: left; font-size: 20px; font-weight: bold; }
    [/css]
     
  10. Tigrish

    Tigrish Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    Volt(220), но ведь position: absolute позиционирует не в потоке, а относительно окна браузера.
     
  11. Tigrish

    Tigrish Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    В общем решила вопрос следующим образом. Самый большой элемент (большую фотку) сделала-таки фоном от внешнего дива. Остальное разместила relative в этом блоке. С помощью js меняю картинку и текст.
    Ура! Все получилось.
     
  12. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    Tigrish
    ну вот теперь все ясно :)

    да, верно подметил Volt(220), те блоки, которые position: relative - "не уходят" как бы. top: -180px; все портит вам, надо верстать по-другому :)
     
  13. V1T

    V1T Активный пользователь

    С нами с:
    7 окт 2008
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    Крым
    Tigrish, а вообще png увлекаться не надо,нужно их заменять где это возможно )) :D
     
  14. igortik

    igortik Активный пользователь

    С нами с:
    29 июн 2009
    Сообщения:
    41
    Симпатии:
    0
    png в ie - жесть..

    блин, сколько еще я напарываться буду на проблемы ie начиная с 6 версии...

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

    Пришлось разделять эти чудеса таблицами
     
  15. Tigrish

    Tigrish Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    V1T, почему? Чем они вредны? Их использование объясняется высокими требованиями к качеству дизайнерсой картинки.

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