Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.01.2017, 20:43
Аспирант
Отправить личное сообщение для CraftLawrence Посмотреть профиль Найти все сообщения от CraftLawrence
 
Регистрация: 22.11.2014
Сообщений: 44

Плавное перемещение объекста
Доброго вечера.
Необходимо реализовать следующее: в шапке сайта есть кнопка "заказать обратный звонок". Нужно, чтобы при прокрутке страницы ниже она плавно улетела вправо-вниз, и там стала "position: fixed".

Сейчас сделал костылями.
Изначально кнопка висит справа снизу. А если экран в самом верху, то она перелетает в шапку сайта.
$(window).scroll(function(){
    var border = (document.documentElement.clientWidth - 980) / 2; // вычисляю ширину отступов по бокам сайта (нужно для перемещения вправо-влево в одну и ту же точку, независимо от ширины экрана)
    var width = document.documentElement.clientWidth; // нужно для условия (см.код)
    var height = document.documentElement.clientHeight; // нужно для условия, а также для высчитывания расстояния перелета на разных экранах
    if ( width > 950 && height > 540 ) { // Ограничение размеров экрана т.к. в translate ниже стоят "-", а при меньшем экране чем задано в этом условии, в translate передаются отрицательные числа, и выходит --n и стиль не работает
        if ($(this).scrollTop() = 10) { // Проверка, в самом ли мы верху.  Если да, то 
            $( ".air_call" ).css({
                'transform': 'translate(-'+(border+60)+'px, -'+(height-540)+'px)', // то добавляем стиль перемещения. С этими параметрами кнопка на пк улетает куда надо. Но на телефонах идет промах из-за того что есть строка ввода адреса, которая то пропадает то появляется и идет сбой
            });
        }
        else {
            $( ".air_call" ).css({
                'transform': '', // если нет, то возвращаем обратно вправо вниз
            });
        }
    }
});


Минусы этого решения очевидны. Да, можно доработать, чтобы функция могла не только поднимать кнопку выше, но и ниже, если экран достаточно мал и в начале она была выше её конечного пункта назначения.
Но мне нужен более надёжный и адекватный способ.

Может, есть способ, как перемещать объект между блоками с id="start_point" и id="end_point", с учетом, что начальная точка position: relative, а конечная - fixed?

Последний раз редактировалось CraftLawrence, 12.01.2017 в 20:57.
Ответить с цитированием
  #2 (permalink)  
Старый 12.01.2017, 21:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

CraftLawrence,
а пример можно? а то как то не укладывается
Сообщение от CraftLawrence
Изначально кнопка висит справа снизу. А если экран в самом верху, то она перелетает в шапку сайта
Нужно, чтобы при прокрутке страницы ниже она плавно улетела вправо-вниз
Ответить с цитированием
  #3 (permalink)  
Старый 12.01.2017, 22:29
Аспирант
Отправить личное сообщение для CraftLawrence Посмотреть профиль Найти все сообщения от CraftLawrence
 
Регистрация: 22.11.2014
Сообщений: 44

Сообщение от рони Посмотреть сообщение
CraftLawrence,
а пример можно? а то как то не укладывается

Нужно, чтобы при прокрутке страницы ниже она плавно улетела вправо-вниз
На локальной машине(
Да, нужно именно чтобы она с position: relative улетала вправо-вниз и ставала fixed.
А я сейчас сделал, что оно по-умолчанию fixed и находится справа-снизу, а при скроле в самый верх с помощью CSS летит вверх в шапку. А как только скрол ниже, сразу стиль убирается и кнопка летит туда, где она прописана по CSS - вправо-вниз.
Ответить с цитированием
  #4 (permalink)  
Старый 12.01.2017, 23:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

CraftLawrence,
не понимаю вас, что мешает добавить минимальный html и css к коду выше.
пример Плавающий блок, замирающий над футером
Ответить с цитированием
  #5 (permalink)  
Старый 13.01.2017, 13:57
Аспирант
Отправить личное сообщение для CraftLawrence Посмотреть профиль Найти все сообщения от CraftLawrence
 
Регистрация: 22.11.2014
Сообщений: 44

Сообщение от рони Посмотреть сообщение
CraftLawrence,
не понимаю вас, что мешает добавить минимальный html и css к коду выше.
пример Плавающий блок, замирающий над футером
Ну, ок.
<header>
    <a href="#" class="air_call"></a>
</header>


.air_call {
    z-index: 5;
    display: block;
    width: 65px;
    height: 65px;
    position: fixed;
    border-radius: 50%;
    transition: .5s;
    background: #61a7a1 url(/img/call.png) center center no-repeat;
    background-size: 80%;
    right: 55px;
    bottom: 250px;
}
Ответить с цитированием
  #6 (permalink)  
Старый 13.01.2017, 15:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

CraftLawrence,
так?
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  body {
    height: 2000px;
  }

   .air_call {
    z-index: 5;
    display: block;
    width: 65px;
    height: 65px;
    position: fixed;
    border-radius: 50%;
    transition: .5s;
    background: #61a7a1 url(/img/call.png) center center no-repeat;
    background-size: 80%;
    right: 55px;
    bottom: 250px;
    transition: all 1s ease-in;
}

.to{
    right: 0px;
    bottom: 0px;
}

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
$(window).scroll(function(){
     $( ".air_call" ).toggleClass('to',$(this).scrollTop() > 10)
});

});
  </script>
</head>

<body>

<header>


    <a href="#" class="air_call"></a>


</header>


</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 13.01.2017, 20:35
Аспирант
Отправить личное сообщение для CraftLawrence Посмотреть профиль Найти все сообщения от CraftLawrence
 
Регистрация: 22.11.2014
Сообщений: 44

Сообщение от рони
CraftLawrence,
так?
Нет-нет.

Вот, нарисовал на картинке.
Сначала оно в хедере, потом при скроле вниз ПЛАВНО уплывает туда, в угол вниз. Если и так будет не понятно, я сдаюсь)
Ответить с цитированием
  #8 (permalink)  
Старый 13.01.2017, 20:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

CraftLawrence,
или скрипт выше, делает то, что вы просите, либо я вас не понимаю и более ничем помочь не могу
Ответить с цитированием
  #9 (permalink)  
Старый 13.01.2017, 20:46
Аспирант
Отправить личное сообщение для CraftLawrence Посмотреть профиль Найти все сообщения от CraftLawrence
 
Регистрация: 22.11.2014
Сообщений: 44

Сообщение от рони Посмотреть сообщение
CraftLawrence,
или скрипт выше, делает то, что вы просите, либо я вас не понимаю и более ничем помочь не могу
Скрипт выше лишь меняет параметры right и bottom. А мне нужно, чтобы relative превратилось в fixed. Попробуйте, оно не работает ровно и красиво с помощью простого transition. Оно телепортируется вниз, а потом плавно летит вправо. А мне нужно, чтобы "полет" был плавным, по диагонали.
Ответить с цитированием
  #10 (permalink)  
Старый 13.01.2017, 21:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

CraftLawrence,
ок ... у меня нет вариантов
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать плавное перемещение картинки ArsenInvoker Элементы интерфейса 21 07.03.2015 13:25
Перемещение плавное объекта programmwriter jQuery 3 17.09.2014 11:54
Плавное перемещение картинок в галерее Адриан Общие вопросы Javascript 0 09.02.2012 20:43
Плавное перемещение выделения меню igsavenko jQuery 5 22.06.2011 15:16
Grid - roweditor плавное перемещение Jevgeny ExtJS 2 26.10.2010 14:43