Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.09.2019, 21:02
Аспирант
Отправить личное сообщение для oleg901 Посмотреть профиль Найти все сообщения от oleg901
 
Регистрация: 12.08.2018
Сообщений: 54

внутренний Scroll + Position:fixed - тупик
Доброго времени суток, есть такой разметка
<div class="sidebar">
  
    <div id="scrollable">
    <div id="fixed">
        position:fixed        
    </div>
        Scrolling content<br><br><br>
        Так уж выходит, что общий скролл страницы задается вложенным слоем и в тоже время внутри слоя со скроллом находится фиксированный слой прикреплённый к потолку. 
        <br><br>
        В итоге мы имеем, что фиксированный слой наезжает на скролл. Как этого можно избежать?<br><br><br>
        Так уж выходит, что общий скролл страницы задается вложенным слоем и в тоже время внутри слоя со скроллом находится фиксированный слой прикреплённый к потолку. 
        <br><br>
        В итоге мы имеем, что фиксированный слой наезжает на скролл. Как этого можно избежать?<br><br><br>
        Так уж выходит, что общий скролл страницы задается вложенным слоем и в тоже время внутри слоя со скроллом находится фиксированный слой прикреплённый к потолку. 
        <br><br>
        В итоге мы имеем, что фиксированный слой наезжает на скролл. Как этого можно избежать?<br><br><br>
        Так уж выходит, что общий скролл страницы задается вложенным слоем и в тоже время внутри слоя со скроллом находится фиксированный слой прикреплённый к потолку. 
        <br><br>
        В итоге мы имеем, что фиксированный слой наезжает на скролл. Как этого можно избежать?
        
        
    </div>
</div>



div.sidebar {
    background: #fff;
    width: 100%;
}
div#scrollable {
    overflow-y: auto;
    height: 200px;
}
div#fixed {
    background: #76a7dc;
    color: #fff;
    position:fixed;
    top:0;
    height:50px;
    width:100%;
}




Проблема заключается в том, что при наведении на область с фиксированным контентом скролл перестает реагировать. Есть какие-нибудь идеи как можно решить данную задачу? P.s Частично вопрос решается заменой fixed на sticky, но частично и не поддерживается старыми браузерами хотелось бы найти более универсальное решение. За ранее спасибо за ответ

ссылка на пример:
http://jsfiddle.net/8rqetnyo/
Ответить с цитированием
  #2 (permalink)  
Старый 10.09.2019, 21:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

oleg901,
как вариант ...
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
*{
    margin: 0;
    padding: 0;
}
   div.sidebar {
    background: #fff;
    width: 100%;
}
div#scrollable {
    overflow-y: auto;
    height: 200px;
}
div#fixed {
    background: #76a7dc;
    color: #fff;
    position:fixed;
    top:0;
    height:50px;
    width:  calc(100% - 16px);
    pointer-events: none;
}



  </style>

</head>

<body>
<div class="sidebar">

    <div id="scrollable">
    <div id="fixed">
        position:fixed
    </div>
        Scrolling content<br><br><br>
        Так уж выходит, что общий скролл страницы задается вложенным слоем и в тоже время внутри слоя со скроллом находится фиксированный слой прикреплённый к потолку.
        <br><br>
        В итоге мы имеем, что фиксированный слой наезжает на скролл. Как этого можно избежать?<br><br><br>
        Так уж выходит, что общий скролл страницы задается вложенным слоем и в тоже время внутри слоя со скроллом находится фиксированный слой прикреплённый к потолку.
        <br><br>
        В итоге мы имеем, что фиксированный слой наезжает на скролл. Как этого можно избежать?<br><br><br>
        Так уж выходит, что общий скролл страницы задается вложенным слоем и в тоже время внутри слоя со скроллом находится фиксированный слой прикреплённый к потолку.
        <br><br>
        В итоге мы имеем, что фиксированный слой наезжает на скролл. Как этого можно избежать?<br><br><br>
        Так уж выходит, что общий скролл страницы задается вложенным слоем и в тоже время внутри слоя со скроллом находится фиксированный слой прикреплённый к потолку.
        <br><br>
        В итоге мы имеем, что фиксированный слой наезжает на скролл. Как этого можно избежать?


    </div>
