improve controls on touch devices

This commit is contained in:
Hakim El Hattab 2017-05-18 14:11:48 +02:00
parent fb1b8a2790
commit 6dde00fb2e
3 changed files with 40 additions and 17 deletions

View File

@ -376,6 +376,16 @@ body {
.reveal.has-light-background .controls { .reveal.has-light-background .controls {
color: #000; } color: #000; }
.reveal.no-hover .controls .controls-arrow:hover:before,
.reveal.no-hover .controls .controls-arrow:active:before {
-webkit-transform: translateX(0.5em) translateY(1.55em) rotate(45deg);
transform: translateX(0.5em) translateY(1.55em) rotate(45deg); }
.reveal.no-hover .controls .controls-arrow:hover:after,
.reveal.no-hover .controls .controls-arrow:active:after {
-webkit-transform: translateX(0.5em) translateY(1.55em) rotate(-45deg);
transform: translateX(0.5em) translateY(1.55em) rotate(-45deg); }
@media screen and (min-width: 500px) { @media screen and (min-width: 500px) {
.reveal .controls[data-controls-layout="edges"] { .reveal .controls[data-controls-layout="edges"] {
top: 0; top: 0;

View File

@ -251,23 +251,23 @@ $controlArrowSize: 3.6em;
$controlArrowSpacing: 1.4em; $controlArrowSpacing: 1.4em;
$controlArrowLength: 2.6em; $controlArrowLength: 2.6em;
$controlArrowThickness: 0.5em; $controlArrowThickness: 0.5em;
$controlsArrowAngle: 45deg;
$controlsArrowAngleHover: 40deg;
$controlsArrowAngleActive: 36deg;
@mixin controlsArrowTransform( $angle ) {
&:before {
transform: translateX(($controlArrowSize - $controlArrowLength)/2) translateY(($controlArrowSize - $controlArrowThickness)/2) rotate( $angle );
}
&:after {
transform: translateX(($controlArrowSize - $controlArrowLength)/2) translateY(($controlArrowSize - $controlArrowThickness)/2) rotate( -$angle );
}
}
.reveal .controls { .reveal .controls {
$angle: 45deg;
$angleHover: 40deg;
$angleActive: 36deg;
$spacing: 12px; $spacing: 12px;
@mixin arrowTransform( $angle ) {
&:before {
transform: translateX(($controlArrowSize - $controlArrowLength)/2) translateY(($controlArrowSize - $controlArrowThickness)/2) rotate( $angle );
}
&:after {
transform: translateX(($controlArrowSize - $controlArrowLength)/2) translateY(($controlArrowSize - $controlArrowThickness)/2) rotate( -$angle );
}
}
display: none; display: none;
position: absolute; position: absolute;
top: auto; top: auto;
@ -323,14 +323,14 @@ $controlArrowThickness: 0.5em;
width: $controlArrowSize; width: $controlArrowSize;
height: $controlArrowSize; height: $controlArrowSize;
@include arrowTransform( $angle ); @include controlsArrowTransform( $controlsArrowAngle );
&:hover { &:hover {
@include arrowTransform( $angleHover ); @include controlsArrowTransform( $controlsArrowAngleHover );
} }
&:active { &:active {
@include arrowTransform( $angleActive ); @include controlsArrowTransform( $controlsArrowAngleActive );
} }
} }
@ -438,14 +438,20 @@ $controlArrowThickness: 0.5em;
bottom: $controlArrowSpacing; bottom: $controlArrowSpacing;
} }
// Invert arrows based on background color
.reveal.has-dark-background .controls { .reveal.has-dark-background .controls {
color: #fff; color: #fff;
} }
.reveal.has-light-background .controls { .reveal.has-light-background .controls {
color: #000; color: #000;
} }
// Disable active states on touch devices
.reveal.no-hover .controls .controls-arrow:hover,
.reveal.no-hover .controls .controls-arrow:active {
@include controlsArrowTransform( $controlsArrowAngle );
}
// Edge aligned controls layout // Edge aligned controls layout
@media screen and (min-width: 500px) { @media screen and (min-width: 500px) {

View File

@ -523,6 +523,13 @@
// Prevent transitions while we're loading // Prevent transitions while we're loading
dom.slides.classList.add( 'no-transition' ); dom.slides.classList.add( 'no-transition' );
if( isMobileDevice ) {
dom.wrapper.classList.add( 'no-hover' );
}
else {
dom.wrapper.classList.remove( 'no-hover' );
}
// Background element // Background element
dom.background = createSingletonNode( dom.wrapper, 'div', 'backgrounds', null ); dom.background = createSingletonNode( dom.wrapper, 'div', 'backgrounds', null );