Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.07.2018, 11:15
Новичок на форуме
Отправить личное сообщение для webmasterhtml Посмотреть профиль Найти все сообщения от webmasterhtml
 
Регистрация: 11.07.2018
Сообщений: 1

Фиксация сайдбара при прокрутке
Здравствуйте! Помогите, пожалуйста. Нужно, чтобы сайдбар (#sidebar) фиксировался при прокрутке, когда сверху остаётся 10 пикселей.

http://jsfiddle.net/86w9vboc/10/
Ответить с цитированием
  #2 (permalink)  
Старый 11.07.2018, 12:02
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<style>
header {
 width: 100%;
 background: #D8E3AB no-repeat 5% 50%;
 height: 115px;
 position: relative;
}

#sidebar { /* Левая колонка */
 position:relative;
 float: left;
 border: 1px solid #333;
 width: 230px;
 padding: 20px;
 margin: 10px 10px 20px 5px;
 background: #fff8dd;
}
#content { /* Правая колонка */
 margin: 10px 5px 20px 290px;
 padding: 20px;
 border: 1px solid #333;
 background: #fff8dd;
 min-height: 423px;
}
</style>
<header></header>
<div id="sidebar">
<b>Меню</b>
	<ul>
		<li><a href="/"><img src="admin/news.png" height="40" width="110" class="animate1" title="" alt="Новости"></a></li>
		<li><a href="/о-компании"><img src="admin/about.png" height="40" width="140" class="animate1" title="" alt="О компании"></a></li>
		<li><a href="/тарифы"><img src="admin/tariffs.png" height="40" width="110" class="animate1" title="" alt="Тарифы"></a></li>
		<li><a href="/контакты"><img src="admin/connect.png" height="40" width="120" class="animate1" title="" alt="Контакты"></a></li>
	</ul>
<b>Погода</b>
<p><center><table>
<tr><td>
<!-- Gismeteo informer START -->
<link rel="stylesheet" type="text/css" href="https://nst1.gismeteo.ru/assets/flat-ui/legacy/css/informer.min.css">
    <div id="gsInformerID-gwCH5K54g36hHg" class="gsInformer" style="width:210px;height:116px">
        <div class="gsIContent">
            <div id="cityLink">
                                    <a href="https://www.gismeteo.ru/weather-yelizovo-4908/" target="_blank">Погода в Елизово</a>
            </div>
            <div class="gsLinks">
                <table>
                    <tr>
                        <td>
                            <div class="leftCol">
                                <a href="https://www.gismeteo.ru/" target="_blank">
                                    <img alt="Gismeteo" title="Gismeteo" src="https://nst1.gismeteo.ru/assets/flat-ui/img/logo-mini2.png" align="middle" border="0" />
                                    <span>Gismeteo</span>
                                </a>
                            </div>
                            <div class="rightCol">
                                <a href="https://www.gismeteo.ru/weather-yelizovo-4908/2-weeks/" target="_blank">Прогноз на 2 недели</a>
                            </div>
                        </td>
                        </tr>
                                    </table>
            </div>
        </div>
    </div>
<script async src="https://www.gismeteo.ru/api/informer/getinformer/?hash=gwCH5K54g36hHg" type="text/javascript"></script>
<!-- Gismeteo informer END -->
</td>
</tr>
</table></center>
</div>
<div id="content"></div>
<script>
var roof = +getComputedStyle(document.querySelector('header')).height.replace('px','') + 10;

window.onscroll = function()  {

    var scrolled = window.pageYOffset || document.documentElement.scrollTop;
    if(scrolled > roof)   sidebar.style.top = scrolled - roof + "px";
}
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 11.07.2018, 13:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

скролл фиксация меню
webmasterhtml,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  header {
 width: 100%;
 background: #D8E3AB no-repeat 5% 50%;
 height: 115px;
 position: relative;
}

#sidebar { /* Левая колонка */
 position:relative;
 float: left;
 border: 1px solid #333;
 width: 230px;
 padding: 20px;
 margin: 10px 10px 20px 5px;
 background: #fff8dd;
}
#content { /* Правая колонка */
 margin: 10px 5px 20px 290px;
 padding: 20px;
 border: 1px solid #333;
 background: #fff8dd;
 min-height: 423px;
}
#sidebar.fix{
    position:  fixed;
    top: 0;
}
  </style>

</head>

<body>
<header></header>
<div id="sidebar">
<b>Меню</b>
    <ul>
        <li><a href="/"><img src="admin/news.png" height="40" width="110" class="animate1" title="" alt="Новости"></a></li>
        <li><a href="/о-компании"><img src="admin/about.png" height="40" width="140" class="animate1" title="" alt="О компании"></a></li>
        <li><a href="/тарифы"><img src="admin/tariffs.png" height="40" width="110" class="animate1" title="" alt="Тарифы"></a></li>
        <li><a href="/контакты"><img src="admin/connect.png" height="40" width="120" class="animate1" title="" alt="Контакты"></a></li>
    </ul>
<b>Погода</b>
<p><center><table>
<tr><td>
<!-- Gismeteo informer START -->
<link rel="stylesheet" type="text/css" href="https://nst1.gismeteo.ru/assets/flat-ui/legacy/css/informer.min.css">
    <div id="gsInformerID-gwCH5K54g36hHg" class="gsInformer" style="width:210px;height:116px">
        <div class="gsIContent">
            <div id="cityLink">
                                    <a href="https://www.gismeteo.ru/weather-yelizovo-4908/" target="_blank">Погода в Елизово</a>
            </div>
            <div class="gsLinks">
                <table>
                    <tr>
                        <td>
                            <div class="leftCol">
                                <a href="https://www.gismeteo.ru/" target="_blank">
                                    <img alt="Gismeteo" title="Gismeteo" src="https://nst1.gismeteo.ru/assets/flat-ui/img/logo-mini2.png" align="middle" border="0" />
                                    <span>Gismeteo</span>
                                </a>
                            </div>
                            <div class="rightCol">
                                <a href="https://www.gismeteo.ru/weather-yelizovo-4908/2-weeks/" target="_blank">Прогноз на 2 недели</a>
                            </div>
                        </td>
                        </tr>
                                    </table>
            </div>
        </div>
    </div>
