Главная » Файлы » Прочие скрипты » CSS

Блоки с анимированной задвижкой с использованием SVG и CSS3
[ Скачать с сервера (22.2 Kb) ] 15.09.14, 08:34:59



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

Для начала посмотрите ДЕМО

Моё тестирование в фидле: КЛИК

Установка:

После < /head > на нужных страницах вставляйте:
Код
<script src="/js/snap.svg-min.js"></script>

<script>
  function init() {
  var speed = 330,
  easing = mina.backout;

  [].slice.call(document.querySelectorAll('#grid > a')).forEach(function (el) {
  var s = Snap(el.querySelector('svg')),
  path = s.select('path'),
  pathConfig = {
  from: path.attr('d'),
  to: el.getAttribute('data-path-hover')
  };

  el.addEventListener('mouseenter', function () {
  path.animate({
  'path': pathConfig.to
  }, speed, easing);
  });

  el.addEventListener('mouseleave', function () {
  path.animate({
  'path': pathConfig.from
  }, speed, easing);
  });
  });
  }

$(document).ready(function() {
  init();
});
</script>


Далее в самый низ вашего css вставляйте:
Код
body {
  background:#ffaaaa;
  margin:0px;
  padding:0px;
}
/* Common style */
  .grid {
  margin: 10px;
  max-width: 1000px;
  width: 90%;
}
.grid a {
  float: left;
  max-width: 250px;
  width: 200px;
  color: #333;
  font-size: 13px;
}
.grid a:nth-child(odd) {
  margin: 0px;
}
.grid figure {
  position: relative;
  overflow: hidden;
  margin: 5px;
  background: #333;
}
.grid figure img {
  position: relative;
  display: block;
  width: 100%;
  opacity: 0.7;
  -webkit-transition: opacity 0.3s;
  transition: opacity 0.3s;
}
.grid figcaption {
  position: absolute;
  top: 0;
  z-index: 11;
  width: 100%;
  height: 100%;
  text-align: center;
}
.grid figcaption h2 {
  margin: 0 0 20px 0;
  color: #3498db;
  text-transform: uppercase;
  letter-spacing: 1px;
  font-weight: 300;
  font-size: 130%;
  -webkit-transition: -webkit-transform 0.3s;
  transition: transform 0.3s;
}
.grid figcaption p {
  padding: 0 20px;
  color: #aaa;
  font-weight: 300;
  -webkit-transition: opacity 0.3s, -webkit-transform 0.3s;
  transition: opacity 0.3s, transform 0.3s;
}
.grid figcaption h2, .grid figcaption p {
  -webkit-transform: translateY(50px);
  transform: translateY(50px);
}
.grid figure button {
  position: absolute;
  padding: 4px 20px;
  border: none;
  text-transform: uppercase;
  letter-spacing: 1px;
  font-weight: bold;
  -webkit-transition: opacity 0.3s, -webkit-transform 0.3s;
  transition: opacity 0.3s, transform 0.3s;
}
.grid figcaption, .grid figcaption h2, .grid figcaption p, .grid figure button {
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}
/* Style for SVG */
  .grid svg {
  position: absolute;
  top: -1px;
  /* fixes rendering issue in FF */
  z-index: 10;
  width: 100%;
  height: 100%;
}
.grid svg path {
  fill: #fff;
}
/* Hover effects */
  .grid a:hover figure img {
  opacity: 1;
}
.grid a:hover figcaption h2, .grid a:hover figcaption p {
  -webkit-transform: translateY(0);
  transform: translateY(0);
}
.grid a:hover figcaption p {
  opacity: 0;
}
/* Individual styles */
  .demo-1 body {
  background: #3498db;
}
.demo-1 .grid figure button, .demo-3 .grid figure button {
  top: 50%;
  left: 50%;
  border: 3px solid #fff;
  background: transparent;
  color: #fff;
  opacity: 0;
  -webkit-transform: translateY(-50%) translateX(-50%) scale(0.25);
  transform: translateY(-50%) translateX(-50%) scale(0.25);
}
.demo-1 .grid a:hover figure button, .demo-3 .grid a:hover figure button {
  opacity: 1;
  -webkit-transform: translateY(-50%) translateX(-50%) scale(1);
  transform: translateY(-50%) translateX(-50%) scale(1);
}
.demo-2 body {
  background: #e74c3c;
}
.demo-2 .grid figcaption h2 {
  color: #e74c3c;
}
.demo-2 .grid figcaption p {
  -webkit-transition-delay: 0.05s;
  transition-delay: 0.05s;
}
.demo-2 .grid figure button {
  bottom: 0;
  left: 0;
  padding: 15px;
  width: 100%;
  background: #fff;
  color: #333;
  font-weight: 300;
  -webkit-transform: translateY(100%);
  transform: translateY(100%);
}
.demo-2 .grid a:hover figure button {
  -webkit-transition-timing-function: ease-out;
  transition-timing-function: ease-out;
  -webkit-transform: translateY(0);
  transform: translateY(0);
}
.demo-2 .grid figcaption h2, .demo-2 .grid figcaption p, .demo-3 .grid figcaption h2, .demo-3 .grid figcaption p {
  -webkit-transition-timing-function: cubic-bezier(0.250, 0.250, 0.115, 1);
  /* older webkit */
  -webkit-transition-timing-function: cubic-bezier(0.250, 0.250, 0.115, 1.445);
  timing-function: cubic-bezier(0.250, 0.250, 0.115, 1.445);
}
.demo-2 .grid a:hover figcaption p, .demo-3 .grid a:hover figcaption p {
  -webkit-transition-delay: 0s;
  transition-delay: 0s;
  -webkit-transition-duration: 0.1s;
  transition-duration: 0.1s;
}
.demo-3 body {
  background: #52be7f;
}
.demo-3 .grid figcaption h2 {
  color: #52be7f;
}
.demo-3 .grid a:hover figcaption h2 {
  -webkit-transform: translateY(5px);
  transform: translateY(5px);
}


