#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;
}