From 54a2d33367263bf599f81a99d4cedd17413e4ec3 Mon Sep 17 00:00:00 2001 From: Vadim Makeev Date: Mon, 1 Aug 2011 03:39:03 +0400 Subject: [PATCH 01/14] basic support for touch devices; fixed bug with mobile safari --- scripts/script.js | 48 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/scripts/script.js b/scripts/script.js index 10e4f35..e8a3b85 100755 --- a/scripts/script.js +++ b/scripts/script.js @@ -80,6 +80,23 @@ updateProgress(slide_number); } } + + function dispatchSingleSlideMode(e) { + if ( + 'SECTION' === e.target.nodeName && + -1 !== e.target.parentNode.parentNode.className.indexOf('slide') && + isSlideListMode() + ) { + e.preventDefault(); + + // NOTE: we should update hash to get things work properly + url.hash = '#' + e.target.parentNode.parentNode.id; + history.replaceState(null, null, url.pathname + '?full#' + e.target.parentNode.parentNode.id); + enterSingleSlideMode(); + + updateProgress(getCurrentSlideNumber()); + } + } window.addEventListener('DOMContentLoaded', function () { if (!isSlideListMode()) { @@ -193,20 +210,25 @@ } }, false); - document.addEventListener('click', function (e) { - if ( - 'SECTION' === e.target.nodeName && - -1 !== e.target.parentNode.parentNode.className.indexOf('slide') && - isSlideListMode() - ) { + document.addEventListener('click', dispatchSingleSlideMode, false); + document.addEventListener('touchend', dispatchSingleSlideMode, false); + + document.addEventListener('touchstart', function (e) { + if(!isSlideListMode()) { + var current_slide_number = getCurrentSlideNumber(), + x = e.touches[0].pageX; + if (x > window.innerWidth/2) { + current_slide_number++; + } else { + current_slide_number--; + } + goToSlide(current_slide_number); + } + }, false); + + document.addEventListener('touchmove', function (e) { + if(!isSlideListMode()) { e.preventDefault(); - - // NOTE: we should update hash to get things work properly - url.hash = '#' + e.target.parentNode.parentNode.id; - history.replaceState(null, null, url.pathname + '?full#' + e.target.parentNode.parentNode.id); - enterSingleSlideMode(); - - updateProgress(getCurrentSlideNumber()); } }, false); From 12fc4747b58eeeab59b3e904ec5c6e104ad348e7 Mon Sep 17 00:00:00 2001 From: Oleg Roschupkin Date: Mon, 1 Aug 2011 21:06:35 +0900 Subject: [PATCH 02/14] Update onclick slide check to be more flexible. --- scripts/script.js | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/scripts/script.js b/scripts/script.js index e8a3b85..56b418b 100755 --- a/scripts/script.js +++ b/scripts/script.js @@ -80,18 +80,29 @@ updateProgress(slide_number); } } + + function getContainingSlideId(el) { + var node = el; + while ('BODY' !== node.nodeName) { + if (-1 !== node.className.indexOf('slide')) { + return node.id; + } else { + node = node.parentNode; + } + } + + return ''; + } function dispatchSingleSlideMode(e) { - if ( - 'SECTION' === e.target.nodeName && - -1 !== e.target.parentNode.parentNode.className.indexOf('slide') && - isSlideListMode() - ) { + var slideId = getContainingSlideId(e.target); + + if ('' !== slideId && isSlideListMode()) { e.preventDefault(); // NOTE: we should update hash to get things work properly - url.hash = '#' + e.target.parentNode.parentNode.id; - history.replaceState(null, null, url.pathname + '?full#' + e.target.parentNode.parentNode.id); + url.hash = '#' + slideId; + history.replaceState(null, null, url.pathname + '?full#' + slideId); enterSingleSlideMode(); updateProgress(getCurrentSlideNumber()); From bb7407a0e79db81b0741a69aba19d6845b9858ee Mon Sep 17 00:00:00 2001 From: Vadim Makeev Date: Sun, 7 Aug 2011 18:02:55 +0400 Subject: [PATCH 03/14] semantics picture replaced with shower logo --- en.htm | 4 ++-- pictures/semantics.svg | 6 ------ pictures/shower.svg | 3 +++ ru.htm | 8 ++++---- 4 files changed, 9 insertions(+), 12 deletions(-) delete mode 100644 pictures/semantics.svg create mode 100644 pictures/shower.svg diff --git a/en.htm b/en.htm index e87aee1..3b92a3a 100755 --- a/en.htm +++ b/en.htm @@ -1,7 +1,7 @@ - Shower + Shower Presentation Template @@ -87,7 +87,7 @@

In the Middle

- +
diff --git a/pictures/semantics.svg b/pictures/semantics.svg deleted file mode 100644 index 66eadc5..0000000 --- a/pictures/semantics.svg +++ /dev/null @@ -1,6 +0,0 @@ - - HTML5 Semantics Logo - - - - diff --git a/pictures/shower.svg b/pictures/shower.svg new file mode 100644 index 0000000..397a532 --- /dev/null +++ b/pictures/shower.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/ru.htm b/ru.htm index ccf1ed9..6e4ac3d 100755 --- a/ru.htm +++ b/ru.htm @@ -1,7 +1,7 @@ - Shower + Шаблон презентаций Shower @@ -15,7 +15,7 @@
-

Шаблон презентации Shower

+

Шаблон презентаций Shower

Вадим Макеев, Opera Software

@@ -87,7 +87,7 @@

Посередине

- +
@@ -191,7 +191,7 @@
-

Шаблон презентации Shower

+

Шаблон презентаций Shower

Вадим Макеев, Opera Software

    From df3401ed9d7164df3f93de154d1d70284c06e97e Mon Sep 17 00:00:00 2001 From: Oleg Roschupkin Date: Wed, 10 Aug 2011 01:47:32 +0900 Subject: [PATCH 04/14] Add inner navigation feature. Closes #4. --- en.htm | 6 +- scripts/script.js | 208 +++++++++++++++++++++++++++++----------------- 2 files changed, 137 insertions(+), 77 deletions(-) diff --git a/en.htm b/en.htm index 3b92a3a..873a4fb 100755 --- a/en.htm +++ b/en.htm @@ -172,7 +172,7 @@ After activation of the last child pressing next button will turn next slide. - + -->
    @@ -185,7 +185,7 @@
  • Erase your hard drive.
  • -
    --> +
@@ -208,4 +208,4 @@ - \ No newline at end of file + diff --git a/scripts/script.js b/scripts/script.js index 56b418b..183d67e 100755 --- a/scripts/script.js +++ b/scripts/script.js @@ -4,11 +4,13 @@ slides = document.querySelectorAll('div.slide'), progress = document.querySelector('div.progress div'), slideList = [], - l = slides.length, - i; + l = slides.length, i; for (i = 0; i < l; i++) { - slideList.push(slides[i].id); + slideList.push({ + id: slides[i].id, + hasInnerNavigation: null !== slides[i].querySelector('.inner') + }); } function getTransform() { @@ -28,62 +30,73 @@ body.style.transform = transform; } - function enterSingleSlideMode() { + function enterSlideMode() { body.className = 'full'; applyTransform(getTransform()); } - function enterSlideListMode() { + function enterListMode() { body.className = 'list'; applyTransform('none'); } function getCurrentSlideNumber() { - return slideList.indexOf(url.hash.substr(1)); + var i, l = slideList.length, + currentSlideId = url.hash.substr(1); + + for (i = 0; i < l; ++i) { + if (currentSlideId === slideList[i].id) { + return i; + } + } + + return -1; } function scrollToCurrentSlide() { - var current_slide = document.getElementById(slideList[getCurrentSlideNumber()]); + var currentSlide = document.getElementById( + slideList[getCurrentSlideNumber()].id + ); - if (null != current_slide) { - window.scrollTo(0, current_slide.offsetTop); + if (null != currentSlide) { + window.scrollTo(0, currentSlide.offsetTop); } } - function isSlideListMode() { + function isListMode() { return 'full' !== url.search.substr(1); } - function normalizeSlideNumber(slide_number) { - if (0 > slide_number) { + function normalizeSlideNumber(slideNumber) { + if (0 > slideNumber) { return slideList.length - 1; - } else if (slideList.length <= slide_number) { + } else if (slideList.length <= slideNumber) { return 0; } else { - return slide_number; + return slideNumber; } } - function updateProgress(slide_number) { - if (!progress) return; - progress.style.width = (100 / (slideList.length - 1) * normalizeSlideNumber(slide_number)).toFixed(2) + '%'; + function updateProgress(slideNumber) { + if (null === progress) { return; } + progress.style.width = (100 / (slideList.length - 1) * normalizeSlideNumber(slideNumber)).toFixed(2) + '%'; } - function getSlideHashByNumber(slide_number) { - return '#' + slideList[normalizeSlideNumber(slide_number)]; + function getSlideHash(slideNumber) { + return '#' + slideList[normalizeSlideNumber(slideNumber)].id; } - function goToSlide(slide_number) { - url.hash = getSlideHashByNumber(slide_number); + function goToSlide(slideNumber) { + url.hash = getSlideHash(slideNumber); - if (!isSlideListMode()) { - updateProgress(slide_number); + if (!isListMode()) { + updateProgress(slideNumber); } } function getContainingSlideId(el) { var node = el; - while ('BODY' !== node.nodeName) { + while ('BODY' !== node.nodeName && 'HTML' !== node.nodeName) { if (-1 !== node.className.indexOf('slide')) { return node.id; } else { @@ -93,82 +106,115 @@ return ''; } - + function dispatchSingleSlideMode(e) { var slideId = getContainingSlideId(e.target); - if ('' !== slideId && isSlideListMode()) { + if ('' !== slideId && isListMode()) { e.preventDefault(); - + // NOTE: we should update hash to get things work properly url.hash = '#' + slideId; history.replaceState(null, null, url.pathname + '?full#' + slideId); - enterSingleSlideMode(); - + enterSlideMode(); + updateProgress(getCurrentSlideNumber()); } } + // Increases inner navigation by adding 'active' class to next inactive + // inner navigation item. + function increaseInnerNavigation(slideNumber) { + // Shortcut for slides without inner navigation + if (true !== slideList[slideNumber].hasInnerNavigation) { return -1; } + + var activeNodes = document.querySelectorAll(getSlideHash(slideNumber) + ' .active'), + // NOTE: we assume there is no other elements in inner navigation + node = activeNodes[activeNodes.length - 1].nextElementSibling; + + if (null !== node) { + node.classList.add('active'); + // NOTE: 'auto-added' class is used in resetInnerNavigation - to + // overcome problems with manually added 'active' class. + node.classList.add('auto-added'); + + return activeNodes.length + 1; + } else { + return -1; + } + } + + // Resets inner navigation by removing 'active' class from all previously + // activated elements. + function resetInnerNavigation(slideNumber) { + // Shortcut for slides without inner navigation + if (true !== slideList[slideNumber].hasInnerNavigation) { return; } + + var activeNodes = document.querySelectorAll( + getSlideHash(slideNumber) + ' .active.auto-added' + ), + i = 0, l; + + for (l = activeNodes.length; i < l; i++) { + activeNodes[i].classList.remove('active'); + activeNodes[i].classList.remove('auto-added'); + } + } + + // Event handlers + window.addEventListener('DOMContentLoaded', function () { - if (!isSlideListMode()) { - // "?full" is present without slide hash so we should display first + if (!isListMode()) { + // "?full" is present without slide hash, so we should display first // slide - if ( -1 === getCurrentSlideNumber() ) { - history.replaceState(null, null, url.pathname + '?full' + getSlideHashByNumber( 0 ) ); + if (-1 === getCurrentSlideNumber()) { + history.replaceState(null, null, url.pathname + '?full' + getSlideHash(0)); } - enterSingleSlideMode(); + enterSlideMode(); updateProgress(getCurrentSlideNumber()); } }, false); window.addEventListener('popstate', function (e) { - if (isSlideListMode()) { - enterSlideListMode(); + if (isListMode()) { + enterListMode(); scrollToCurrentSlide(); } else { - enterSingleSlideMode(); + enterSlideMode(); } }, false); window.addEventListener('resize', function (e) { - if (!isSlideListMode()) { + if (!isListMode()) { applyTransform(getTransform()); } }, false); document.addEventListener('keydown', function (e) { - if (e.altKey || e.ctrlKey || e.metaKey) return; - - var current_slide_number = getCurrentSlideNumber(); + // Shortcut for alt, shift and meta keys + if (e.altKey || e.ctrlKey || e.metaKey) { return; } + + var currentSlideNumber = getCurrentSlideNumber(); switch (e.which) { - case 9: // Tab = +1; Shift + Tab = -1 - if (isSlideListMode()) { - e.preventDefault(); - - current_slide_number += e.shiftKey ? -1 : 1; - url.hash = getSlideHashByNumber(current_slide_number); - } - break; - case 13: // Enter - if (isSlideListMode()) { + if (isListMode()) { e.preventDefault(); - history.pushState(null, null, url.pathname + '?full' + getSlideHashByNumber(current_slide_number)); - enterSingleSlideMode(); + history.pushState(null, null, url.pathname + '?full' + getSlideHash(currentSlideNumber)); + enterSlideMode(); - updateProgress(current_slide_number); + updateProgress(currentSlideNumber); } break; case 27: // Esc - if (!isSlideListMode()) { + if (!isListMode()) { e.preventDefault(); - history.pushState(null, null, url.pathname + getSlideHashByNumber(current_slide_number)); - enterSlideListMode(); + history.pushState(null, null, url.pathname + getSlideHash(currentSlideNumber)); + enterListMode(); scrollToCurrentSlide(); } break; @@ -180,8 +226,9 @@ case 75: // k e.preventDefault(); - current_slide_number--; - goToSlide(current_slide_number); + resetInnerNavigation(currentSlideNumber); + currentSlideNumber--; + goToSlide(currentSlideNumber); break; case 34: // PgDown @@ -191,29 +238,41 @@ case 74: // j e.preventDefault(); - current_slide_number++; - goToSlide(current_slide_number); + // Only go to next slide if current slide have no inner + // navigation or inner navigation is fully shown + if ( + !slideList[currentSlideNumber].hasInnerNavigation || + -1 === increaseInnerNavigation(currentSlideNumber) + ) { + resetInnerNavigation(currentSlideNumber); + currentSlideNumber++; + goToSlide(currentSlideNumber); + } break; case 36: // Home e.preventDefault(); - current_slide_number = 0; - goToSlide(current_slide_number); + resetInnerNavigation(currentSlideNumber); + currentSlideNumber = 0; + goToSlide(currentSlideNumber); break; case 35: // End e.preventDefault(); - current_slide_number = slideList.length - 1; - goToSlide(current_slide_number); + resetInnerNavigation(currentSlideNumber); + currentSlideNumber = slideList.length - 1; + goToSlide(currentSlideNumber); break; + case 9: // Tab = +1; Shift + Tab = -1 case 32: // Space = +1; Shift + Space = -1 e.preventDefault(); - current_slide_number += e.shiftKey ? -1 : 1; - goToSlide(current_slide_number); + resetInnerNavigation(currentSlideNumber); + currentSlideNumber += e.shiftKey ? -1 : 1; + goToSlide(currentSlideNumber); break; default: @@ -225,20 +284,21 @@ document.addEventListener('touchend', dispatchSingleSlideMode, false); document.addEventListener('touchstart', function (e) { - if(!isSlideListMode()) { - var current_slide_number = getCurrentSlideNumber(), + if (!isListMode()) { + var currentSlideNumber = getCurrentSlideNumber(), x = e.touches[0].pageX; - if (x > window.innerWidth/2) { - current_slide_number++; + if (x > window.innerWidth / 2) { + currentSlideNumber++; } else { - current_slide_number--; + currentSlideNumber--; } - goToSlide(current_slide_number); + + goToSlide(currentSlideNumber); } }, false); document.addEventListener('touchmove', function (e) { - if(!isSlideListMode()) { + if (!isListMode()) { e.preventDefault(); } }, false); From 766cd63ecfc0dc80a27d93aa9820f1d35c62b20e Mon Sep 17 00:00:00 2001 From: Vadim Makeev Date: Tue, 9 Aug 2011 23:59:49 +0400 Subject: [PATCH 05/14] inner navigation for ru.htm; trailing \n removed from en.htm --- en.htm | 2 +- ru.htm | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/en.htm b/en.htm index 873a4fb..9e030c2 100755 --- a/en.htm +++ b/en.htm @@ -208,4 +208,4 @@ - + \ No newline at end of file diff --git a/ru.htm b/ru.htm index 6e4ac3d..e660c92 100755 --- a/ru.htm +++ b/ru.htm @@ -174,7 +174,7 @@ После активации последнего элемента, нажатие кнопки «следующий» переключит следующий слайд. - + -->
@@ -187,7 +187,7 @@
  • Erase your hard drive.
  • -
    --> +
    From f43c65f394a4bcc6eb284e0e49effa3f563cc0ec Mon Sep 17 00:00:00 2001 From: Vadim Makeev Date: Wed, 10 Aug 2011 13:06:49 +0400 Subject: [PATCH 06/14] new logic for inner navigation; minor cleanup --- scripts/script.js | 34 +++------------------------------- 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/scripts/script.js b/scripts/script.js index 183d67e..036900e 100755 --- a/scripts/script.js +++ b/scripts/script.js @@ -122,8 +122,7 @@ } } - // Increases inner navigation by adding 'active' class to next inactive - // inner navigation item. + // Increases inner navigation by adding 'active' class to next inactive inner navigation item function increaseInnerNavigation(slideNumber) { // Shortcut for slides without inner navigation if (true !== slideList[slideNumber].hasInnerNavigation) { return -1; } @@ -134,39 +133,17 @@ if (null !== node) { node.classList.add('active'); - // NOTE: 'auto-added' class is used in resetInnerNavigation - to - // overcome problems with manually added 'active' class. - node.classList.add('auto-added'); - return activeNodes.length + 1; } else { return -1; } } - // Resets inner navigation by removing 'active' class from all previously - // activated elements. - function resetInnerNavigation(slideNumber) { - // Shortcut for slides without inner navigation - if (true !== slideList[slideNumber].hasInnerNavigation) { return; } - - var activeNodes = document.querySelectorAll( - getSlideHash(slideNumber) + ' .active.auto-added' - ), - i = 0, l; - - for (l = activeNodes.length; i < l; i++) { - activeNodes[i].classList.remove('active'); - activeNodes[i].classList.remove('auto-added'); - } - } - // Event handlers window.addEventListener('DOMContentLoaded', function () { if (!isListMode()) { - // "?full" is present without slide hash, so we should display first - // slide + // "?full" is present without slide hash, so we should display first slide if (-1 === getCurrentSlideNumber()) { history.replaceState(null, null, url.pathname + '?full' + getSlideHash(0)); } @@ -226,7 +203,6 @@ case 75: // k e.preventDefault(); - resetInnerNavigation(currentSlideNumber); currentSlideNumber--; goToSlide(currentSlideNumber); break; @@ -244,7 +220,6 @@ !slideList[currentSlideNumber].hasInnerNavigation || -1 === increaseInnerNavigation(currentSlideNumber) ) { - resetInnerNavigation(currentSlideNumber); currentSlideNumber++; goToSlide(currentSlideNumber); } @@ -253,7 +228,6 @@ case 36: // Home e.preventDefault(); - resetInnerNavigation(currentSlideNumber); currentSlideNumber = 0; goToSlide(currentSlideNumber); break; @@ -261,7 +235,6 @@ case 35: // End e.preventDefault(); - resetInnerNavigation(currentSlideNumber); currentSlideNumber = slideList.length - 1; goToSlide(currentSlideNumber); break; @@ -270,7 +243,6 @@ case 32: // Space = +1; Shift + Space = -1 e.preventDefault(); - resetInnerNavigation(currentSlideNumber); currentSlideNumber += e.shiftKey ? -1 : 1; goToSlide(currentSlideNumber); break; @@ -303,4 +275,4 @@ } }, false); -}()); +}()); \ No newline at end of file From 04ea8771a2a1848dcc592f18b7fb279a8ef5a356 Mon Sep 17 00:00:00 2001 From: Vadim Makeev Date: Thu, 11 Aug 2011 01:22:32 +0400 Subject: [PATCH 07/14] missed ; Russian translation for inner navigation --- en.htm | 2 +- ru.htm | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/en.htm b/en.htm index 9e030c2..b52a698 100755 --- a/en.htm +++ b/en.htm @@ -181,7 +181,7 @@
    1. This tool is provided
    2. Without warranty, guarantee
    3. -
    4. Or much in the way of explanation +
    5. Or much in the way of explanation
    6. Erase your hard drive.
    diff --git a/ru.htm b/ru.htm index e660c92..6298048 100755 --- a/ru.htm +++ b/ru.htm @@ -181,10 +181,10 @@

    Внутренняя навигация

      -
    1. This tool is provided
    2. -
    3. Without warranty, guarantee
    4. -
    5. Or much in the way of explanation -
    6. Erase your hard drive.
    7. +
    8. Миф мы, не пишете размере
    9. +
    10. Ещё то этой вреде внешних
    11. +
    12. Заведено безостановочно
    13. +
    14. Количества нее, по две
    From 44254061dc34a268c69f1fc2a78cb7b9f7f34b0b Mon Sep 17 00:00:00 2001 From: Vadim Makeev Date: Wed, 31 Aug 2011 03:27:13 +0400 Subject: [PATCH 08/14] missed tabs --- en.htm | 2 +- ru.htm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/en.htm b/en.htm index b52a698..ed40f19 100755 --- a/en.htm +++ b/en.htm @@ -172,7 +172,7 @@ After activation of the last child pressing next button will turn next slide. - --> + -->
    diff --git a/ru.htm b/ru.htm index 6298048..4f50430 100755 --- a/ru.htm +++ b/ru.htm @@ -174,7 +174,7 @@ После активации последнего элемента, нажатие кнопки «следующий» переключит следующий слайд. - --> + -->
    From 975af1389548024bf2dca83e4ff16085c1db5a50 Mon Sep 17 00:00:00 2001 From: Vadim Makeev Date: Thu, 29 Sep 2011 11:43:41 +0400 Subject: [PATCH 09/14] better ribbon placement --- themes/ribbon/styles/style.css | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/themes/ribbon/styles/style.css b/themes/ribbon/styles/style.css index b22f835..83dd5f1 100644 --- a/themes/ribbon/styles/style.css +++ b/themes/ribbon/styles/style.css @@ -31,8 +31,7 @@ BODY { right:120px; width:40px; height:120px; - background:url(../images/ribbon.svg) no-repeat; - content:''; + content:url(../images/ribbon.svg); } /* Header */ @@ -177,7 +176,7 @@ BODY { background:transparent; } .slide.bg SECTION:before { - display:none; + content:normal; } .slide.bg IMG { position:absolute; From 9f69fbb46850552201773433064c63a0c70e8d9a Mon Sep 17 00:00:00 2001 From: Vadim Makeev Date: Tue, 29 Nov 2011 13:30:01 +0400 Subject: [PATCH 10/14] new usage examples --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 226682f..c5161a1 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,8 @@ Please address bugs and your suggestions to [Issues](http://github.com/pepelsbey * [Sense Coding](http://pepelsbey.net/pres/sense-coding/) * [Special Effects Tea](http://pepelsbey.net/pres/special-effects-tea/) * [Web In Curves](http://pepelsbey.net/pres/web-in-curves/) +* [Play Framework](http://spinscale.github.com/play-advanced-concepts.html) +* [Flash -> HTML5](http://batsuev.com/bif2011/) Licensed under [MIT License](http://en.wikipedia.org/wiki/MIT_License), see [license page](https://github.com/pepelsbey/shower/wiki/License) for details. @@ -73,5 +75,7 @@ Licensed under [MIT License](http://en.wikipedia.org/wiki/MIT_License), see [lic * [Вёрстка со смыслом](http://pepelsbey.net/pres/sense-coding/) * [Чай со спецэффектами](http://pepelsbey.net/pres/special-effects-tea/) * [Веб в кривых](http://pepelsbey.net/pres/web-in-curves/) +* [Play Framework](http://spinscale.github.com/play-advanced-concepts.html) +* [Flash -> HTML5](http://batsuev.com/bif2011/) Лицензировано под [лицензией MIT](http://en.wikipedia.org/wiki/MIT_License), читайте подробнее [на странице лицензии](https://github.com/pepelsbey/shower/wiki/License). \ No newline at end of file From addb216d2a8d0308d0c208980288fce0777b0ec6 Mon Sep 17 00:00:00 2001 From: Vadim Makeev Date: Tue, 29 Nov 2011 13:31:23 +0400 Subject: [PATCH 11/14] first attempt to create print version --- themes/ribbon/styles/print.css | 56 ++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 themes/ribbon/styles/print.css diff --git a/themes/ribbon/styles/print.css b/themes/ribbon/styles/print.css new file mode 100644 index 0000000..2814194 --- /dev/null +++ b/themes/ribbon/styles/print.css @@ -0,0 +1,56 @@ +/* + Ribbon theme for Shower presentation template: http://github.com/pepelsbey/shower + Copyright © 2010–2011 Vadim Makeev, http://pepelsbey.net/ + Licensed under MIT license: https://github.com/pepelsbey/shower/wiki/License +*/ + +@page { + margin:0; + size:1024px 640px; + } + +/* List +---------------------------------------- */ +.list { + float:none; + padding:0; + background:#888; + } + +/* Caption */ +.list .caption { + display:none; + } + +/* Slide */ +.list .slide { + float:none; + margin:0; + padding:0; + } + .list .slide > DIV { + width:1024px; + height:640px; + background:none; + } + .list .slide > DIV, + .list .slide > DIV:hover { + -webkit-box-shadow:none; + -moz-box-shadow:none; + box-shadow:none; + } + .list .slide SECTION { + -webkit-transform:none; + -moz-transform:none; + -ms-transform:none; + -o-transform:none; + transform:none; + } + .list .slide:after { + position:absolute; + bottom:85px; + left:120px; + color:#BBB; + line-height:1; + text-shadow:none; + } \ No newline at end of file From 8c04b729d02ea9c4738ecb7fcac6fff0ec9244b8 Mon Sep 17 00:00:00 2001 From: Vadim Makeev Date: Tue, 29 Nov 2011 13:31:53 +0400 Subject: [PATCH 12/14] links for the list view; minor fixes --- themes/ribbon/styles/style.css | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/themes/ribbon/styles/style.css b/themes/ribbon/styles/style.css index 83dd5f1..c12bfca 100644 --- a/themes/ribbon/styles/style.css +++ b/themes/ribbon/styles/style.css @@ -31,7 +31,8 @@ BODY { right:120px; width:40px; height:120px; - content:url(../images/ribbon.svg); + background:url(../images/ribbon.svg) no-repeat; + content:''; } /* Header */ @@ -176,7 +177,7 @@ BODY { background:transparent; } .slide.bg SECTION:before { - content:normal; + display:none; } .slide.bg IMG { position:absolute; @@ -239,6 +240,14 @@ BODY { .list .caption H1 { font:bold 50px/1 'PT Sans Narrow', sans-serif; } + .list .caption A { + color:#4B86C2; + text-shadow:0 -1px 1px #1F3F60; + text-decoration:none; + } + .list .caption A:hover { + color:#5ca4ed; + } /* Slide */ .list .slide { From 031fa2dd210b37c5606db359a96f4d9739e5d68b Mon Sep 17 00:00:00 2001 From: Vadim Makeev Date: Tue, 29 Nov 2011 13:32:52 +0400 Subject: [PATCH 13/14] inner navigation section removed --- en.htm | 32 -------------------------------- ru.htm | 34 ---------------------------------- 2 files changed, 66 deletions(-) diff --git a/en.htm b/en.htm index ed40f19..66e9828 100755 --- a/en.htm +++ b/en.htm @@ -154,38 +154,6 @@
    - -
    -
    -
    -

    Inner Navigation

    -
    -
      -
    1. This tool is provided
    2. -
    3. Without warranty, guarantee
    4. -
    5. Or much in the way of explanation
    6. -
    7. Erase your hard drive.
    8. -
    -
    -
    diff --git a/ru.htm b/ru.htm index 4f50430..0eb9c70 100755 --- a/ru.htm +++ b/ru.htm @@ -154,40 +154,6 @@
    - -
    -
    -
    -

    Внутренняя навигация

    -
    -
      -
    1. Миф мы, не пишете размере
    2. -
    3. Ещё то этой вреде внешних
    4. -
    5. Заведено безостановочно
    6. -
    7. Количества нее, по две
    8. -
    -
    -
    From f505ffab8f90edb086f9015e378baaa0c3a742ec Mon Sep 17 00:00:00 2001 From: Vadim Makeev Date: Mon, 12 Dec 2011 21:13:08 +0400 Subject: [PATCH 14/14] better vendors order --- scripts/script.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/script.js b/scripts/script.js index 036900e..fb0b414 100755 --- a/scripts/script.js +++ b/scripts/script.js @@ -23,10 +23,10 @@ } function applyTransform(transform) { - body.style.MozTransform = transform; body.style.WebkitTransform = transform; - body.style.OTransform = transform; + body.style.MozTransform = transform; body.style.msTransform = transform; + body.style.OTransform = transform; body.style.transform = transform; }