Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 19.01.2018
Сообщений: 12

Получить значение свойства CSS для функции

19.01.2018, 11:43. Показов 2191. Ответов 3

Студворк — интернет-сервис помощи студентам
Здравствуйте. Делаю параллакс эффект с помощью transform: translateY().
Вот, как здесь, если кому интересно. Там изначально каждый следующий 'text' имеет чуть большее значение translateY().

jQuery и JS знаю поверхностно.

Условия :

есть несколько элементов с изображениями, назовём их <div class='box'>. Внутри них картинка и элемент с текстом = 'text'. Они ('text') абсолютно спозиционированы относительно('box') и должны принимать эффект параллакс при скролле страницы. Это не важно, здесь всё как надо.

Я реализую это следующий методом :

JavaScript
1
2
3
4
5
6
7
$(window).scroll(function(){
     var s = $(this).scrollTop();
 
     $('.text').css({
      'transform': 'translateY(' + s / 3 + 'px)'
    });
});
Таким образом эффект параллакс применяется ко всем элементам 'text'
Но при скроллинге каждый нижний элемент уже принял значение scrollTop(), поэтому элементы ниже третьего скрываются.

Задача :

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

Так как я не силён в jQuery и JS, то я пытался колхозить :

Присвоил каждому элементу с классом 'text' дополнительный класс : one, two и т.д.
И изначально задавать ему transform: translateY(); с отрицательным значением исходя из его положения в документе.
Но тогда при скролле элемент резко соскакивает вниз и при обратном скролле уже не возвращается на свою позицию

Я создавал переменные,

JavaScript
1
2
3
4
5
6
7
    var one   = $('.one');
    var two   = $('.two');
    var three = $('.three');
    var four  = $('.four');
    var five  = $('.five');
    var six   = $('.six');
    var seven = $('.seven');
но не получилось получить значение их свойства transform. Возможно есть какой-то способ, типа
JavaScript
1
var one   = $('.one').css('transform', 'translateY').val;
я экспериментировал, но ничего не вышло. Пытался создавать глобальные переменные, но из-за слабого знания синтаксиса jQuery не понимаю, как это правильно написать. Чтобы задать начальную позицию, а потом вычитать из неё значение переменной var s = $(this).scrollTop();

Я пытался запустить цикл

var m = $('.text'); // Вот здесь не понятно, как получить в массив значения нужного мне свойства ? .val или .css.val или .value. Мне разок бы подсказать этот нюанс, суть синтаксиса. Или
JavaScript
1
$('.text').css('transform', 'translateY()').val
и нужно ли в CSS указывать transform: translateY или только объявлять в скрипте ? И в функции или в качестве глобальных переменных ?

JavaScript
1
2
3
4
5
var m = $('.text');
 
 for (var i=0; i.<m.length; i++) {
      m[i].css('transform', 'translateY(' + s + 'px');
    }
Что-то такое пытался сделать, чтобы цикл выдавал каждый элемент в порядке его очереди в HTML документе, и каждому следующему изначально давал некое отрицательное значение с которым потом работал scrollTop()

Пытался добавить в переменную значение свойства, но..
JavaScript
1
one.css({'transform': 'translateY(0)'});
Но понял, что всё это чушь и есть какие-то грамотные решения, до которых я без подсказок или нужного уровня знаний не смогу додуматься.

Прошу помощи, заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.01.2018, 11:43
Ответы с готовыми решениями:

Получить css свойства объекта
вот так устанавливаю css свойства объекта, к примеру var el=document.getElementsByTagName(&quot;input&quot;); el.style.width=100; свойство...

Получить значение свойства
Добрый день. Есть процедура DBGridDblClick(TObject *Sender)класс Sender'a - TDBGridEh. Как получить значение свойства DataSource, без...

Получить значение свойства класса
Здравствуйте, Чет я немного зависла. Есть класс. В нем одно свойство и один метод. На форме две кнопки. Класс : class...

3
0 / 0 / 0
Регистрация: 19.01.2018
Сообщений: 12
23.01.2018, 01:29  [ТС]
Разобрался

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$(window).scroll(function(){
    var s       = $(this).scrollTop(),
        s3      = s / 3,
        one     = $('.one'),
        two     = $('.two'),
        three   = $('.three'),
        four    = $('.four'),
        five    = $('.five'),
        six     = $('.six'),
        seven   = $('.seven');
 
     one.css({
      'transform': 'translateY(' + s3 + 'px)'
    });
    two.css({
      'transform': 'translateY(' + (-300 + s3) + 'px)'
    });
    three.css({
      'transform': 'translateY(' + (-600 + s3) + 'px)'
    });
    four.css({
      'transform': 'translateY(' + (-900 + s3) + 'px)'
    });
    five.css({
      'transform': 'translateY(' + (-1200 + s3) + 'px)'
    });
    six.css({
      'transform': 'translateY(' + (-1500 + s3) + 'px)'
    });
    seven.css({
      'transform': 'translateY(' + (-1800 + s3) + 'px)'
    });
0
707 / 309 / 191
Регистрация: 05.03.2015
Сообщений: 822
23.01.2018, 01:39
Возможно есть смысл не хардкодить шаг 300, а использовать $(el).offset() для отпределения координат элемента относительно документа. Пример вашего случая:

JavaScript
1
2
  'transform': 'translateY(' + (-300 + s3) + 'px)' // было
  'transform': 'translateY(' + (-$(el).offset().top + s3) + 'px)' // станет
0
0 / 0 / 0
Регистрация: 19.01.2018
Сообщений: 12
01.02.2018, 12:51  [ТС]
Здравствуйте. Извините за столь поздний ответ, не видел

Попробовал сейчас Ваш вариант и у меня не работает. Если я пробую для одного изображения :

JavaScript
1
2
3
two.css({
      'transform': 'translateY(' + (-$(two).offset().top + s3) + 'px)'
    });
или

JavaScript
1
2
3
two.css({
      'transform': 'translateY(' + (- two.offset().top + s3) + 'px)'
    });
я правильно понимаю, что мне всё равно придётся для каждого элемента : one, two, three и т.д., указывать .css({}), так что разница между Вашим примером и моим заключается в том, что не нужно указывать точное число ?

Или, если есть возможность обернуть всё в функцию и для каждого указать общий offset().top, чтобы каждое изображение получало свои координаты относительно документа ?

Кстати, я столкнулся с тем, что при уменьшении ширины окна браузера, координаты -300, -600 уже неактуальны. И не получается изменить их с window.resize или @media
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.02.2018, 12:51
Помогаю со студенческими работами здесь

Получить значение свойства объекта
Здравствуйте, у меня есть небольшой кодик, основная суть: я создал структуру &quot;TRAIN&quot; с конструктором, в котором 3 свойства, а...

Для заданных a, b, c получить значение функции h
h=max(a,b+c)+min(ac,bc) если можно, пожалуйста, объясните

Не удается получить значение свойства зависимости?
Есть класс - описывающий свойство зависимости namespace WpfApp1 { class BrushClass: InkCanvas { public static ...

Не могу получить значение свойства объекта
Добрый вечер! Возникла такая проблема, не могу получить значение свойства BalloonContentHeader. Подскажите, как сделать чтобы содержимое...

Получить значение свойства из другого класса
Здравствуйте. Скорее всего мой вопрос не очень сложен. Однако, я не смог найти ответа с помощью гугла. Простите. В Bootstrap есть понятие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru