Сделайте кликабельный анимированный курсор, используя только CSS

Дело в том, чтобы сделать aside элемент вводится при наведении курсора на изображение, используя только CSS, но также позволяет его дочерним элементам принимать события щелчка.

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

Проблема возникает при наведении курсора на кнопку. Это сделает aside переход (см. скрипку, это лучше, чем мой ломаный английский).

Я ищу способ предотвратить aside от возвращения в исходное, скрытое положение. И проблема, конечно же, заключается в использовании только CSS!

Вот код (он также в скрипке):

HTML:

<div class="thumbnail">
  <img src="http://i59.tinypic.com/10cvw8y.jpg" class="template-img">
  <aside tab-index="1" class="hover">
    <button class="button" onclick="alert('wow')">CLICK ME</button>
  </aside>
</div>

CSS:

.thumbnail {
  position: relative;
  overflow: hidden;
}

.template-img {
  width: 100%;
  height: 100%;
}

.template-img:hover ~ .hover {
  transform: translateX(0);
}

.template-img:focus {
  pointer-events: none;
}

.template-img:focus ~ .hover {
  transform: translateX(0);
  transition: none;
}

.hover {
  position: absolute;
  top: 0;
  width: 100%;
  height: 100%;
  padding-top: 15%;
  transform: translateX(-100%);
  transition: transform .4s ease-out;
  pointer-events: none;
  background: rgba(255, 0, 0, 0.4);
  z-index: 10;
}

.button {
    pointer-events: auto;
}

1 ответ

Решение

Добавление стиля ниже, похоже, решило проблему

.hover:hover {
 transform: translateX(0);
}

Принудительно запускать анимацию при наведении на контент

Вот скрипка

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