Jump to content
  • 0

При наличии border-right/left вычесть высоту скроллбара


Velidan
 Share

Question

Доброго дня уважаемые коллеги. Подскажите, пожалуйста, как можно сделать так, чтобы у блока, который имеет горизонтальную прокрутку, боковая граница не тянулась на высоту скролбара. 

 

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

 

В общем вкратце. Как можно сделать так, чтобы border-right: 1px solid black; блока с горизонт прокруткой не вылезала на скроллбар, а ограничивалась высотой самого блока?

 

 

https://jsfiddle.net/e1o5kgk8/

 

 
Буду благодарен за любую помощь.
Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0
Спасибо за ответ. Да, это нормальный вариант, если точно знать ширину скроллбара) а он в разных ОС по разному. Единственный вариант, в таком случае, это скрывать системный скроллбар и делать свой. Тогда точно будем знать вычитаемую высоту. Только жаль, что на чистом css такие проблемы возникают с элементарными вопросами.

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

Link to comment
Share on other sites

  • 0

http://htmlbook.ru/css/box-sizing

 

border-box
Свойства width и height включают в себя значения полей и границ, но не отступов (margin). Эта модель используется браузером Internet Exporer в режиме несовместимости.

 

update:

ах нет, прости, я не совсем тебя правильно понял: https://jsfiddle.net/e1o5kgk8/1/

Link to comment
Share on other sites

  • 0

Спасибо за ответ. Но, при прокрутке граница также  прокручивается. (Это также как создать обертку для внутреннего контента  и назначить ей рамку. Она - то будет по высоте как надо, но будет прокручиваться при прокрутке). 

 

Можно ли так сделать, чтобы она была прижата справа и не двигалась (К сожалению fixed не работает с relative, а было бы намного удобнее работать).

 

 

Update  https://jsfiddle.net/e1o5kgk8/2/    (вернул к изначальному состоянию)

Edited by Velidan
Link to comment
Share on other sites

  • 0

Спасибо за помощь, но здесь минусы из-за которых вариант также не подходит:  есть hr (которая играет роль границы). Она вообще внизу стоит, вне пределов контейнера + явно указана высота.  (Высота таблицы динамически меняется, по этому такой вариант не подходит).

 

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

Link to comment
Share on other sites

  • 0

Спасибо за ответ. Да, это нормальный вариант, если точно знать ширину скроллбара) а он в разных ОС по разному. 

Единственный вариант, в таком случае, это скрывать системный скроллбар и делать свой. Тогда точно будем знать вычитаемую высоту.

 

Только жаль, что на чистом css такие проблемы возникают с элементарными вопросами.

Link to comment
Share on other sites

  • 0

Прошу прощения, изначально посмотрел на 

ЗЫ ещё забавная вещь https://jsfiddle.net/e1o5kgk8/3/

 

 

Там увидел, что тень смещена стабильно на 100px вверх.

 

 

А вообще это именно то что нужно. Только очень странно что тень скрывается под скроллбаром, а граница нет. Не знал, спасибо огромное.

Link to comment
Share on other sites

  • 0
Там увидел, что тень смещена стабильно на 100px вверх.

 

Это был просто пример что еще можно делать так.

 

 

 

А вообще это именно то что нужно. Только очень странно что тень скрывается под скроллбаром, а граница нет. Не знал, спасибо огромное.

 

Почему странно? Скроллбар это элемент который отрисовывает и позиционирует браузер(мы лишь указываем показывать его или нет) и он специально выше чтобы другие элементы его не перекрывали. А бордер не скрывается потому что он обрамляет блок,  внутри которого есть скроллбар. Тень же мы наложили внутреннюю, если наложить внешнюю тень она тоже будет видна.

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 alexmel
      Совершенно не отображаются границы у таблиц. 
      Дело не в css. Создаю таблицу без стилей - нет границ, таблицу с принудительными стилями для отображения границ ноль реакций.
      Отключаю все таблицы стилей как на скрине, создаю простой код, ничего лишнего - нет границ. 
      Хотя если судить по стилям по умолчанию (на скрине) - должны быть серые границы.
      Спасибо заранее если кто поможет.

    • By Shiza
      Есть страница сделанная на Scrollify (https://github.com/lukehaas/Scrollify), которая скроллится секциями 100% высоты, как здесь http://projects.lukehaas.me/scrollify/#home.
      Все хорошо, но нужно добавить футер, фиксированной высоты меньше высоты экрана:

       
      И тут возникает проблема, как заставить Scrollify не возвращать на последнюю секцию, когда нужно прокрутить к футеру?
       
      http://jsfiddle.net/kvw0eom6/
    • By xmlns
      Добрый день.
      Как сделать окно с прокруткой? Пример - виндосовские окна.
      Как выглядет окно:
      <div id="window"> <p>Заголовок окна</p> <div>Тут находится содержимое всякое разное</div></div>Т.к. у всех мониторы разные, то макс. высота окна не фиксирована, а задается в процентах от body / html. Соответственно, если содержимое вложенного div больше, то у него должна появиться вертикальная прокрутка. Как это сделать? Чтобы ничего не вылезало, скролбары показывались когда нужно. Может нужно верстку окна изменить?
       
      Ps Окно позиционировано абсолютно.
    • By Sergo Skiller
      Здравствуйте.
       
      Скажу сразу, что только начал разбираться в JavaScript и jQuery, в качестве подопытных выбрал свои старые работы.
      В общем, захотел сделать так, чтобы при скроллинге начинал проявляться блок с примерами работ, написал скрипт, без ошибок, правильный со всех (вроде) точек зрения, но он почему-то не работает - блок как был на месте, так там и остался.
       
      Писал его по следующему алгоритму:
      1) Получение расстояния блока от начала документа методом .offset().top
      2) Получение высоты окна методом $(window).height()
      3) Вычитание из .offset().top высоты окна (var distanceTop = $('#container').offset().top - $(window).height() )
      4) Получение величины скроллинга методом $(window).scrollTop
      5) Сравнение: если distanceTop меньше, чем $(window).scrollTop, то запускается анимация проявления блока $('#container').animate({'opacity':1}, 3000), иначе анимация его скрытия $('#container').animate({'opacity':0}, 3000)
       
      Вот ссылка на папку в Яндекс Диске с исходными файлами: https://yadi.sk/d/fz37oI69irTKa
      Сайт на хосте: http://erudit.esy.es/
      Вот код скрипта:
      $(document).ready(function(){   $(window).scroll(function(){      var distanceTop = $('#container').offset().top - $(window).height();           if ($(window).scrollTop > distanceTop){              $('#container').animate({'opacity':1}, 3000);           }else{              $('#container').animate({'opacity':0}, 3000);           }    });});Заранее благодарен за помощь.
       
    • By virtas
      Вот получилась такая прокрутка Сайт 
      Но к сожалению боковая кнопка меню уезжает вверх вместе с прокруткой , а нужно зафиксировать !!! 
      Меняю position: absolute; на position: fixed; и вся прокрутка начинает тормозить немного ((( 

      Уже все перепробовал и не как не хочет принимать position: fixed; ! может кто то подскажет как избавится от такой проблемы !?
×
×
  • 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