Итак, хотя вы используете visibility: hidden
, я бы порекомендовал использовать opacity
. Это все еще скрывает кнопку, как и следовало ожидать. Не стесняйтесь заглянуть на веб-сайт W3 Schools . У него много отличных ресурсов, которые охватывают простые вещи, подобные этой.
Я использовал следующие ссылки с этого сайта:
Событие onclick
Событие onmouseover
Событие onmouseout
свойство непрозрачности
function OnHover(element) {
element.style.opacity = 100;
}
function OnExit(element) {
element.style.opacity = 0;
}
function OnClick(element) {
element.innerHTML = "You clicked me as a hidden button!";
element.style.color = "red";
}
.btn {
visibility: hidden;
}
.btn:hover {
visibility: visible !important;
}
<button id="btnO" onmouseover="OnHover(this)" onmouseout="OnExit(this)" onclick="OnClick(this)" style="opacity: 0;">Opacity</button>
<button id="btnV" onclick="OnClick(this)" class="btn">Visibility</button>
Я полагаю, что поскольку в вашем сценарии visibility было установлено значение hidden
, страница не запускает события, связанные с элементом. Это свойство влияет даже на CSS-селекторы , например hover
. Похоже, что он не уменьшает размер элемента, так как изменение visibility
элемента с помощью инструментов разработчика в режиме реального времени не влияет на макет страницы. Однако opacity
просто уменьшает альфа-канал на элементе, и все события по-прежнему запускаются как обычно.
Более старшие веб-разработчики; не стесняйтесь поправлять меня, если я ошибаюсь в приведенном выше утверждении. Я не смог найти много документации по этому вопросу.
Подсказка: скрытые элементы занимают место на странице. Используйте свойство display, чтобы скрыть и удалить элемент из макета документа!
Что касается приведенной выше цитаты из W3 Schools, вы можете создать пустой элемент div
, в котором находится ваша кнопка. Затем, когда пользователь наводит курсор на элемент div
, отобразите кнопку или вызовите функцию javascript из события onclick
. В этом случае вы можете использовать свойство visibility
, так как вы не будете напрямую взаимодействовать с кнопкой, а вместо этого div
.