Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.04.2016, 00:07
Новичок на форуме
Отправить личное сообщение для kkkirilll Посмотреть профиль Найти все сообщения от kkkirilll
 
Регистрация: 07.04.2016
Сообщений: 5

Изменение переменной в зависимости от разрешения экрана. Хелп.
Понимаю, что это уже заезженная фраза, но все же помогите чайнику, пожалуйста
Есть такой код. Он двигает элемент хедер в зависимости от прокрутки страницы.
changeHeaderOn сообщает в пикселях, когда нужно включить класс.
Мне нужно, чтобы changeHeaderOn была переменной при разной ширине браузера, например:
при ( winDow.width() < 992 ) changeHeaderOn = 150 пикселей,
а при ( winDow.width() >= 992 ) changeHeaderOn = 50 пикселей.
Кажется, что понимаю, чего хочу, а собрать как надо не могу.
(function() {

		var docElem = document.documentElement,
			didScroll = false,
			changeHeaderOn = 50;
			document.querySelector( 'header' );
		function init() {
			window.addEventListener( 'scroll', function() {
				if( !didScroll ) {
					didScroll = true;
					setTimeout( scrollPage, 100 );
				}
			}, false );
		}
		
		function scrollPage() {
			var sy = scrollY();
			if ( sy >= changeHeaderOn ) {
				$( 'header' ).addClass('active');
			}
			else {
				$( 'header' ).removeClass('active');
			}
			didScroll = false;
		}
		
		function scrollY() {
			return window.pageYOffset || docElem.scrollTop;
		}
		
		init();
		
	})();

Последний раз редактировалось kkkirilll, 08.04.2016 в 09:31.
Ответить с цитированием
  #2 (permalink)  
Старый 08.04.2016, 00:16
Аспирант
Отправить личное сообщение для ILL-JAH Посмотреть профиль Найти все сообщения от ILL-JAH
 
Регистрация: 24.03.2011
Сообщений: 93

changeHeaderOn = window.screen.width < 992 ? 150 : 50;
Оно?
Ответить с цитированием
  #3 (permalink)  
Старый 08.04.2016, 00:49
Новичок на форуме
Отправить личное сообщение для kkkirilll Посмотреть профиль Найти все сообщения от kkkirilll
 
Регистрация: 07.04.2016
Сообщений: 5

Спасибо
Но я похоже ступил и все оказывается сложнее. Ничего не изменилось. На широком экране 50px срабатывают. На маленьком - нет.

Мне, видимо, нужно, чтобы при смене размера браузера включался другой класс
$( 'header' ).addClass('active');

То есть при ширине браузера от 992 был класс 'active'
А при меньшем размере, например, 'miniactive'

Чот я уже совсем запутался. Наверное, класс менять все-таки не надо.
добавлю ссылку {удалил}
Пытаюсь поправить хедер "Меню" в мобильной версии (меньше 992рх), чтобы не дергался при прокрутке.

Последний раз редактировалось kkkirilll, 09.04.2016 в 16:17.
Ответить с цитированием
  #4 (permalink)  
Старый 08.04.2016, 08:25
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

kkkirilll, советую почитать про CSS-медиа запросы и единицы измерения vw/vh.
Ответить с цитированием
  #5 (permalink)  
Старый 08.04.2016, 09:28
Новичок на форуме
Отправить личное сообщение для kkkirilll Посмотреть профиль Найти все сообщения от kkkirilll
 
Регистрация: 07.04.2016
Сообщений: 5

Спасибо. Почитал, попробовал, потыкал.
Но, как я понял, vw/vh дают постоянную зависимость элемента от размера окна.
Мне же нужно, чтобы скрипт работал двумя способами в зависимости от двух вариантов размера браузера (больше или меньше 992рх).
Логика моих действий:
если я меняю
changeHeaderOn = 50;
на значение 135, к примеру, то в малой версии все как надо работает, а в стандартной большой версии скрипт начинает поздно срабатывать. Точнее сказать: начинает срабатывать позднее на 85рх (135-50=85рх) прокрутки страницы.
Ответить с цитированием
  #6 (permalink)  
Старый 08.04.2016, 14:50
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

kkkirilll, что у Вас там? Фиксированный блок? Можно просто дополнительно margin-top давать.

@media all and (max-width: 992px) {
    .element {
        margin-top: 85px;
    }
}
Ответить с цитированием
  #7 (permalink)  
Старый 08.04.2016, 17:40
Новичок на форуме
Отправить личное сообщение для kkkirilll Посмотреть профиль Найти все сообщения от kkkirilll
 
Регистрация: 07.04.2016
Сообщений: 5

Даже не знаю, что сказать.
А Вы переходили по ссылке, что я указал?
Средствами Javascript возможно сделать то, о чем я говорю?
Я уже многое перепробовал. И проблема начала решаться именно изменением значения changeHeaderOn.
Ответить с цитированием
  #8 (permalink)  
Старый 09.04.2016, 13:37
Новичок на форуме
Отправить личное сообщение для kkkirilll Посмотреть профиль Найти все сообщения от kkkirilll
 
Регистрация: 07.04.2016
Сообщений: 5

Вопрос решен (с малым несущественным недостатком).
Спасибо ILL-JAH за наводку.
Стало работать с таким кодом:
if (window.innerWidth > 1000) {
				  changeHeaderOn = 50;
				}
				else {
				  changeHeaderOn = 130;
				}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение класса элемента в зависимости от разрешения экрана funfot Элементы интерфейса 3 20.09.2014 15:20
Изменение размера фонового изображения в зависимости от разрешения экрана. fomazov jQuery 2 24.10.2013 04:56
Масштабирование блока, в зависимости от разрешения экрана Keksman jQuery 2 25.05.2012 03:49
как зделать что бы пропадали картинки в зависимости от разрешения экрана skelan Javascript под браузер 9 09.06.2011 21:42
Изменение размера блока реклама в зависимости от разрешения экрана. toxiz77 Общие вопросы Javascript 3 11.02.2009 14:12