Jump to content
  • 0

Scroll + Position:fixed - как бы вы решили?


ShumNo
 Share

Question

Есть такая разметка, возможно она кривая, но в силу некоторой идеи она такая. http://jsfiddle.net/8rqetnyo/

Вложенный слой со скролом, выполняющий роль основного на странице + фиксированный слой, который перекрывает скролл.

Как бы вы решили? Быть может оно вообще не решается... ?

Была мысль с width: calc но в разных браузерах оно у меня выглядит по разному

 

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 1

Чрез js можно определить ширину сколллабра и задать right равной этой ширине:

http://jsfiddle.net/mrnobody/8rqetnyo/3/

Определение ширины сроллбара я брал отсюда: https://learn.javascript.ru/task/scrollbar-width

Link to comment
Share on other sites

  • 0

Вот так можно : 
 

div#fixed {
    box-sizing:border-box;
    background: #76a7dc;
    color: #fff;
    position:fixed;
    top:0;
    height:50px;
    width:100%;
    left:-18px;
    padding-left:25px;
}

Но в другом браузере да , будет косяк с шириной скролла , но эту проблему можно решить через @media , и под определённые браузеры менять свойство left .

Edited by DevChristmas
Link to comment
Share on other sites

  • 0
2 часа назад, andrey7287 сказал:

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

На самом деле даже не в разметке, а в стилях. Потому как если вынести слой fixed из под sidebar то эффект будет тот же самый - fixed перекроет скролл.

То есть свойство fixed в позиционировании будет перекрывать скролл даже если ширина там будет 100%. С одной стороны это логично, а с другой бывают разные ситуации.

10 часов назад, DevChristmas сказал:

Вот так можно : 
 


div#fixed {
    box-sizing:border-box;
    background: #76a7dc;
    color: #fff;
    position:fixed;
    top:0;
    height:50px;
    width:100%;
    left:-18px;
    padding-left:25px;
}

Но в другом браузере да , будет косяк с шириной скролла , но эту проблему можно решить через @media , и под определённые браузеры менять свойство left .

Это примерно из той же оперы что и width: calc(100% - ширина скрола) только она везде разная да. Быть может в этом случае в какой-то мере актуален свой скрол одинаковой ширины во всех браузерах, но это не лучший вариант

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 VolKTieR
      Здравствуйте.
      Имеется данный код:
      <audio id="audio">     <source src="audio/1.mp3" type="audio/mpeg"> </audio> <div class="fixedbut" id="sebut">Звук</div> <style> div.fixedbut { position: fixed;     bottom: 93%;     right: 20px;      display: block;      background: white;      border-radius: 10px;     color: black;      text-decoration: none;      padding: 6px 23px;     font-size: 17px ;     -webkit-transition: 0.33s all ease-out;      -o-transition: 0.33s all ease-out;      transition: 0.33s all ease-out;     z-index: 999; } div.fixedbut:hover {         background: grey;         color: white; } </style> <script> document.getElementById("sebut").onclick = function()     {       var myaudio = document.getElementById("audio");       if(myaudio.paused == true)       {         document.getElementById("audio").play();  }       else if (myaudio.paused == false)       {         document.getElementById("audio").pause(); }     } </script> <script>     $(document).ready(function(){       $(window).scroll(function () {         if ($(this).scrollTop() > 200)          {             $('div.fixedbut').fadeIn();        }         else          {             $('div.fixedbut').fadeOut();         }   })     }); </script>
       
      Кнопка плавающая, останавливает звук включенный другой .
      Со звуком проблем нет, но появление и исчезание кнопки при прокрутке не работает.
      Подскажите пожалуйста как сделать))
    • By mr.relax
      Есть страница, c:
      body { 
      max-width: 1200px;
      margin: auto;
      }
      т.е. контент посередине. 

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

      footer {
      position: fixed;
      bottom: 0;
      }

      "привязывает" <footer> к низу, но растягивает по ширине экрана.
    • By serzh82saratov
      Если в IE потянуть за ползунок скролла, то пока не выполнится процедура onscroll, визуально смещение не происходит. Это, то что нужно.
      Но, если нажать на стрелку скролла, или между стрелкой и ползунком, или колёсиком прокрутить, то сначала происходит смещение и только после происходит вызов onscroll. Как избежать такого поведения?   https://jsfiddle.net/0b9dye0j/
    • By reeffdasfsda
      Необходимо, чтобы реагировал на клик сначала внутренний блок (CONTENT), а далее уже родительский (FIXED)
      Как это можно реализовать?

      Ссылка https://jsfiddle.net/ux7gknhk/1/
    • By tefery
      Посередине первого экрана будет кнопка скрола ко второму. Что нужно писать в джиквери, что бы прокрутить вниз на один экран?
×
×
  • 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