Задать вопрос
Masonry
@Masonry

Как реализовать лучше подсказки для инпутов и как лучше реализовать закрытие окна на js?

Здравствуйте. Есть таких два вопроса:

1 вопрос) Есть такая верстка invizmachine.esy.es/templatemonster/ по клику на кнопку 'Sign Up' появляется окно. Нужно сделать всплывающие подсказки у инпутов так как на этом изображении, которое я прикрепил.
08e714349cbc4e739766e0fcf22bc748.png я не пойму как сделать чтобы ширина у этих подсказок, сама подстраивалась, в зависимости от того сколько в них текста. у меня сейчас там все они одинакового размера, но нужно сделать чтобы были разные, как на изображении.

2 вопрос) Как мне это лучше реализовать на чистом js, чтобы кликая вне выпадающего блока 'sign-up__dropdown' он закрывался. На jquery это не составляло труда, а вот на чистом js все никак не могу додумать как это сделать. именно с реализацией проблемы.

Буду очень благодарен если поможете.
  • Вопрос задан
  • 146 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
abyrkov
@abyrkov
JavaScripter
1. Подсказка - это span с абсолютным/релативным позиционированием по правому краю.
2. Я решаю такую задачу двумя обработчиками событий - глобальным(на window или document) и локальным(на элементе, который должен активироваться-деактивироваться) - и общим для обаботчиков логическим переключателем-переменной. При клике в элементе, сначала активируется локальный обработчик, который ставит логический переключатель в другое положение(в простом случае, присваивает true). Затем активируется глобальный обработчик, который проверяет изменение состояния логического переключателя. Если он изменился - значит был клик внутри элемента, в таком случае он сбрасывает выключатель и ничего не делает. Если не изменился - то клик был вне элемента, надо деактивировать элемент.
Замечу, что подбных эффектов можно добиться с помощью стилизации тэга select или использовать стилизированый тэг button с нативными событиями получения и потери фокуса.
P.S. Чета я документации перечитал :D
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы