Увидел интересный эффект на одном сайте, но он, увы — был реализован на JS. Решил повторить на html+css

Попробуем создать эффект пробегающего, по картинке, блика не прибегая к JS
Данный пример — лишь демонстрация возможностей и потому работать будет только в webkit- браузерах. Для иных даже префиксы не задавал, ибо самоцель — «just for fun»

Для начала подготовим разметку

<div class ="logo">
    <div class="blick"></div>
    <img src="http://itstartuplabs.com/wp-content/themes/itstartuplabs/images/logo.png">
</div>

Ну тут все просто — div в котором лежит картинка и сам блок с «лучиком»

добавим стилей

спозиционируем нашу оберку:

.logo{
    position:relative;
    disply:inline-block;
    left:100px;
    top:100px;
    overflow:hidden
}

и div с «лучиком»

.blick{
    width:10px;
    height:100px;
    position:absolute;
    left:-40px;
    bottom:0;    
    background: -moz-linear-gradient(left,  rgba(255,255,255,0) 15%, rgba(255,255,255,1) 50%, rgba(255,255,255,0) 85%);
    background: -webkit-gradient(linear, left top, right top, color-stop(15%,rgba(255,255,255,0)), color-stop(50%,rgba(255,255,255,1)), color-stop(85%,rgba(255,255,255,0)));
    background: -webkit-linear-gradient(left,  rgba(255,255,255,0) 15%,rgba(255,255,255,1) 50%,rgba(255,255,255,0) 85%);
    background: -o-linear-gradient(left,  rgba(255,255,255,0) 15%,rgba(255,255,255,1) 50%,rgba(255,255,255,0) 85%);
    background: -ms-linear-gradient(left,  rgba(255,255,255,0) 15%,rgba(255,255,255,1) 50%,rgba(255,255,255,0) 85%);
    background: linear-gradient(to right,  rgba(255,255,255,0) 15%,rgba(255,255,255,1) 50%,rgba(255,255,255,0) 85%);

     -webkit-transform: rotate(25deg);  
         -moz-transform: rotate(25deg);  
          -ms-transform: rotate(25deg);  
           -o-transform: rotate(25deg);  
              transform: rotate(25deg);  
}

Лучик прячем при помощи position:absolute смещая его за видимую область обертки. Для .logo задаем display:inline-block дабы ширина блока равнялась ширине содержимого.
Фон заливаем градиентом прозрачный-белый-прозрачный и поворачиваем div при помощи transform

теперь нам нужно добавить анимацию движения нашего лучика при наведении. Для этого описываем анимацию. Она весьма примитивна и заключается в изменении свойства left

@-webkit-keyframes 'move' {
    from {    
    left: -40px;
    }    
    to {    
    left: 90px;
    }   
}
@keyframes 'move' {
    from {    
    left: -40px;
    }    
    to {    
    left: 90px;
    }   
}

И задаем саму анимацию

.logo:hover .blick{
    -webkit-animation-name: 'move';
    -webkit-animation-duration: .8s;   
    animation-name: 'move';
    animation-duration: .8s;    
}

Посмотреть результат

Добавить комментарий

Post Navigation