letehaha
@letehaha
Вникаю вo front-end

Что не так с кодом?

Цель такова: открывать попап так, что бы он не вызывал горизонтального скроллинга (т.е. если он не помещается в экран, то должен открываться слева от блока).3d73fba9ee7949879cdafc40178aa6b2.png

Подумал о вот таком способе:
var popup = document.getElementById('popup__calendar');

	if(popup.getBoundingClientRect().right > document.body.clientWidth){ 
        //если координаты попапа с правой стороны больше ширины клиентского экрана, 
        //то спозиционировать его слева от блока
		popup.style.left= className[i].offsetLeft + 'px'; // + 200
		popup.style.top = className[i].offsetTop + 'px';
	} else{
        // иначе справа
		popup.style.right= className[i].offsetLeft + 'px'; // + 200
		popup.style.top = className[i].offsetTop + 'px';
	}


Но в итоге происходит вот следующее (гифка): https://gyazo.com/206a464a074b3d1cd7aa4ef1d6b90913
Подскажите, что я сделал не так? Или может есть какой-то другой способ (уверен что есть :) )
  • Вопрос задан
  • 348 просмотров
Пригласить эксперта
Ответы на вопрос 2
@khaletskiy
Web-Developer
не вникая в код и верстку как минимум не будут работать одновременно указанные top и bottom, left и right. Нужно использовать только одну границу из каждой пары.

При каждом клике лучше выставлять только left. Можно отрицательный.
Ответ написан
@vvkovaliov
Лучше только left использовать. И ставить ширину попапа.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
27 нояб. 2024, в 19:08
1500 руб./в час
27 нояб. 2024, в 18:19
2000 руб./за проект
27 нояб. 2024, в 17:41
2000 руб./за проект