
Основанный на трансформациях и переходах CSS3, javascript-фреймворк для создания презентаций impress.js выходит за рамки понятия “слайд” и позволяет строить презентации в открытом, неограниченном трёхмерном пространстве. Источником вдохновения для него послужил сервис prezi.com. Репозиторий impress.js на Гитхабе появился меньше месяца назад, но уже стал одним из самых популярных. Нетерпеливые могут посмотреть небольшую демку здесь, а остальные — создать пример необычной презентации прямо сейчас.
Impress.js пока поддерживает только последние десктопные версии Chrome и Safari, с остальными браузерами — как повезёт. Cоздадим новую страничку и подключим к ней скрипт impress.js, немного подравняем и подкрасим стилями и добавим div-обёртку с атрибутом
id=”impress"
, внутри которой будет наша презентация:<!doctype html>
<html>
<head>
<title>Impress.js</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
body {
background-color: #ed7;
color: #400;
font-size: 2em;
}
.step {
width: 1000px;
}
img {
margin-left: 450px;
}
.no-support-message {
display: none;
}
.impress-not-supported .no-support-message {
display: block;
color: red;
font-size: 2em;
}
</style>
</head>
<body>
<div id="impress">
<div class="no-support-message">
Увы! Impress.js пока поддерживает только Chrome и Safari.
</div>
</div>
<script type="text/javascript" src="js/impress.js"></script>
</body>
</html>
Каждый слайд, вернее, шаг анимации представлен блоком вида
<div class=”step” … >
, к которому можно добавлять атрибуты, задающие положение и масштаб. Переходить между слайдами можно с помощью пробела или стрелок. Фреймворку пока меньше месяца, так что набор доступных атрибутов ещё очень ограничен:- data-x
- data-y
- data-z
- data-rotate-x
- data-rotate-y
- data-rotate-z (или просто data-rotate)
- data-scale
Итак, первый шаг. Все атрибуты по-умолчанию равны нулю:
<div class="step">
<h1>Первый шаг - без атрибутов:</h1>
&ltdiv class="step"&gt
</div>
Второй шаг. Двигаемся на 1000 пикселей вправо и вниз:
<div class="step" data-x="1000" data-y="1000">
<h1>Второй шаг - трансляция:</h1>
&ltdiv class="step" data-x="1000" data-y="1000"&gt
</div>
Третий шаг. Начинаем менять масштаб:
<div class="step" data-x="3000" data-y="-1000" data-scale="4">
<h1>Третий шаг - масштаб:</h1>
&ltdiv class="step" data-x="3000" data-y="-1000" data-scale="4"&gt
</div>
Четвёртый шаг. Делаем полубочку:
<div class="step" data-x="-6100" data-y="-3800" data-rotate="180" data-scale="40">
<h1>Четвёртый шаг - поворот:</h1>
&ltdiv class="step" data-x="-1700" data-y="-3000" data-rotate="180" data-scale="40"&gt
</div>
Пятый шаг. Трёхмерные CSS-преобразования:
<div class="step" data-x="8000" data-y="-8100" data-rotate-x="30" data-rotate-z="-29">
<h1>Пятый шаг - 3D:</h1>
&ltdiv class="step" data-x="8000" data-y="-8100" data-rotate-x="30" data-rotate-z="-29"&gt
</div>
Шестой шаг. Главное — в деталях:
<div class="step" data-x="7963.7" data-y="-8106.3" data-scale="0.04">
<img src="img/small_nuance.png">
</div>
Вот и всё. Учитывая ажиотаж, который impress.js вызвал на Гитхабе, вполне можно надеяться на его быстрое развитие. Кроме очевидного применения для создания презентаций, концепция размещения контента в неограниченном трёхмерном пространстве вместо плоской страницы фиксированного размера вполне может найти применение в планшетах с multitouch, так как они естественным и удобным образом поддерживают зуммирование и скроллинг во всех направлениях. Напоминает масштабируемый интерфейс, о котором мечтал Джеф Раскин.
UPD: В комментариях хабраюзер smashercosmo подсказал, что уже есть порт на jQuery с упором на кросс-браузерность и использование в веб-дизайне вообще, а не только для перзентаций.