Как можно отобразить анимированный текст на изображении при наведении мыши с помощью CSS3

Возможно создать анимированный текст при наведении мыши на изображение с использованием только CSS.

Если хотите, чтобы текст появился на изображении при наведении мыши на изображение, вы находитесь в правильном месте! Давайте посмотрим, как можно добиться такого эффекта.

  1. Добавьте изображение, используя тег <img>, и текст.
  2. Сначала необходимо добавить изображение, используя тег <img>. В другом элементе <div> вставьте текст, который хотите, чтобы появился при наведении мыши. Установите селектор :hover.
  3. Эффект при наведении мыши устанавливается с помощью псевдокласса :hover, который выбирает элемент и применяет к нему стиль. Установите свойство opacity.
  4. Первое свойство, которое вы должны установить, - opacity, которое указывает степень прозрачности элемента. Таким образом, в начале вы скрываете каждый элемент внутри класса. Установите свойство transition.

Следующее свойство, которое необходимо установить, - transition, которое в течение миллисекунд изменит значения элемента.

В данном примере, transition медленно меняет изображение (через 400 миллисекунд, когда вы навели мышь на изображение). Если не укажете свойство transition, не будет никакого эффекта.

Также используются свойства transition-delay и transition-duration. Первое из них указывает начальный процесс, а второе - время, требуемое для того, чтобы текст переместился сверху вниз.

Давайте рассмотрим пример:

Пример

<!DOCTYPE html>
<html>
  <head>
    <title>Заголовок документа</title>
    <style>
      .example{
      position:relative;
      padding:0;
      width:300px;
      display:block;
      cursor:pointer;
      overflow:hidden;
      }
      .content {
      opacity:0;
      font-size: 40px;
      position:absolute;
      top:0;
      left:0;
      color:#1c87c9;
      background-color:rgba(200,200,200,0.5);
      width:300px;
      height:300px;
      -webkit-transition: all 400ms ease-out;
      -moz-transition: all 400ms ease-out;
      -o-transition: all 400ms ease-out;
      -ms-transition: all 400ms ease-out;
      transition: all 400ms ease-out;
      text-align:center;
      }
      .example .content:hover { opacity:1; }      
      .example .content .text {
      height:0;
      opacity:1;
      transition-delay: 0s;
      transition-duration: 0.4s;
      }
      .example .content:hover .text {
      opacity:1;
      transform: translateY(250px);
      -webkit-transform: translateY(250px);
      }
    </style>
  </head>
  <body>
    <h2>Анимированный текст на изображении, появляющийся при наведении мыши</h2>
    <div class="example">
      <img src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" 
        width="300" height="300" alt="tree" />
      <div class="content">
        <div class="text">Tree</div>
      </div>
    </div>
  </body>
</html>
<!DOCTYPE html>
<html>
  <head>
    <title>Заголовок документа</title>
    <style>
      .example{
      position:relative;
      padding:0;
      width:300px;
      display:block;
      cursor:pointer;
      overflow:hidden;
      }
      .content {
      opacity:0;
      font-size: 40px;
      position:absolute;
      top:0;
      left:0;
      color:#1c87c9;
      background-color:rgba(200,200,200,0.5);
      width:300px;
      height:300px;
      -webkit-transition: all 400ms ease-out;
      -moz-transition: all 400ms ease-out;
      -o-transition: all 400ms ease-out;
      -ms-transition: all 400ms ease-out;
      transition: all 400ms ease-out;
      text-align:center;
      }
      .example .content:hover { opacity:1; }      
      .example .content .text {
      height:0;
      opacity:1;
      transition-delay: 0s;
      transition-duration: 0.4s;
      }
      .example .content:hover .text {
      opacity:1;
      transform: translateY(250px);
      -webkit-transform: translateY(250px);
      }
    </style>
  </head>
  <body>
    <h2>Анимированный текст на изображении, появляющийся при наведении мыши</h2>
    <div class="example">
      <img src="/uploads/media/default/0001/01/b408569013c0bb32b2afb0f0d45e93e982347951.jpeg" 
        width="300" height="300" alt="tree" />
      <div class="content">
        <div class="text">Tree</div>
      </div>
    </div>
  </body>
</html>
Если устанавливаете свойство text-align в "left" или "right", текст будет появляться сверху вниз, с левой и правой стороны соответственно.

Рассмотрим другой пример, где текст появляется снизу и доходит до центра:

Пример

<!DOCTYPE html>
<html>
  <head>
    <title>Заголовок документа</title>
    <style>
      .example {
      cursor: pointer;
      height: 300px;
      position: relative;
      overflow: hidden;
      width: 400px;
      text-align:center;
      }
      .example .fadedbox {
      background-color: #666666;
      position: absolute;
      top: 0;
      left: 0;
      color: #fff;
      -webkit-transition: all 300ms ease-out;
      -moz-transition: all 300ms ease-out;
      -o-transition: all 300ms ease-out;
      -ms-transition: all 300ms ease-out;
      transition: all 300ms ease-out;
      opacity: 0;
      width: 360px;
      height: 100px;
      padding: 130px 20px;
      }
      .example:hover .fadedbox { opacity: 0.8; }
      .example .text {
      -webkit-transition: all 300ms ease-out;
      -moz-transition: all 300ms ease-out;
      -o-transition: all 300ms ease-out;
      -ms-transition: all 300ms ease-out;
      transition: all 300ms ease-out;
      transform: translateY(30px);
      -webkit-transform: translateY(30px);
      }
      .example .title {
      font-size: 2.5em;
      text-transform: uppercase;
      opacity: 0;
      transition-delay: 0.2s;
      transition-duration: 0.3s;
      }
      .example:hover .title,
      .example:focus .title {
      opacity: 1;
      transform: translateY(0px);
      -webkit-transform: translateY(0px);
      }
    </style>
  </head>
  <body>
    <h2>Анимированный текст на изображении, появляющийся при наведении мыши</h2>
    <div class="example">
      <img src="/uploads/media/default/0001/01/4982c4f43023330a662b9baed5a407e391ae6161.jpeg" alt="tile3" width="400" height="300" alt="house" />
      <div class="fadedbox">
        <div class="title text"> House </div>
      </div>
    </div>
  </body>
</html>
Для максимальной совместимости браузера со свойствами transition и transform могут быть использованы такие расширения, как -webkit- для Safari, Google Chrome и Opera (новые версии), -moz- для Firefox, -o- для более старых версий Opera.