Презентация про CSS3 и HTML5 на них же
Я показывал ее на недавнем Openwebcamp. Презентация на CSS3 и HTML5 без джаваскрипта. Как надо работает только в Safari и Хроме, но вы уже привыкли, да?
Предыстория
Началось с того что мне нужно было сделать доклад об использовании новых технологий. Делать его в Powerpoint и потом все время говорить «Ну вы это легко проверите в своём браузере» мне не нравилось, и я решил сделать презентацию целиком на этих эффектах. Вот что получилось.
То что получилось устроить все без Javascript — случайность. Приятная.
Сразу о поддержке браузеров
Это всего лишь презентация, и я c самого начала не преследовал цель полной кроссбраузерности. Мне было важно чтобы она работала в моем Сафари. Однако, в Опере и Фаерфоксе она будет работать, просто в некоторых местах коряво, а кое-где очень коряво. В Хроме она работает отлично, но иногда по непонятным мне причинам хром делает что-то вроде «Я устал от твоего CSS3» и опускает руки. Редко.
Вобщем Сафари и Хром наш выбор сегодня.
Презентация
В презентации которую я показывал на конференциях ссылки были скрыты, было видно только их черную границу справа, которая становилась красной при фокусе на ссылке. Однако чтобы можно было смотреть ее в интернете, я сделал ссылки видимыми, кликайте.
о том как это сделано
Структура кода примерно такая:
- <body>
- <section id="slide1">
- <h1>CSS3 и HTML5</h1>
- <p>Openwebcamp, Киев, 2010</p>
- </section>
- <section id="slide2">
- …
Каждый section — отдельный слайд. Всем им задан:
- section{
- position:absolute;
- top:0;left:0;
- height:100%;
- opacity:0;/*по умолчанию все слайды скрыты*/
- }
То есть они отображены все на одном месте, на весь экран, с прозрачностью 0.
Кроме этого, в файле содержится навигация, просто список ссылок на все эти слайды-section:
- <ul>
- <li><a tabindex="100" href="#slide1">slide1</a></li>
- …
Навигации тоже заданы координаты через position:absolute;. tabindex тут не просто так, позднее станет ясно зачем он мне.
Но как же я переключаю слайды? Это делается с помощью псевдокласса :target.
Этот селектор указывает на блоки, которые являются «адресом» внутренней ссылки. То есть при blabla.html#slide21, для блока у которого id=”slide21″ сработает :target.
Результат в CSS выглядит так:
- section:target{
- opacity:1;
- }
То есть при клике на любую ссылку из навигации, слайд на который она ссылается станет видимым.
Известное свойство transition позволит нам сделать это плавно:
- section{
- transition:all 1s linear;
- }
Таким образом вместо того чтобы отобразить слайд моментально, он будет плавно появляться.
Более того, я добавил еще пару эффектов, такой например:
- .effect-slideleft{
- left:-100%;
- opacity:1;
- transition:all 1s ease-in-out;
- }
Это значит по умолчанию слайд будет смещен влево от экрана, а при клике плавно изменит положение. (opacity:1 значит что прозрачность не будет анимироваться).
А вот эффект кручения-исчезновения в центр:
- .effect-rotate{
- transform:rotate(360deg) scale(.01) translate(50%, 50%);
- transition:all 1s ease-in-out;
- }
Подробнее об играх с transform можно почитать в моем же посте
Как переключать слайды пультом?
Я написал небольшой applescript, который по нажатию Apple Remote табулировался по ссылкам навигации (вот зачем tabindex), и по нажатию на пульте «Play» — кликал на них. Это единственная часть которую по понятным причинам трудно реализовать совсем без скрипта.
Хотя у меня была идея построить все на -webkit-transition-delay (расписать в CSS появление каждого слайда по времени). Но тогда даже я сам считал бы себя психом.
Если кому-то интересно итоговый скрипт выглядел примерно так (табулирование + enter):
- on nextElement()
- simulate keycode 48 with option
- simulate keycode 76
- end nextElement
Это я позаимствовал из Sofa Control.
Почитать
- Сама презентация и ее ядро
- CSS3.info
- HTML5 спецификация
- Еще вариант движка на Django
- S5 один из первых движков для презентаций в браузере
Буду рад услышать ваши мысли про эту затею. Надеюсь она вдохновит кого-то на что-нибудь еще клёвое :)
Очень мило получилось, спасибо.
26й слайд очень полезный)
обалденно! А видео с мероприятия можно где-то скачать?
а то слайдов мало :)
Мило, интересно и познавательно как всегда, вот только не понял, что делает иконка IE на 16-ом слайде про круглые углы?
Или вы про IE9, который обещает CSS3?)
Да, про IE9, просто я это проговаривал, к сожалению презентация не очень автономная получилась, но я скорее хотел поделиться ее кодом чем содержанием =)
Vladimir: да, видео выложат со дня на день на сайте Openwebcamp
Ptico может ты про 27-й? ) Мне он по крайней мере кажется полезнее =)
честно говоря, мне больше нравится продвигаемый оперой вариант (http://www.opera.com/browser/tutorials/operashow/), который менее приложение, и более документ. Конечно, в нём нет красивых переходов, зато переключение слайдов работает привычными пробелом и стрелками, заодно можно стандартными home/end оказаться в начале или конце. Вот мой пример такой презентации: http://arty.name/clientside2007/speed.manipulation.slides.xhtml Сразу скажу, что в хроме/сафари он «не работает» только потому, что они не включают для полноэкранного режима media projection, зато этот «баг» демонстрирует graceful degradation.
Выглядит впечатляюще, но у меня очень сильно грузило процессор, причем все время. Но, в отличии от флэша, не тормозило ;)
А можно хотя бы вкратце, про что было во время 7-го слайда (со звездой смерти)?
В хроме (убунту) все слайды слились в один.
Как раз то о чем я говорил, бедняга не выдерживает ;)
1 апреля на стартовой по CSS3-му :)))
На Украинском форуме интернет-деятелей эта презентация тоже очень доставляла, спасибо. Особенно звезда смерти, коты и демотиватор :)
Разве что, можно было побольше уделить внимания мобильным платформам.
Прикольно сделано
Вот мой отчет (и кросспост на Хабре). Юрий, вам будет интересно :)
жаль, что видео до сих пор не выложили на Openwebcamp :((
Довольно прикольно. Хром справился на “Ура”…. а вот опера 10.51 на некоторых поперхнулась. Жаль не скоро всему этому начать жить.
тоже сделал описание своей презентации http://www.kigorw.com/articles/talks-engine
Спасибо, очень интересно! Сейчас тоже делаю презентацию на hml5+css3. Так что очень пригодится информация. =)
Отличная была презентация! Иллюстративная.
Спасибо! :)
Пасибо за презентацию)) очень познавательно))
Хорошая презентация всем спасибо!!!!
Классная презентация! Ах, когда же закончится битва кодеков и HTML5 наконец станет стандартом. Хотя… это меньше, чем полдела, пока жив IE, HTML5 будет оставаться в тени. Ну и с этим IE, всё равно я забацал блог на HTML5 (http://oxygen.ho.ua), правда, он пока пустой.
Я олдскульный какой-то. Не прельщают меня сабжи.