Javascript.RU

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

Фиксированое положение блока по вертикали
Подскажите пожалуйста, как зафиксировать блок только для прокрутки по вертикали. Для прокрутке по горизонтали, должен смещаться с остальным контентом.
Ответить с цитированием
  #2 (permalink)  
Старый 16.08.2015, 13:52
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Можно так. Но это костыль
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="Keywords" content="">
<meta name="description" content="">
<title>ГГ</title>
<style>
*{
    margin:0;
    padding:0;
    outline: 0;
}

.container {
    position: relative;
    margin: 20px;
    width: 1500px;
    height: 1500px;
    border: 1px solid red;
}

.inner {
    margin: 50px;
    width: 200px;
    height: 200px;
    border: 1px solid red;
}
</style>
</head>
<body>
<div class="container">
  <div class="inner">Внутренний блок</div>
</div>
<script>

function Scroll(){
    var inner = document.querySelector('.inner');
    if ( typeof Scroll.x == 'undefined' ) {
        Scroll.x = window.pageXOffset || document.documentElement.scrollLeft;
        Scroll.y = window.pageYOffset || document.documentElement.scrollTop;
    }
    
    if (!((Scroll.x - window.pageXOffset == 0)&&(Scroll.y - window.pageYOffset== 0))) {
    var diffX = Scroll.x - window.pageXOffset;
    var diffY = Scroll.y - window.pageYOffset;
    }

    if (diffX != 0){
      inner.style.position = 'relative';
      inner.style.top = Scroll.y +'px';
      inner.style.left = null;
    }
    if (diffY != 0){
      inner.style.position = 'fixed';
      inner.style.top = null;
      inner.style.left =20 - Scroll.x + 'px';
    }
    Scroll.x = window.pageXOffset;
    Scroll.y = window.pageYOffset;
}

window.onscroll  = Scroll;
</script>
</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 16.08.2015, 15:24
Интересующийся
Отправить личное сообщение для Иван Федорович Посмотреть профиль Найти все сообщения от Иван Федорович
 
Регистрация: 22.07.2015
Сообщений: 18

Спасибо. Только при прокрутке сначала вниз, а потом в сторону блок перескакивает на верх. Как сделать чтобы он смещался в сторону с остальным контентом, но только уже не сверху, а на той высоте, куда его опустили.
Ответить с цитированием
  #4 (permalink)  
Старый 16.08.2015, 15:59
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Сообщение от Иван Федорович Посмотреть сообщение
Спасибо. Только при прокрутке сначала вниз, а потом в сторону блок перескакивает на верх. Как сделать чтобы он смещался в сторону с остальным контентом, но только уже не сверху, а на той высоте, куда его опустили.
не понял, что вы хотите. Попробуйте убрать эту строку:
inner.style.top = Scroll.y +'px';
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение по элементам блока без перезапуска функции выпадающеего меню. tutelaris Элементы интерфейса 4 26.04.2013 09:15
вычисление и фиксация ширины блока konstantin-mn jQuery 2 27.08.2012 11:42
слайд панели tadjik1 Элементы интерфейса 22 02.04.2012 17:13
Фиксированное положение блока при скролле свыше 145px Алексаднр Элементы интерфейса 4 10.11.2011 20:40
Два блока div разъезжаются при скроллинге окна браузера. call007 jQuery 0 03.04.2011 16:21