Эффект translateX css при наведении

#jquery #css #css-transitions

#jquery #css #css-переходы

Вопрос:

Я хочу применить translateX эффект к заголовкам некоторых <h4> заголовков. Я протестировал код, и он работает, но я заметил небольшую проблему при выполнении эффекта. Проблема связана с положением элемента, к которому применяется перевод, потому что я хочу, чтобы эффект был виден только при наведении курсора на родительский div. Проблема в том, что также будет показан ближайший элемент, если он не наведен.

Вот пример кода, я использую bootstrap 4 столбца с карточками.

 <div class="card-columns">
  <div class="card">
    <div class="overlay">
      <h4 class="title"><a href="#">link1</a></h4>
    </div>
  </div>
  <div class="card">
    <div class="overlay">
      <h4 class="title"><a href="#">link2</a></h4>
    </div>
  </div>
  <div class="card">
    <div class="overlay">
      <h4 class="title"><a href="#">link3</a></h4>
    </div>
  </div>
</div>  

<style>

.overlay{
opacity: 0;
position: absolute;
height: 100%;
width: 100%;
top: 0;
left: 0;
right: 0;
background-color: rgba(0,0,0,0.5);
z-index: 1;
}

.card:hover .overlay{
opacity: 1;
}

.title{
transition: all 300ms;
transform: translateX(-200%);
}

.card:hover .title{
transition: all 300ms;
transform: translateX(0%);
}

</style>
  

Демонстрация Codepen https://codepen.io/anon/pen/oOWyVK

Комментарии:

1. Не могли бы вы добавить его в codepen, пожалуйста?

2. Обновлен вопрос @Luca Spezzano

Ответ №1:

Попробуйте добавить overflow:hidden; внутри класса overlay, чтобы это было так

 .overlay{
  opacity: 0;
  position: absolute;
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
  right: 0;
  background-color: rgba(0,0,0,0.5);
  z-index: 1;
  overflow:hidden;
}
  

Это то, что вам нужно?

У вас есть эта проблема, потому что вы выполняете translateX на -200%, поэтому title он выйдет из вашей коробки, вам нужно скрыть overflow:hidden; элемент title , который выходит из коробки 🙂

Комментарии:

1. Я попробую ваше предложение. Я не слишком разбираюсь в интерфейсе, поэтому не понял, как решить эту проблему.!

2. Попробовал в примере codepen, он будет продолжать мигать, если навести курсор на первый заголовок.

Ответ №2:

Просто добавьте overflow: hidden;

 .card-columns .card {
    display: inline-block;
    width: 100%;
    overflow: hidden;
}