Блоки оформляются следующим образом:
Код
<section id="grid" class="grid clearfix">
<a href="#" data-path-hover="m 0,0 0,47.7775 c 24.580441,3.12569 55.897012,-8.199417 90,-8.199417 34.10299,0 65.41956,11.325107 90,8.199417 L 180,0 z">
  <figure>
  <img src="Ссылка на картинку" />
  <svg viewBox="0 0 180 320" preserveAspectRatio="none">
  <path d="m 0,0 0,171.14385 c 24.580441,15.47138 55.897012,24.75772 90,24.75772 34.10299,0 65.41956,-9.28634 90,-24.75772 L 180,0 0,0 z"/>
  </svg>
  <figcaption>
  <h2>Заголовок</h2>
  <p>Краткое описание</p>
  </figcaption>
  </figure>
</a>
<a href="#" data-path-hover="m 0,0 0,47.7775 c 24.580441,3.12569 55.897012,-8.199417 90,-8.199417 34.10299,0 65.41956,11.325107 90,8.199417 L 180,0 z">
  <figure>
  <img src="Ссылка на картинку" />
  <svg viewBox="0 0 180 320" preserveAspectRatio="none">
  <path d="m 0,0 0,171.14385 c 24.580441,15.47138 55.897012,24.75772 90,24.75772 34.10299,0 65.41956,-9.28634 90,-24.75772 L 180,0 0,0 z"/>
  </svg>
  <figcaption>
  <h2>Заголовок</h2>
  <p>Краткое описание</p>
  </figcaption>
  </figure>
</a>
</section>


Скрипт из прикреплённого архива залейте в папку js

Материал подготовлен ассоциацией защитников фигурных отвёрток wink
Категория: CSS | Добавил: Apocalypse | Теги: блоки, анимированной, CSS3, использованием, задвижкой, SVG
Просмотров: 1003 | Загрузок: 263 | Комментарии: 16 | Рейтинг: 1.0/5
Всего комментариев: 15
0
И так ))) Финальный вопрос )) Как же все таки сделать чтоб текст поднимался вместе с шторкой?

оригинал


У меня поднимается только текст ,шторка не подвижна.

0
Дружище, все равно ШТОРКА НЕ ПОДВИЖНА, движется только текст. смотреть тут

0
Демо внимательно смотри. Там есть прикреплённый js файл... Откуда такая невнимательность?  sad

0
Ставил на чистый шаблон, без изменений, грусть

0
Не оборачивай функциональный код в (function() { Бла бла }) - это не инициализирует функцию и потому шторка не работает

0
Спасибо, Ярослав , исправлю. Думаю в топике тоже нужно изменить (так как брал из топика)

0
Изменил код (вернул обратно) - так как ни чего не изменилось..Ярослав можно увидеть полноценно рабочий код. а то меняем, меняем ,меняем..ни чего робит (понимаю что в ФИДЛЕ работает - ту нас то UCOZ !Спасибо (извини , что вынес мозг)

0
Ты меня разочаровываешь... http://bagger.ucoz.kz/

0
Глянул ИСХОДНЫЙ КОД  тестового САЙТА и все понял )) ( Тема закрыта , все работает ) Спасибо ))

0
Дружище спасибо -> Получилось так

Как сделать что б была вот такая задвижка

и еще проблема зайди глянь, ( в левом нижнем углу) , дело в том что..когда наводишь курсор движется ТЕКСт ,а не задвижка. (подсоби поправить) Спасибо.

0
Бери исходники из демо, которое используешь как образец

0
ПРивет.Попробую пояснить снова! должно быть так

а получается так

посмотреть можно Тут
P.S. Не могу отредактировать свой топик!

0
В css в связку .grid svg добавь свойство left:0px;

0
Оч круто yu
Кто может помочь? Хотелось бы сделать наоборот, что бы при наведении появлялось описание. Как я понял это можно в скрипте поменять в Listener'e from и to местами. Если не так то объясните как надо.
И кто может помочь, хочу этими блоками заставить показывать мне материалы магазина. Пока еще даже не представляю как мне этот вид блока запихать в вид материалов магазина...

Имя *:
Email: