Сайт

Как заблокировать фон сайта при скролле: Как реализовать закрытие при клике на фон и заблокировать скролл? — Хабр Q&A

05.05.2023

javascript — Блокировка скроллинга страницы при скроллинге дочернего DIV`a?

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

Пожалуйста, не предлагайте скрывать скролл-бар:

body { overflow: hidden; }

Мне необходимо заблокировать скроллинг, когда курсор мыши находится над чатом.

Для наглядности прикладываю скрин чата с сайта:

  • javascript
  • html
  • jquery
  • css
  • scroll

Можно сделать и блок с контеном и чат fixed, как-то так:

/*
page-wrapper нужен, чтобы можно было позиционироваться абсолютно относительно page. 
*/

.page-wrapper {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: auto;
}
.
page { position: relative; } .article { height: 5000px; } .test { position: absolute; left: 10px; bottom: 0; width: 100px; height: 25px; background: green; } .chat { position: fixed; overflow: auto; bottom: 0; right: 0; width: 100px; height: 100px; background: red; } .chat-content { height: 5000px; }
<div>
  <div>
    <div>article</div>
    <div>test</div>
  </div>
</div>
<div>
  <div>chat-content</div>
</div>

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

18

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

overscroll-behavior — CSS | MDN

CSS-свойство overscroll-behavior — это сокращение для свойств overscroll-behavior-x (en-US)

и overscroll-behavior-y (en-US), которые позволяют управлять поведением прокрутки при достижении границы области прокрутки.

/* Значения-ключевые слова */
overscroll-behavior: auto; /* по умолчанию */
overscroll-behavior: contain;
overscroll-behavior: none;
/* Двойное значение */
overscroll-behavior: auto contain;
/* Глобальные значения */
overflow: inherit;
overflow: initial;
overflow: unset;

По умолчанию мобильные браузеры, как правило, обеспечивают эффект «отскока» или даже обновляют страницу при достижении её верхней или нижней части (или другой области прокрутки). Возможно, вы также замечали, что когда поверх страницы с прокруткой расположено диалоговое окно с прокруткой, то при достижении границы прокрутки диалогового окна нижележащая страница начинает прокручиваться. Это называется цепочкой прокрутки (scroll chaining, англ.)

В некоторых случаях такое поведение нежелательно. Вы можете использовать overscroll-behavior, чтобы избавиться от нежелательных цепочек прокрутки и поведения страниц браузера по принципу «потяните, чтобы обновить» (pull to refresh, англ.), характерного, например, для приложений Facebook и Twitter.

Начальное значениеauto
Применяется кне заменяемые блочные и inline-block элементы
Наследуетсянет
Обработка значениякак и у каждого из подсвойств этого свойства:
  • overscroll-behavior-x (en-US): как указано
  • overscroll-behavior-y (en-US): как указано
Animation typediscrete

Свойство overscroll-behavior задаётся в виде одного или двух ключевых слов, выбранных из списка значений ниже.

Два ключевых слова определяют значение

overscroll-behavior по осям x и y соответственно. Если задано только одно значение, то предполагается, что и x, и y одинаковы.

Значения

auto

Поведение по умолчанию.

contain

Поведение для overscroll-behavior применяется внутри элемента, для которого установлено это значение (например, эффекты «отскока» или обновления), но не возникают цепочки прокрутки для соседних областей прокрутки, например, нижележащие элементы не будут прокручиваться.

none

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

Формальный синтаксис

overscroll-behavior = 
[ (en-US) contain | (en-US) none | (en-US) auto ] (en-US){1,2} (en-US)

В нашем примере overscroll-поведения (см. также код по ссылке ) представлен полностраничный список поддельных контактов и диалоговое окно с чатом.

Обе эти области прокручиваются; обычно, если вы прокручиваете окно чата до тех пор, пока не достигнете границы прокрутки, нижележащее окно контактов тоже начнёт прокручиваться, что нежелательно.

Предотвратить такое поведение можно, используя overscroll-behavior-y (overscroll-behavior также подойдет) для окна чата, как показано ниже:

.messages {
  height: 220px;
  overflow: auto;
  overscroll-behavior-y: contain;
}

Мы также хотим избавиться от стандартного overscroll-эффекта при прокрутке контактов вверх или вниз (например, Chrome на Android обновляет страницу при прокрутке за пределы верхней границы). Это можно предотвратить, установив для элемента

<body> значение overscroll-behavior: none:

body {
  margin: 0;
  overscroll-behavior: none;
}

Пока CSSWG не опубликует свой собственный вариант, спецификация может быть найдена толькона Github в репозитории WICG.

SpecificationStatusComment
Unknown
Определение ‘overscroll-behavior’ в этой спецификации.
Неизвестно

BCD tables only load in the browser with JavaScript enabled.

Enable JavaScript to view data.

  • Take control of your scroll: customizing pull-to-refresh and overflow effects

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

Want to get more involved?

Learn how to contribute.

This page was last modified on by MDN contributors.

css — запретить прокрутку фоновых изображений

спросил

Изменено 12 лет, 4 месяца назад

Просмотрено 8к раз

Ссылка на страницу: http://www.northtreestudios.com/sandbox/

Интересно, как я могу заставить фоновые изображения моего сайта не вызывать полосу прокрутки из-за их ширины/расположения.

Я использую 960 сетка с 16 столбцами, но фон имеет несколько изображений в произвольных положениях для создания некоторых эффектов детализации. Они не соответствуют сетке; они лежат слева и справа от контейнера.

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

По сути, я хочу, чтобы горизонтальная полоса прокрутки появлялась только тогда, когда окно меньше по ширине, чем 960 сетка. Все остальные графические дополнения слева или справа не должны вызывать прокрутку. Есть ли способ добиться этого, если не считать гигантского неэффективного фонового изображения?

  • css
  • scroll

Что вам нужно сделать, это сделать фоновые изображения на самом деле фоновыми изображениями, тогда это будет работать.

Итак, сначала вам нужно добавить несколько элементов для фоновых изображений, например:

 
    <дел>
        
    

Вам понадобится один фоновый элемент div для каждого изображения, и элемент div должен быть полной ширины, чтобы ваше фоновое изображение могло быть где угодно. немного предыстории | | Вы заботитесь о | | +———————————————————+

Так как это фон, и ваш div background-foo по-прежнему помещается на странице, как и ваш контент, горизонтальных полос прокрутки не будет.

1

Редактировать :

Я загрузил проект здесь http://www.mediafire.com/?cndgyaq4grw, надеюсь, это поможет.


предыдущий ответ :

Добавить position:fixed; справа: 0 пикселей; внизу: 0px; на ваш background-stripe-bottom отд.

4

Добавьте атрибут CSS overlow:none

Поэтому, если он отображается в теге, добавьте следующее в CSS для этого элемента.

 #oneDiv{
ширина: 960 пикселей;
высота: 100 пикселей;
переполнение: нет;
}
 

Это должно сработать.

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Свойство CSS scroll-margin-block

❮ Назад Полное руководство по CSS Далее ❯


Пример

Установите расстояние до прокручиваемого контейнера от позиции привязки в направлении блока:

div {
  scroll-margin-block: 10px;
}

Попробуйте сами »

Другие примеры «Попробуйте сами» ниже.


Определение и использование

Свойство scroll-margin-block указывает расстояние в направлении блока между позицией привязки и контейнером.

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

Направление блока — это место, где размещается следующая строка по сравнению с позицией существующей строки, и это также то, как теги с CSS дисплей: блок; подобные теги

и

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

Позиция привязки — это позиция дочернего элемента, в которой он фиксируется в контейнере при остановке прокрутки.

Примечание: Это свойство работает, только если для свойства scroll-snap-align установлено значение «начало» или «конец» для направления блока.

Свойство scroll-margin-block является сокращенным свойством для следующих свойств:

  • scroll-margin-block-start
  • конец блока прокрутки

Значения свойства scroll-margin-block могут быть установлены разными способами:

Если свойство scroll-margin-block имеет два значения:

  • прокрутка-маржа-блок: 10px 50px;
    • расстояние в начале 10px
    • расстояние в конце 50px

Если свойство scroll-margin-block имеет одно значение:

  • scroll-margin-block: 10px;
    • расстояние в начале и в конце 10px

Чтобы увидеть эффект от свойства scroll-margin-block , scroll-margin-block и свойства scroll-snap-align должны быть установлены на дочерних элементах, а свойство scroll-snap-type должно быть установлено на родительском элементе.

CSS прокрутка-маржа-встроенная и свойства scroll-margin-block очень похожи на свойства CSS прокрутка-маржа-верхняя часть , нижняя граница прокрутки , прокрутка-поле-влево и scroll-margin-right , но прокрутка-маржа-блок и scroll-margin-inline свойства зависят от блочного и линейного направлений.

Значение по умолчанию: 0
Унаследовано: нет
Анимация: нет. Читать о анимируемом
Версия: CSS3
Синтаксис JavaScript: объект .style.scrollMarginBlock=»20px» Попробуй


Поддержка браузера

Числа в таблице указывают первую версию браузера, которая полностью поддерживает это свойство.

Недвижимость
полоса прокрутки 69,0 79,0 68,0 14,1 56,0



Синтаксис CSS

блок прокрутки: 0 | значение |начальное|наследовать;

Значения свойств

Значение Описание
0 По умолчанию. Значение элемента scroll-margin-block по умолчанию.
длина Задает расстояние в пикселях, точках, см и т. д. Отрицательное значение допустимы значения. Читать о единицах длины
начальный Устанавливает для этого свойства значение по умолчанию. Читать о начальный
унаследовать Наследует это свойство от родительского элемента.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *