CSS hover эффект с рисунком и figcaption наложены


Ищу некоторую помощь по стилизации CSS. Я хочу создать окно изображения (это должна быть ссылка)с центрированным текстом, который будет накладываться поверх изображения с цветным полупрозрачным фоном наложения. У нас есть такой заданный HTML:

<div class="figure">
  <a href="#" class="link1">
    <img src="http://www.w3schools.com/css/klematis.jpg" alt="flower Klematis">
    <div class="figcaption">Klematis</div>
  </a>
</div>

Код аналогичен структуре figure/figcaption HTML5. Вот в чем дело: https://codepen.io/anon/pen/dYaYqV

При наведении оверлея фон должен скрываться (что и происходит), а непрозрачность изображения увеличиваться до полной.

Проблема 1: Текст не центрируется с такой установкой позиции (абсолютной).

Задача 2: Наложение в этом примере больше (в нижней части изображения) из-за некоторого стиля , я думаю, элемента. Наложение должно быть точным, как изображение.

Задача 3: Текст должен скрываться, а также накладываться во время наведения мыши img

Никаких JS, если это возможно, только CSS. Вы можете помочь? Спасибо, Иисус

2 3

2 ответа:

Я немного отредактировал ваш пример codepen, и я думаю, что это именно то, что вы хотите HTML:

 <div id="1" class="figure">
  <a href="#" class="link1">
    <img src="http://www.w3schools.com/css/klematis.jpg" alt="flower Klematis">
    <div class="figcaption"><h4>Klematis</h4></div>
  </a>
</div>

CSS:

.figure {
    position: relative;
    float: left;
    width: 10%;
    margin-right: 1%;
    left:20px;
}
.figure a{
  display:block;
  width:100%;
  height:100%;
  position:relative;
  z-index:2;
}
.figure a img{
  width:100%;
  display:block;
}
.figcaption {
    font-size: 0.8em;
    letter-spacing: 0.1em;
    text-align: center;
    position: absolute;
    top: 0;
    left:0;
    width:100%;
    z-index: 2;
    height:100%;
    background-color:rgba(0,0,0,.4);
    transition:background-color 0.4s ease;

}
.figcaption h4{
  position:absolute;
  top:50%;
  left:50%;
  padding:0;
  margin:0;
  -moz-transform:translate(-50%, -50%);
  -webkit-transform:translate(-50%, -50%);
  transform:translate(-50%, -50%);
}
.figure a:hover .figcaption {
  background-color:transparent;
}

Извините, забыли Скрыть текст при наведении, вот отредактированный codepen http://codepen.io/gopal280377/pen/QjYyLL

Протестировано на google chrome, надеюсь, что это работает для вас

Присвоить ширину .figcaption для включения выравнивания текста,

Переместил якорный тег в родительский блок кода (мое предпочтение)

Переполнение оверлея, вероятно, связано с необъявленными размерами изображения,

<a href="#" class="link1">
    <div id="1" class="figure">
        <img src="http://www.w3schools.com/css/klematis.jpg" alt="flower Klematis">
        <div class="figcaption">Klematis</div>
    </div>
 </a>


.figure {
   position: relative;
   width: 10%;
   height: auto;
   background:rgba(92,104,117,0.8);
   overflow: hidden;
   }
.figcaption {
   position: absolute;
   font-size: 0.8em;
   width: 100%;
   letter-spacing: 0.1em;
   text-align: center;
   top: 50px;
   z-index: 1 !important;
   }
.figure img {
   width: 100%;
   opacity: 0.5
   }
.link1:hover img {
   opacity: 1;
   -webkit-transition: .3s ease-in-out;
   transition: .3s ease-in-out;
   }
.link1:hover .figcaption {
   display: none;
   background:rgba(92,104,117,0.0);
   }