Jump to content
  • 0

position: fixed;


wicked_kiD
 Share

Question

Добрый день, необходимо сделать меню, которое плавает вдоль левого края контейнера, все бы ничего, но сайт адаптивный и когда окно браузера становится меньше основной ширины контейнера - с этим справляются @media, а как сделать чтобы позиция отсчитывалась от центра страницы или от контейнера, чтобы при больших и разных экранах меню оставалось на своем месте, возле контейнера? Буду благодарен за любую информацию.

Нашел решение при помощи calc(); но, судя по заявленным данным о поддержке браузерами - не так много поддерживают эту функцию, может есть более правильное решение?

Edited by wicked_kiD
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

http://jsfiddle.net/cV7GE/

как пример привязки к родительскому элементу.

Никогда такой задачи не стояло, а вот сейчас попробовал, есть огрехи:

1. если указать top и left, браузер в независимости от relative у родителя начинает позиционировать от окна браузера.

2. в chrome в любом случае позиционирует от окна браузера, а IE9 и FF без указания top и left нормально отобразили.

Как я понимаю это не победить без js. Во всяком случае я пока кроссбраузерного решения без него не вижу .

Edited by wwt
Link to comment
Share on other sites

  • 0

В общем я сделал так, если кому интересно:

Вынес див за контейнер, добавил ему



@media(min-width:1250px){
.sidemenu {
left: calc(50% - 600px);
position: fixed;
top: 200px;
width: 100px;}
}

А когда @media(max-width: 1250px) я переношу этот див просто над контейнером.

Вроде все работает в лисе последней и хроме, но судя по странице htmlbook.ru/css/calc опера и сафари не поддерживают, пока нет под рукой их, надо будет протестировать. Если будет в последних работать, думаю поставить заглушку, с ссылками на свежие версии браузеров, т.к. использую много свойств, которые не так давно поддерживаются.

Link to comment
Share on other sites

  • 0

Спасибо за отзывы всем - у меня необходимость в calc исчезает при экранах по ширине меньше 1250px, поэтому врятли много устаревших браузеров будет на таком разрешении (в т.ч. андроид и прочие мобильные), а скрипт не хочу цеплять потому, что в моем проекте итак очень много js. Но если возникнет в ходе эксплуатации такая необходимость - то придется еще один скрипт цеплять...

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 Алеся
      Подскажите, пожалуйста, как растянуть фоновую картинку, заключенную в div, на всю ширину вьюпорта? Сейчас она отображается посередине, по ширине макета. Указывала ширину 100%, 1200px, минимальную ширину 1200px - не работает.
      <div class="banner"> 
            <div class="container background-image">
            <div class="banner_text"></div>
            </div>
          </div>
      CSS:
      .background-image {
        background-image: url('/img/new_oranges.jpg');
        background-size: cover;
        height: 200px;
      }
    • By gumuch
      Добрый день. Нуждаюсь в помощи/совете! 
      В корне сайта (html) создал блок с позиционированием, написал в нем номер телефона и почту. На большом мониторе блок отображается нормально, а вот если зайти через смартфон то данный блок налазит на картинку и я никак не могу это изменить..., игрался с позиционированием (absolute, fixed, relativ и т.д.) но получаю на выходе либо прикрепленный блок к верхнему левому краю либо он налазит на картинку. Подскажите, что я делаю не так? 
      Сам сайт: http://2metra.com/
      Вот код который я прописал:
       
    • By мурамаса
      Добрый день, столкнулся с такой проблемой. Верстая страницу заключал изображения в тег <div> с определенным класом и в css, задаю им позицию какую хочу видеть у себя в браузере. например
      .content-bar2 { float: right; position: absolute; top: 300px; right: 50px; } Так вот когда я несколько элементов так размещаю, один над одним, то у меня в браузере все отоброжается нормально. Но открыв с другого компьтера, получилос так что одно изображение наезжает на другое, что это и с чем связано и как это вылечить. И если не сложно обьясните пожалуйста особенности position: absolute.
      Как я понимаю float и absolute вместе не работают ?
      Как я понимаю float и absolute вместе не работают ? 
      При том еще есть проблема, когда я уменьшаю окно браузера, контент как бы сжимается в непонятную хурму, друг на друга, как это исправить ?
    • By mr.relax
      Есть страница, c:
      body { 
      max-width: 1200px;
      margin: auto;
      }
      т.е. контент посередине. 

      Вопрос: есть блок <footer>, как средствами CSS сделать его "привязанным" к низу страницы так, чтобы он был одного размера с body? И соответственно менял размеры, если у body меняется. 
      Ну например: окно браузера уменьшили...

      footer {
      position: fixed;
      bottom: 0;
      }

      "привязывает" <footer> к низу, но растягивает по ширине экрана.
    • By serzh82saratov
      Всем привет! Я тут новичок, не пинайте сразу если что.
      Требуется аналог position sticky для IE (в режиме совместимости с 7).
      Надо чтобы в одну строку текст с кнопками и с пунктирной линией проходящей под ними посередине в любой ситуации прилипал к левой и правой границе окна, то есть чтобы не участвовал в горизонтальной прокрутке, но прокручивался вертикально. Также при растягивании окна, текст за которым следуют кнопки находились слева на 20%.

      То есть если сдвинуть скролл, строка с красной полоской должна остатся на месте, если растянуть окно, то красная полоса растягивается, "( Title )" немного сдвигается вправо.
      Надеюсь более менее объяснил, заранее спасибо.
      Забыл сказать, таких линий на форме 10 - 20 штук.
×
×
  • 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