Jump to content
  • 0

Position:relative или лучше иначе? Ищу гуру.=)


logicface
 Share

Question

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

http://jsfiddle.net/K7UV3/2/

З.Ы. - header  и opol полностью статичны, в них ничего не тянется и текстом дополняться скорее всего не будет.

В диве logo будет еще 2 дива. 1 для текста - имей дело с лучшими 2ой для названия компании. Хотя можно обойтись и без 2ух дивов, не столь важно.

Opol - это див с бэкграундом-картинкой, внутри которого будут находиться еще 2 рекламных дива размеров 486х60 с низу.

Вот для наглядности что планирую:

b913adc067d5564d4a8b36cb1c6b9dc6.png

 

 

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

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

Link to comment
Share on other sites

  • 0

Ну по моему лучше чем я темы еще описаны не были.) Я сделал все для того что бы понять суть проблемы было легко, даже выложил картинку для более легкого понимания.

Link to comment
Share on other sites

  • 0

Ну при том, что это основа всей конструкции, если коричневому блоку не дать position:relative он не будет выступать за зеленый блок.) будет прятаться за ним, а мне надо что бы он выступал.) То бишь в коде - черный блок.

Link to comment
Share on other sites

  • 0

я бы сказал это не relative, а absolute, так как relative - это по сути родитель absolute, т.е. дает понять браузеру от какого элемента позиционировать и как правильно выстраивать блоки.

в вашем случает, конечно же без позиционирования не обойтись, ибо по картинке видно, что три разных блока чуть наезжают друг на друга (хотя в коде только логотип идет поверх двух дивов), и тут не только позиционирование, но и z-index тоже придется использовать и все это в одном общем диве которому position: relative.

если я правильно все понял конечно...

Link to comment
Share on other sites

  • 0

Мне нужно что бы черный блок был на самом верху а желтый блок был под черным как в моем демо, а половина зеленого блока была в самом низу.=)

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


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

b985bffa8c80eecad4238ba079c3983e.png

Link to comment
Share on other sites

  • 0

Кстати я только что потыкал немного мой код, сделал так:

http://jsfiddle.net/K7UV3/7/

Уменьшил высоту хедера до 40px и сделал черный абсолютно позиционированным и почему то черный див стал имееть отступ сверху, пришлось дописать ему маргин-топ с минусом в 20 пикселей. Этот способ так же позволяет удалить блок clear.

Может так правильнее? Вроде и зеленый блок нужного размера теперь и черный как бы является частью зеленого блока... Я уже сам запутался.) Там же еще в зеленом блоке нужно будет список размещать и так далее.

Edited by logicface
Link to comment
Share on other sites

  • 0

Еще немного помучив код я сделал так:

http://jsfiddle.net/K7UV3/8/

Задал хедеру позицию relative, задал логотипу позицию absolute и float:left да бы остальной контент знал что там с боку место занято. Переместил текст, так как он был перед логотипом и по этому толкал его вниз, благодаря чему теперь в диве logo не надо писать margin-top:-20px ну вроде и все, так наверное лучше всего будет, и зеленый блок нужной высоты 40px а не 60px и дива со свойством clear:both нету. И желтый блок на нужном месте. Z-index тоже вроде теперь без надобности.

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

http://jsfiddle.net/K7UV3/9/

Вот с absolute.

Спасибо за ранее Rus'y, немного навел порядок в голове.=)