</div>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 10.09.2019, 21:50
Аспирант
Отправить личное сообщение для oleg901 Посмотреть профиль Найти все сообщения от oleg901
 
Регистрация: 12.08.2018
Сообщений: 54

Круто, спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 10.09.2019, 23:55
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от oleg901
Частично вопрос решается заменой fixed на sticky
Ваш вопрос полностью решается при помощи position: sticky;, это универсальное решение, которое очень хорошо поддерживается всеми браузерами (для iOS Safari липучее позиционирование работает с префиксом position: -webkit-sticky;) https://caniuse.com/#feat=mdn-css_pr...osition_sticky

<div class="sidebar">
	<div id="scrollable">
		<div id="fixed">
			position:fixed
		</div>
		Scrolling content<br><br><br> Так уж выходит, что общий скролл страницы задается вложенным слоем и в тоже время внутри слоя со скроллом находится фиксированный слой прикреплённый к потолку.
		<br><br> В итоге мы имеем, что фиксированный слой наезжает на скролл. Как этого можно избежать?<br><br><br> Так уж выходит, что общий скролл страницы задается вложенным слоем и в тоже время внутри слоя со скроллом находится фиксированный слой прикреплённый
		к потолку.
		<br><br> В итоге мы имеем, что фиксированный слой наезжает на скролл. Как этого можно избежать?<br><br><br> Так уж выходит, что общий скролл страницы задается вложенным слоем и в тоже время внутри слоя со скроллом находится фиксированный слой прикреплённый
		к потолку.
		<br><br> В итоге мы имеем, что фиксированный слой наезжает на скролл. Как этого можно избежать?<br><br><br> Так уж выходит, что общий скролл страницы задается вложенным слоем и в тоже время внутри слоя со скроллом находится фиксированный слой прикреплённый
		к потолку.
		<br><br> В итоге мы имеем, что фиксированный слой наезжает на скролл. Как этого можно избежать?

	</div>
</div>

<style>

.sidebar {
	background: #fff;
	width: 100%;
	border: 1px solid red;
}
#scrollable {
	overflow-y: auto;
	height: 200px;
}
#fixed {
	background: #76a7dc;
	color: #fff;
	position: -webkit-sticky;
	position: sticky;
	top: 0;
	height: 50px;
	width: 100%;
}
::-webkit-scrollbar {
	width: 1em;
	background: #eee;
}
::-webkit-scrollbar-thumb {
	background: #ccc;
	border: 0.2em solid #eee;
	border-radius: 1em;
}

</style>


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

Живые люди используют в повседневной жизни Chrome (больше всего для Android, затем для компьютера), iOS Safari, в меньшей степени Firefox и Edge, в этих браузерах всё работает нормально, а остальное используют, либо боты, либо тестировщики, либо какие-то особо малочисленные и редкие люди, которые получают оргазм от просмотра поломанного YouTube!

рони, в вашем примере содержимое заезжает под область с фиксированным контентом, т. е. её не видно, а сама область с фиксированным контентом не сможет содержать элементы, на которые можно будет нажать!
Ответить с цитированием
  #5 (permalink)  
Старый 11.09.2019, 00:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Malleys,
ок, ваш вариант лучше.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эффект blur при scroll для background s24344 Элементы интерфейса 1 26.05.2018 07:54
scroll после resize bipib Events/DOM/Window 5 24.05.2018 14:50
Scroll menu, подсветка активных пунктов меню при скролле makissm21 AJAX и COMET 13 29.04.2017 19:28
Position:fixed внутри Position:absolute cyber_bober (X)HTML/CSS 9 11.03.2016 00:41
OFF scroll на body > ON scroll children barkar Общие вопросы Javascript 5 15.04.2014 21:24