浏览代码

new controls responsively move to bottom right for small displays

Hakim El Hattab 9 年之前
父节点
当前提交
ce4537f883
共有 2 个文件被更改,包括 101 次插入65 次删除
  1. 50 36
      css/reveal.css
  2. 51 29
      css/reveal.scss

+ 50 - 36
css/reveal.css

@@ -254,8 +254,8 @@ body {
   .reveal .controls[data-controls-type="edges"] button {
     position: absolute;
     padding: 0;
-    width: 36px;
-    height: 36px;
+    width: 44px;
+    height: 44px;
     background-color: transparent;
     border: 0;
     outline: 0;
@@ -272,69 +272,83 @@ body {
   .reveal .controls[data-controls-type="edges"] button:after {
     content: '';
     position: absolute;
-    top: 40%;
+    top: 0;
     left: 0;
-    width: 36px;
+    width: 33px;
     height: 5px;
     border-radius: 2.5px;
     background: #fff;
     -webkit-transition: all 0.15s ease;
             transition: all 0.15s ease;
-    -webkit-transform-origin: 0% 50%;
-            transform-origin: 0% 50%; }
+    -webkit-transform-origin: 2.5px 50%;
+            transform-origin: 2.5px 50%; }
   .reveal .controls[data-controls-type="edges"] button:before {
-    -webkit-transform: translate(0, -1px) rotate(40deg);
-            transform: translate(0, -1px) rotate(40deg); }
+    -webkit-transform: translateY(19.5px) rotate(40deg);
+            transform: translateY(19.5px) rotate(40deg); }
   .reveal .controls[data-controls-type="edges"] button:after {
-    -webkit-transform: translate(0, 1px) rotate(-40deg);
-            transform: translate(0, 1px) rotate(-40deg); }
+    -webkit-transform: translateY(19.5px) rotate(-40deg);
+            transform: translateY(19.5px) rotate(-40deg); }
   .reveal .controls[data-controls-type="edges"] button:hover:before {
-    -webkit-transform: translate(0, -1px) rotate(36deg);
-            transform: translate(0, -1px) rotate(36deg); }
+    -webkit-transform: translateY(19.5px) rotate(36deg);
+            transform: translateY(19.5px) rotate(36deg); }
   .reveal .controls[data-controls-type="edges"] button:hover:after {
-    -webkit-transform: translate(0, 1px) rotate(-36deg);
-            transform: translate(0, 1px) rotate(-36deg); }
+    -webkit-transform: translateY(19.5px) rotate(-36deg);
+            transform: translateY(19.5px) rotate(-36deg); }
   .reveal .controls[data-controls-type="edges"] button:active:before {
-    -webkit-transform: translate(0, -1px) rotate(34deg);
-            transform: translate(0, -1px) rotate(34deg); }
+    -webkit-transform: translateY(19.5px) rotate(34deg);
+            transform: translateY(19.5px) rotate(34deg); }
   .reveal .controls[data-controls-type="edges"] button:active:after {
-    -webkit-transform: translate(0, 1px) rotate(-34deg);
-            transform: translate(0, 1px) rotate(-34deg); }
+    -webkit-transform: translateY(19.5px) rotate(-34deg);
+            transform: translateY(19.5px) rotate(-34deg); }
   .reveal .controls[data-controls-type="edges"] .enabled {
     opacity: 0.7;
     cursor: pointer; }
   .reveal .controls[data-controls-type="edges"] .enabled:hover {
     opacity: 1; }