Edited by logicface
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

  • Similar Content

    • By WNSY
      Более опытные товарищи, ай нид ё хелп!)
      Имеется выпадающее меню с классом .sub-menu__list. При наведении оно выпадает, но перекрывается блоком .page__main. Для наглядности прикрепляю скрин и код.
      Естественно, нужно, чтобы выпадающее меню было поверх контента следующего блока.
      Подскажите, как это реализовать?
      P.S. Если нужно поиграть с z-index, подскажите в каком классе, т.к. я перепробовал свои варианты - результата не дало.

       
      HTML
      <header class="header"> <div class="header__all _container"> <div class="header__image"> </div> </div> <div class="header__container _container"> <a href="#" class="header__logo"><img src="img/SL-logo.png" alt="SL"></a> <nav class="header__menu menu"> <ul class="menu__list"> <li class="menu__item"> <a href="#" class="menu__link">Главная</a> </li> <li class="menu__item"> <a href="#" class="menu__link">Обучение</a> <ul class="sub-menu__list"> <li class="sub-menu__item"><a href="#" class="sub-menu__link">Направления</a></li> <li class="sub-menu__item"><a href="#" class="sub-menu__link">Стоимость</a></li> <li class="sub-menu__item"><a href="#" class="sub-menu__link">Расписание</a></li> </ul> </li> <li class="menu__item"> <a href="#" class="menu__link">О нас</a> </li> <li class="menu__item"> <a href="#" class="menu__link">Контакты</a> </li> <li class="menu__item"> <a href="#" class="menu__link">Доп.услуги</a> </li> </ul> </nav> <a href="#" class="header__phone"><img src="img/header-phone.png" alt="h-phone"></a> </div> </header> <main class="page"> <div class="page__container _container"> <div class="page__main"></div> CSS
      .header { } .header__all + ._container { position: relative; } .header__image { background: grey; background-size: cover; height: 302px; font-size: 48px; text-align: center; } /*=======================================HEADER-NAV=======================================*/ .header__container { display: flex; min-height: 110px; align-items: center; margin: 15px auto 0 auto; position: absolute; } .header__logo { } .header__menu { margin: 0 0 0 95px; } .menu { } .menu__list { display: flex; } .menu__item { position: relative; } .menu__item:not(:last-child) { margin: 0 68px 0 0; } .menu__link { font-size: 20px; } .header__phone { margin: 0 0 0 175px; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~SUB-MENU~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ .sub-menu__list { display: none; position: absolute; } .sub-menu__item { width: 204px; } .sub-menu__item:first-child { padding: 40px 0 0 0; } .sub-menu__link { font-size: 18px; max-width: 204px; } .sub-menu__item:not(:last-child) { margin: 0 0 22px 0; } .menu__item:hover .sub-menu__list { display: block; } /*=======================================MAIN=======================================*/ .page { } .page__container { } .page__main { background: rgba(203, 32, 218, 0.25); height: 300px; font-size: 48px; text-align: center; }  
    • By yaparoff
      Задумка такая: форма выдвигается/задвигается за хедер. Но у меня когда она двигается она "проползает" сверху хедера. А по идее должна ползти под хедером, и ее не должно быть видно когда она ползет
      Попробовал решить это с помощью z-index - почему то не помогло
      Что делать?
       
    • By Владимир Горинов
      Добрый день, что делаю не так? Глаза уже замылил себе пытаясь найти причину.
      Нужно сделать - спозиционировать картинки так, что бы центральная перекрывала все, а 2 боковые были за родительским блоком и за центральной картинкой Тык
      А получается только вот так  - 2 боковые позади центральной, но не могу их поставить позади родителя - Тык
      Либо подскажите как грамотно оформить этот блок с будущим нацеливанием на адаптивность.
      <div class="row"> <div class="col"> <div class="services-boxes"> <div class="services-boxes_first-box"> <img class="services-boxes_first-box__first-house" src="img/first_house.png" alt=""> <img class="services-boxes_first-box__second-house" src="img/second_house.png" alt=""> <img class="services-boxes_first-box__third-house" src="img/third_house.png" alt=""> <h3>Мечтаете о доме на Солнечном берегу?</h3> <p> Или хотите выгодно инвестировать в заграничную недвижимость? В любом случае - подходящий вариант уже ждет Вас! Большой выбор объектов жилой и коммерческой недвижимости и профессиональный сервис позволит провести сделку с удовольствием и получить нужный результат </p> </div> <!-- /.services-boxes_first-box --> </div> <!-- /.services-boxes --> .services-boxes_first-box { background-color: #f4f4f4; width: 74%; margin: auto; padding: 70px 0 43px 0; padding-left: 50px; padding-right: 50px; margin-top: 150px; position: relative; z-index: 4; } .services-boxes_first-box__first-house { display: block; position: absolute; left: -183px; top: -67px; right: 0; margin-left: auto; margin-right: auto; z-index: 1; } .services-boxes_first-box__second-house { display: block; position: absolute; left: 0px; top: -124px; right: 0; margin-left: auto; margin-right: auto; z-index: 100; } .services-boxes_first-box__third-house { display: block; position: absolute; left: 0px; top: -53px; right: -148px; margin-left: auto; margin-right: auto; z-index: 2; } .services-boxes_first-box h3 { font-size: 20px; text-transform: uppercase; } .services-boxes_first-box p { font-family: "Museo Sans Cyrl-100"; font-size: 17px; font-weight: 400; line-height: 25px; padding-top: 13px; }  
    • By Brodyaga337
      Поочему фон со звёздами не прячется под body у которого:
      body { background-color: #EDE8C9; position:relative; z-index: 2; font-family: "RobotoRegular", sans-serif; font-size: 16px;
    • By siemens1111@yandex.ru
      страница отображается во всех браузерах правильно, кроме chrome: баннера перекрывают выпадающее меню
      что не так для chroma?
      вот ссылка на страницу http://centrpol.com.ua/index.html
      прин-скрин прикрепил: слева во всех брайзерах верно, справа в Хроме не верно

  • Обсуждения

    • Всем спс сам розобрался.
    • Вот хороший пример "Рандомайзер слов из списка". Тут вместо дивов с картинками инпуты, но сути дела не меняет. Кроме того работает с разным кразмером списка (код универсальный). Если в сорсе код найдешь увидишь как работает — там 3 строчки с тем же Math.random. Если будут трудности пиши тут, я оповещение увижу кину тебе код оттуда + объясню шо как. Вообще прикольно так можешь посмотреть другие страницы на сайте, потренироваться с js (для начала как раз пойдет).   Ну я вовремя конечно 
    • Пытаюсь динамически сформировать группу элементов <input type="checkbox"> Элементы создаются, но не получается задать им надпись, хотя раньше, создавая их вручную в HTML, всё получалось..   vk-groups-3.html vk-groups-1.html наладил.. vk-groups-3.html
    • Вы отучились на бухгалтера или программиста? Почему спрашиваю. Я финансист, бухгалтер. Естественно, в свое время отучился на курсах 1С, но как экономист. Поэтому могу помочь с развитием именно в этом направлении, так как опыт огромный. 
    • Всем привет.Не так давно начал изучать верстку.И кароче захотел создать слайдер на основе html css без js. Застрял булеты работают и стрелки также но только стрелки становяться видимы когда первый раз нажал на булет.До этого их никак немогу настроить.   <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Document</title>     <style>         .wrapper{             width: 700px;             height: 400px;             margin:0 auto;             border:5px solid green;             border-radius: 20px;             overflow: hidden;             position: relative;         }         .container{             width: 600px;             height: 300px;             border: 5px solid green;             border-radius: 20px;             margin: 20px auto;         }         .slider__items{             display: none;         }         .bullets{             display: flex;             position: absolute;             left:100px;             bottom:30px;         }         .bullets__items{             width: 50px;             height: 15px;             border:2px solid green;             border-radius: 20px;             background-color: lightgreen;             margin: 0 20px;         }             .images{             display: flex;         }         .images__items{             width: 600px;             height: 300px;             border-radius: 20px;             margin-right: 55px;         }               .arrows__prev{             background-image: url(./img/next.png);             background-size: contain;             width: 40px;             height: 40px;             position: absolute;             top:150px;             left: 2px;         }         #slide1:checked ~ .images .image1{             margin-left: 0;         }         #slide2:checked ~ .images .image2{             margin-left: -655px;         }         #slide3:checked ~ .images .image3{             margin-left: -1310px;         }         #slide4:checked ~ .images .image4{             margin-left: -1965px;         }         #slide5:checked ~ .images .image5{             margin-left: -2620px;         }         #slide1:checked ~ .arrow__next .img2,         #slide2:checked ~ .arrow__next .img3,         #slide3:checked ~ .arrow__next .img4,         #slide4:checked ~ .arrow__next .img5,         #slide5:checked ~ .arrow__next .img1{             display: block;             background-image: url(./img/next.png);             background-size: contain;             width: 40px;             height: 40px;             position: absolute;             top:150px;             right: 2px;                 }         #slide1:checked ~ .arrow__prev .img5,         #slide2:checked ~ .arrow__prev .img1,         #slide3:checked ~ .arrow__prev .img2,         #slide4:checked ~ .arrow__prev .img3,         #slide5:checked ~ .arrow__prev .img4         {             display: block;             background-image: url(./img/prev.png);             background-size: contain;             width: 40px;             height: 40px;             position: absolute;             top:150px;             left: 2px;                 }     </style> </head> <body>     <div class="wrapper">         <div class="container">             <div class="slider">                 <input type="radio" name="slider" class="slider__items" id="slide1">                 <input type="radio" name="slider" class="slider__items" id="slide2">                 <input type="radio" name="slider" class="slider__items" id="slide3">                 <input type="radio" name="slider" class="slider__items" id="slide4">                 <input type="radio" name="slider" class="slider__items" id="slide5">                                 <div class="bullets">                     <label for="slide1" class="bullets__items"></label>                     <label for="slide2" class="bullets__items"></label>                     <label for="slide3" class="bullets__items"></label>                     <label for="slide4" class="bullets__items"></label>                     <label for="slide5" class="bullets__items"></label>                 </div>                 <div class="arrow__next">                     <label for="slide1" class="arrows__item img1"></label>                     <label for="slide2" class="arrows__item img2"></label>                     <label for="slide3" class="arrows__item img3"></label>                     <label for="slide4" class="arrows__item img4"></label>                     <label for="slide5" class="arrows__item img5"></label>                 </div>                 <div class="arrow__prev">                     <label for="slide1" class="arrows__item img1"></label>                     <label for="slide2" class="arrows__item img2"></label>                     <label for="slide3" class="arrows__item img3"></label>                     <label for="slide4" class="arrows__item img4"></label>                     <label for="slide5" class="arrows__item img5"></label>                 </div>                 <div class="images">                     <img src="./img/1.jpg" alt="" class="images__items image1">                     <img src="./img/2.jpg" alt="" class="images__items image2">                     <img src="./img/3.jpg" alt="" class="images__items image3">                     <img src="./img/4.jpg" alt="" class="images__items image4">                     <img src="./img/5.jpg" alt="" class="images__items image5">                 </div>             </div>         </div>     </div> </body> </html>
×
×
  • 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