<script async src="https://www.gismeteo.ru/api/informer/getinformer/?hash=gwCH5K54g36hHg" type="text/javascript"></script>
<!-- Gismeteo informer END -->
</td>
</tr>
</table></center>
</div>
<div id="content"></div>

<script>
var sidebar = document.querySelector('#sidebar');
window.onscroll = function()  {
    var roof = document.querySelector('header').getBoundingClientRect().bottom;
    roof < 0 ? sidebar.classList.add("fix") : sidebar.classList.remove("fix");
}
</script>

</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 11.07.2018, 14:17
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

рони,
Да, fixed поспокойнее при прокрутке колесом
Ответить с цитированием
  #5 (permalink)  
Старый 11.07.2018, 14:56
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

webmasterhtml,
можно же обойтись без js, просто добавьте в сайдбар

position: sticky;
 top: 10px;


Явно экономит больше места в html
Ответить с цитированием
  #6 (permalink)  
Старый 11.07.2018, 15:05
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

madeas,
способ отличный, один минус: в IE не сработает
Ответить с цитированием
  #7 (permalink)  
Старый 11.07.2018, 15:14
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

j0hnik,
так-то да, к сожалению. Но если верить гугл тренду, то IE использует незначительное количество пользователей. Ими можно и пожертвовать))
Ответить с цитированием
  #8 (permalink)  
Старый 11.07.2018, 15:48
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

madeas,
А пример в студию можно? На основе макетов в предыдущих примерах
Ответить с цитированием
  #9 (permalink)  
Старый 11.07.2018, 15:53
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Dilettante_Pro, на основе вашего макета
<style>
header {
 width: 100%;
 background: #D8E3AB no-repeat 5% 50%;
 height: 115px;
 position: relative;
}

#sidebar { /* Левая колонка */
 position:relative;
 float: left;
 border: 1px solid #333;
 width: 230px;
 padding: 20px;
 margin: 10px 10px 20px 5px;
 background: #fff8dd;
/* добаавляем */
 position: sticky;
 top: 10px;

}
#content { /* Правая колонка */
 margin: 10px 5px 20px 290px;
 padding: 20px;
 border: 1px solid #333;
 background: #fff8dd;
 min-height: 823px;
}
</style>
<header></header>
<div id="sidebar">
<b>Меню</b>
	<ul>
		<li><a href="/"><img src="admin/news.png" height="40" width="110" class="animate1" title="" alt="Новости"></a></li>
		<li><a href="/о-компании"><img src="admin/about.png" height="40" width="140" class="animate1" title="" alt="О компании"></a></li>
		<li><a href="/тарифы"><img src="admin/tariffs.png" height="40" width="110" class="animate1" title="" alt="Тарифы"></a></li>
		<li><a href="/контакты"><img src="admin/connect.png" height="40" width="120" class="animate1" title="" alt="Контакты"></a></li>
	</ul>
<b>Погода</b>
<p><center><table>
<tr><td>
<!-- Gismeteo informer START -->
<link rel="stylesheet" type="text/css" href="https://nst1.gismeteo.ru/assets/flat-ui/legacy/css/informer.min.css">
    <div id="gsInformerID-gwCH5K54g36hHg" class="gsInformer" style="width:210px;height:116px">
        <div class="gsIContent">
            <div id="cityLink">
                                    <a href="https://www.gismeteo.ru/weather-yelizovo-4908/" target="_blank">Погода в Елизово</a>
            </div>
            <div class="gsLinks">
                <table>
                    <tr>
                        <td>
                            <div class="leftCol">
                                <a href="https://www.gismeteo.ru/" target="_blank">
                                    <img alt="Gismeteo" title="Gismeteo" src="https://nst1.gismeteo.ru/assets/flat-ui/img/logo-mini2.png" align="middle" border="0" />
                                    <span>Gismeteo</span>
                                </a>
                            </div>
                            <div class="rightCol">
                                <a href="https://www.gismeteo.ru/weather-yelizovo-4908/2-weeks/" target="_blank">Прогноз на 2 недели</a>
                            </div>
                        </td>
                        </tr>
                                    </table>
            </div>
        </div>
    </div>
<script async src="https://www.gismeteo.ru/api/informer/getinformer/?hash=gwCH5K54g36hHg" type="text/javascript"></script>
<!-- Gismeteo informer END -->
</td>
</tr>
</table></center>
</div>
<div id="content"></div>
Ответить с цитированием
  #10 (permalink)  
Старый 11.07.2018, 15:58
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

j0hnik,
Таки он не так себя ведет, как в примерах рони или моем.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена изображений при наведении и фиксация при клике Noonf Общие вопросы Javascript 3 20.01.2018 17:18
Добавление класса элементу при прокрутке к этому элементу patriot94 Общие вопросы Javascript 5 18.03.2014 12:41
Как при прокрутке страницы оставлять элемент на месте? FRIE jQuery 1 02.08.2012 20:54
Появляющаяся/исчезающая кнопка при прокрутке страницы MailRes Элементы интерфейса 2 22.06.2011 11:49
Баг при прокрутке грида posta ExtJS 0 17.06.2011 14:18