Горизонтальная прокрутка окна до элемента на устройствах и на рабочем столе

У меня есть веб-сайт с горизонтальной прокруткой, так как страница шире, чем область просмотра. У меня также есть фиксированное меню, и когда пользователь щелкает ссылку в меню, окно должно прокручиваться до определенного элемента, такого как код ниже.

Это отлично работает на рабочем столе, но на устройствах левое значение не совпадает, поэтому оно не будет прокручиваться до нужной позиции. Как рассчитать правое левое значение, чтобы оно работало на всех устройствах?

$('.link').bind('click', function () {
 window.scrollTo({
    top: null,
    left: 2600,
    behavior: 'smooth'
  });
});
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
43
1

Ответы 1

Вы можете рассчитать значение для динамической прокрутки, получив offset().left целевого элемента.

Также обратите внимание, что bind() устарела длинная время назад, и вы не должны его использовать. Вместо этого используйте либо click(), либо on(). Я также предлагаю проверить версию jQuery, которую вы используете. Если он старше 1.12.1, вам обязательно нужно обновить его.

Вот пример всего вышеперечисленного:

$('.link').on('click', function () {
  window.scrollTo({
    left: $('#yourTargetElement').offset().left,
    behavior: 'smooth'
  });
});

Это дает мне другое значение каждый раз, когда я нажимаю, в зависимости от того, какое положение прокрутки у меня есть в это время.

Niryana 19.02.2019 15:28

Хорошо - это зависит от того, как структурированы ваши HTML и CSS. Попробуйте вместо этого использовать position().left

Rory McCrossan 19.02.2019 16:36

Это даст мне значение 0:/

Niryana 20.02.2019 09:48

В этом случае, пожалуйста, добавьте свой HTML и CSS к вопросу. Трудно отлаживать то, что вы нам не показали

Rory McCrossan 20.02.2019 09:49

Спасибо за ваш ответ, Рори, удалось решить эту проблему с помощью некоторых вычислений проверки максимального значения прокрутки страницы и значения scrollLeft с помощью $('body, html').scrollLeft(), когда элемент находился в середине экрана на рабочем столе. Это дало мне ценность, которую я тогда мог использовать.

Niryana 20.02.2019 10:29

Другие вопросы по теме