Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 26.09.2016, 09:26
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

warren buffet,
Все блоки, у которых атрибут data, при прокрутке страницы, имеют начальное значение, указанное в атрибуте data-val, и при достижении центра экрана (по вертикали) отступ меняют до нуля. Ну а там где в атрибуте data-val указано отрицательное значение, при прокрутке оно не меняется, не уменьшается до нуля.
С margin пытался, не получается, мне ведь нужен отступ для каждого блока только с какой-то одной стороны.
Ответить с цитированием
  #12 (permalink)  
Старый 26.09.2016, 09:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от рони
я без понятия что делает ваш код.
LADYX,
где вы взяли формулу для расчёта, и что она считает?
формула классическая =
Сообщение от warren buffet
значит должен быть старт и стоп,
Цитата:
result = (to - from) * delta(progress) + from
описание тут
osnovnaya-formula
и тут
https://learn.javascript.ru/js-animation
пример реализации
Нажатие кнопки = генерация числа, отпускание кнопки = остановка генерации числа.
Ответить с цитированием
  #13 (permalink)  
Старый 26.09.2016, 11:49
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Короче, народ, обычно делается наоборот. Сначала в инспекторе браузера выясняешь какой метод применим и какой применим лучше, потом применяешь. Не двигается? Выводишь в консоль циферки, там двигается? Значит метод применения стилей неправильный. Открываешь инспектор, вписываешь вручную, смотришь.

Вам на кой такого могучего инспектора написали? Щас даже ховеры там есть. Из испектора стили копируются как правила, причем отключенные правила копируются закомментированными.

Последний раз редактировалось warren buffet, 26.09.2016 в 11:51.
Ответить с цитированием
  #14 (permalink)  
Старый 26.09.2016, 17:21
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

Вопрос решается заменой строки:
$(this).css({transform: el.dataset.tr+"("+ margMin +"px)"});

на:
$(this).css({[el.dataset.tr]: margMin +"px"});

в целом скрипт:
$(function() {

var $win = $(window),
    $rev = $('[data-tr]'),
    winH2 = 0,
    winSt = 0;

function reveal() {

  winSt = $win.scrollTop();
  winH2 = $win.height()/2;

  $rev.each(function(i, el){
    var y = el.getBoundingClientRect().top,
        toMiddleMax = Math.max(0, y-winH2),
        idealMarg   = Math.min(+el.dataset.val, toMiddleMax),
        margMin     = Math.min(idealMarg, idealMarg * (toMiddleMax/winH2));
    $(this).css({[el.dataset.tr]: margMin +"px"});
  });

}
$win.on({
  "load resize scroll" : reveal
});

});

<div class="block" data-tr="margin-left (или любое другое свойство)" data-val="300"></div>


Но теперь возникает другой вопрос: Только один браузер - Internet Explorer не понимает:
[el.dataset.tr]
Ответить с цитированием
  #15 (permalink)  
Старый 26.09.2016, 17:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от LADYX
Вопрос решается заменой строки:
по моему бред, но раз у вас работает ... квадратные скобки зачем?
Ответить с цитированием
  #16 (permalink)  
Старый 26.09.2016, 18:27
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

рони,
без квадратных скобок не работает. Вот смотрите https://jsfiddle.net/LADYX/01904e4b/1/ , что мне нужно, там наглядный пример. Так вот этот скрипт работает везде, кроме IE. IE не понимает именно вот это:
[el.dataset.tr]
Ответить с цитированием
  #17 (permalink)  
Старый 26.09.2016, 18:31
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Смотря какая версия. Просто бери атрибут методом - .getAttribute('data-tr') - верняк.
Ответить с цитированием
  #18 (permalink)  
Старый 26.09.2016, 18:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

LADYX,
.... и будет вам счатье в ie
$rev.each(function(i, el){
    var y = el.getBoundingClientRect().top,
        toMiddleMax = Math.max(0, y-winH2),
        idealMarg   = Math.min(+el.dataset.val, toMiddleMax),
        margMin     = Math.min(idealMarg, idealMarg * (toMiddleMax/winH2));
        var opt = {};
        opt[el.dataset.tr] = margMin +"px";
    $(this).css(opt);
  });
Ответить с цитированием
  #19 (permalink)  
Старый 26.09.2016, 18:36
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Я тоже не понял, что это за язык, на обычном жс строка

$(this).css({[el.dataset.tr]: margMin +"px"});

выглядела бы так

this.style[el.getAttribute('data-tr')]=margMin+'px';
Ответить с цитированием
  #20 (permalink)  
Старый 26.09.2016, 18:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от warren buffet
Я тоже не понял, что это за язык
es6
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработчик событий для динамически добавленных элементов Tecvid Events/DOM/Window 28 25.06.2018 13:49
Имитация элемента label не для элементов формы Jeremen Events/DOM/Window 3 09.01.2015 21:25
Пишу плагин. Не работает.live('click') для элементов. mr_freeman jQuery 4 20.12.2012 20:00
TreeStore, стили для элементов дерева. Black_Prince ExtJS 1 26.09.2011 13:33
Некорректно работает функция для создания элементов exec Общие вопросы Javascript 4 13.07.2010 11:15