+  .reveal .controls[data-controls-type="edges"] .enabled.fragmented {
+    opacity: 0.3; }
   .reveal .controls[data-controls-type="edges"] .navigate-left {
     top: 50%;
     left: 18px;
-    margin-top: -18px; }
-  .reveal .controls[data-controls-type="edges"] .navigate-left.fragmented {
-    opacity: 0.3; }
+    -webkit-transform: translateY(-50%);
+            transform: translateY(-50%); }
   .reveal .controls[data-controls-type="edges"] .navigate-right {
     top: 50%;
     right: 18px;
-    margin-top: -18px;
-    -webkit-transform: rotate(180deg);
-            transform: rotate(180deg); }
-  .reveal .controls[data-controls-type="edges"] .navigate-right.fragmented {
-    opacity: 0.3; }
+    -webkit-transform: translateY(-50%) rotate(180deg);
+            transform: translateY(-50%) rotate(180deg); }
   .reveal .controls[data-controls-type="edges"] .navigate-up {
     top: 18px;
     left: 50%;
-    margin-left: -18px;
-    -webkit-transform: rotate(90deg);
-            transform: rotate(90deg); }
-  .reveal .controls[data-controls-type="edges"] .navigate-up.fragmented {
-    opacity: 0.3; }
+    -webkit-transform: translateX(-50%) rotate(90deg);
+            transform: translateX(-50%) rotate(90deg); }
   .reveal .controls[data-controls-type="edges"] .navigate-down {
     bottom: 18px;
     left: 50%;
-    margin-left: -18px;
-    -webkit-transform: rotate(-90deg);
-            transform: rotate(-90deg); }
-  .reveal .controls[data-controls-type="edges"] .navigate-down.fragmented {
-    opacity: 0.3; }
+    -webkit-transform: translateX(-50%) rotate(-90deg);
+            transform: translateX(-50%) rotate(-90deg); }
+  @media screen and (max-width: 500px) {
+    .reveal .controls[data-controls-type="edges"] {
+      bottom: 18px;
+      right: 18px; }
+    .reveal .controls[data-controls-type="edges"] .navigate-left,
+    .reveal .controls[data-controls-type="edges"] .navigate-right,
+    .reveal .controls[data-controls-type="edges"] .navigate-up,
+    .reveal .controls[data-controls-type="edges"] .navigate-down {
+      top: auto;
+      left: auto; }
+    .reveal .controls[data-controls-type="edges"] .navigate-left {
+      right: 80px;
+      bottom: 18px; }
+    .reveal .controls[data-controls-type="edges"] .navigate-right {
+      right: 0;
+      bottom: 18px; }
+    .reveal .controls[data-controls-type="edges"] .navigate-up {
+      right: 18px;
+      bottom: 80px; }
+    .reveal .controls[data-controls-type="edges"] .navigate-down {
+      right: 18px;
+      bottom: 0; } }
 
 /*********************************************
  * PROGRESS BAR

+ 51 - 29
css/reveal.scss

@@ -314,20 +314,21 @@ body {
 
 
 .reveal .controls[data-controls-type="edges"] {
-	$size: 36px;
+	$size: 44px;
+	$length: floor($size * 0.75);
 	$spacing: 18px;
 	$thickness: 5px;
 	$angle: 40deg;
 	$angleHover: 36deg;
 	$angleActive: 34deg;
 
-	@mixin arrowTransform( $angle, $x: 0, $y: 0 ) {
+	@mixin arrowTransform( $angle ) {
 		&:before {
-			transform: translate( $x, $y ) rotate( $angle );
+			transform: translateY(($size - $thickness)/2) rotate( $angle );
 		}
 
 		&:after {
-			transform: translate( $x, -$y ) rotate( -$angle );
+			transform: translateY(($size - $thickness)/2) rotate( -$angle );
 		}
 	}
 
@@ -359,26 +360,26 @@ body {
 	button:after {
 		content: '';
 		position: absolute;
-		top: 40%;
+		top: 0;
 		left: 0;
-		width: $size;
+		width: $length;
 		height: $thickness;
-		border-radius: $thickness / 2;
+		border-radius: $thickness/2;
 		background: #fff;
 
 		transition: all 0.15s ease;
-		transform-origin: 0% 50%;
+		transform-origin: $thickness/2 50%;
 	}
 
 	button {
-		@include arrowTransform( $angle, 0, -1px );
+		@include arrowTransform( $angle );
 
 		&:hover {
-			@include arrowTransform( $angleHover, 0, -1px );
+			@include arrowTransform( $angleHover );
 		}
 
 		&:active {
-			@include arrowTransform( $angleActive, 0, -1px );
+			@include arrowTransform( $angleActive );
 		}
 	}
 
@@ -391,43 +392,64 @@ body {
 		opacity: 1;
 	}
 
+	.enabled.fragmented {
+		opacity: 0.3;
+	}
+
 	.navigate-left {
 		top: 50%;
 		left: $spacing;
-		margin-top: -$size/2;
-	}
-	.navigate-left.fragmented {
-		opacity: 0.3;
+		transform: translateY(-50%);
 	}
 
 	.navigate-right {
 		top: 50%;
 		right: $spacing;
-		margin-top: -$size/2;
-		transform: rotate( 180deg );
-	}
-	.navigate-right.fragmented {
-		opacity: 0.3;
+		transform: translateY(-50%) rotate( 180deg );
 	}
 
 	.navigate-up {
 		top: $spacing;
 		left: 50%;
-		margin-left: -$size/2;
-		transform: rotate( 90deg );
-	}
-	.navigate-up.fragmented {
-		opacity: 0.3;
+		transform: translateX(-50%) rotate( 90deg );
 	}
 
 	.navigate-down {
 		bottom: $spacing;
 		left: 50%;
-		margin-left: -$size/2;
-		transform: rotate( -90deg );
+		transform: translateX(-50%) rotate( -90deg );
 	}
-	.navigate-down.fragmented {
-		opacity: 0.3;
+
+	@media screen and (max-width: 500px) {
+		& {
+			bottom: $spacing;
+			right: $spacing;
+		}
+
+		.navigate-left,
+		.navigate-right,
+		.navigate-up,
+		.navigate-down {
+			top: auto;
+			left: auto;
+		}
+
+		.navigate-left {
+			right: $size + $spacing*2;
+			bottom: $spacing;
+		}
+		.navigate-right {
+			right: 0;
+			bottom: $spacing;
+		}
+		.navigate-up {
+			right: $spacing;
+			bottom: $size + $spacing*2;
+		}
+		.navigate-down {
+			right: $spacing;
+			bottom: 0;
+		}
 	}
 }