]> git.proxmox.com Git - mirror_novnc.git/blobdiff - app/styles/base.css
Add logo to control bar
[mirror_novnc.git] / app / styles / base.css
index 81c45169e4b77090c1a07723eda1c5ba941b0ab5..df10c7df144c8fa7452da6d1837c96915df601ab 100644 (file)
@@ -22,10 +22,6 @@ html {
   height:100%;
 }
 
-#noVNC_buttons {
-  white-space: nowrap;
-}
-
 /* ----------------------------------------
  * Input Elements
  * ----------------------------------------
@@ -98,74 +94,119 @@ input[type=button]:active, select:active {
 }
 
 /* ----------------------------------------
- * Control Bar
+ * WebKit centering hacks
  * ----------------------------------------
  */
 
-#noVNC_control_bar {
+.noVNC_center {
+  /*
+   * This is a workaround because webkit misrenders transforms and
+   * uses non-integer coordinates, resulting in blurry content.
+   * Ideally we'd use "top: 50%; transform: translateY(-50%);" on
+   * the objects instead.
+   */
+  display: flex;
+  align-items: center;
+  justify-content: center;
   position: fixed;
-  display: block;
-  height: 36px;
-  left: 0;
   top: 0;
+  left: 0;
   width: 100%;
-  z-index: 200;
+  height: 100%;
+  pointer-events: none;
+}
+.noVNC_center > * {
+  pointer-events: auto;
+}
+.noVNC_vcenter {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  position: fixed;
+  top: 0;
+  left: 0;
+  height: 100%;
+  pointer-events: none;
+}
+.noVNC_vcenter > * {
+  pointer-events: auto;
+}
+
+/* ----------------------------------------
+ * Control Bar
+ * ----------------------------------------
+ */
+
+#noVNC_control_bar_anchor {
+  /* The anchor is needed to get z-stacking to work */
+  position: fixed;
+  z-index: 2;
+
+  /* Edge misrenders animations wihthout this */
+  transform: translateX(0);
+}
+
+#noVNC_control_bar {
+  position: relative;
+  left: -30px;
 
-  background: #b2bdcd; /* Old browsers */
-  background: -moz-linear-gradient(top, #b2bdcd 0%, #899cb3 49%, #7e93af 51%, #6e84a3 100%); /* FF3.6+ */
-  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b2bdcd), color-stop(49%,#899cb3), color-stop(51%,#7e93af), color-stop(100%,#6e84a3)); /* Chrome,Safari4+ */
-  background: -webkit-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Chrome10+,Safari5.1+ */
-  background: -o-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Opera11.10+ */
-  background: -ms-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* IE10+ */
-  background: linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* W3C */
+  background-color: rgb(110, 132, 163);
+  border-radius: 0 10px 10px 0;
+
+  box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5);
+
+  /* The extra border is to get a proper shadow */
+  border-color: rgb(110, 132, 163);
+  border-style: solid;
+  border-width: 0 0 0 30px;
+}
+
+#noVNC_control_bar .noVNC_scroll {
+  max-height: 100vh; /* Chrome is buggy with 100% */
+  overflow-x: hidden;
+  overflow-y: auto;
+  padding: 0 10px 0 5px;
 }
 
 /* General button style */
 .noVNC_button {
+  display: block;
   padding: 4px 4px;
+  margin: 10px 0;
   vertical-align: middle;
-  border:1px solid #869dbc;
+  border:1px solid rgba(255, 255, 255, 0.2);
   -webkit-border-radius: 6px;
   -moz-border-radius: 6px;
   border-radius: 6px;
-  background: #b2bdcd; /* Old browsers */
-  background: -moz-linear-gradient(top, #b2bdcd 0%, #899cb3 49%, #7e93af 51%, #6e84a3 100%); /* FF3.6+ */
-  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b2bdcd), color-stop(49%,#899cb3), color-stop(51%,#7e93af), color-stop(100%,#6e84a3)); /* Chrome,Safari4+ */
-  background: -webkit-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Chrome10+,Safari5.1+ */
-  background: -o-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Opera11.10+ */
-  background: -ms-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* IE10+ */
-  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#b2bdcd', endColorstr='#6e84a3',GradientType=0 ); /* IE6-9 */
-  background: linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* W3C */
-  /*box-shadow:inset 0.4px 0.4px 0.4px #000000;*/
-  font-size: 12px;
 }
 .noVNC_button.noVNC_selected {
-  border-color: #4366a9;
-  background: #779ced; /* Old browsers */
-  background: -moz-linear-gradient(top, #779ced 0%, #3970e0 49%, #2160dd 51%, #2463df 100%); /* FF3.6+ */
-  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#779ced), color-stop(49%,#3970e0), color-stop(51%,#2160dd), color-stop(100%,#2463df)); /* Chrome,Safari4+ */
-  background: -webkit-linear-gradient(top, #779ced 0%,#3970e0 49%,#2160dd 51%,#2463df 100%); /* Chrome10+,Safari5.1+ */
-  background: -o-linear-gradient(top, #779ced 0%,#3970e0 49%,#2160dd 51%,#2463df 100%); /* Opera11.10+ */
-  background: -ms-linear-gradient(top, #779ced 0%,#3970e0 49%,#2160dd 51%,#2463df 100%); /* IE10+ */
-  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#779ced', endColorstr='#2463df',GradientType=0 ); /* IE6-9 */
-  background: linear-gradient(top, #779ced 0%,#3970e0 49%,#2160dd 51%,#2463df 100%); /* W3C */
+  border-color: rgba(0, 0, 0, 0.8);
+  background: rgba(0, 0, 0, 0.5);
 }
 .noVNC_button:disabled {
   opacity: 0.4;
 }
+.noVNC_button:focus {
+  outline: none;
+}
+.noVNC_button:active {
+  padding-top: 5px;
+  padding-bottom: 3px;
+}
 .noVNC_button.noVNC_hidden {
   display: none;
 }
 
 /* Panels */
 .noVNC_panel {
-  position: fixed;
-  top: 46px;
-  right: 15px;
-  transform: translate(0, -50px);
+  transform: translateX(25px);
 
   transition: 0.5s ease-in-out;
 
+  max-height: 100vh; /* Chrome is buggy with 100% */
+  overflow-x: hidden;
+  overflow-y: auto;
+
   visibility: hidden;
   opacity: 0;
 
@@ -182,18 +223,22 @@ input[type=button]:active, select:active {
 .noVNC_panel.noVNC_open {
   visibility: visible;
   opacity: 1;
-  transform: translate(0, 0);
+  transform: translateX(75px);
 }
 
 .noVNC_submit {
   float: right;
 }
 
+:root:not(.noVNC_connected) #noVNC_view_drag_button {
+  display: none;
+}
+
 /* noVNC Touch Device only buttons */
-#noVNC_mobile_buttons {
-  display: inline;
+:root:not(.noVNC_connected) #noVNC_mobile_buttons {
+  display: none;
 }
-#noVNC_mobile_buttons.noVNC_hidden {
+:root:not(.noVNC_touch) #noVNC_mobile_buttons {
   display: none;
 }
 
@@ -209,54 +254,26 @@ input[type=button]:active, select:active {
   ime-mode: disabled;
 }
 
-#noVNC_toggle_extra_keys_button {
+/* Extra manual keys */
+:root:not(.noVNC_connected) #noVNC_extra_keys {
   display: none;
 }
 
-#noVNC_extra_keys {
-  display: inline;
-  list-style-type: none;
-  padding: 0px;
-  margin: 0px;
-  position: relative;
-}
-#noVNC_extra_keys.noVNC_hidden {
+/* Send Ctrl+Alt+Delete */
+:root:not(.noVNC_connected) #noVNC_send_ctrl_alt_del_button {
   display: none;
 }
-#noVNC_toggle_ctrl_button {
-  display: inline;
-}
-#noVNC_toggle_alt_button {
-  display: inline;
-}
-#noVNC_send_tab_button {
-  display: inline;
-}
-#noVNC_send_esc_button {
-  display: inline;
-}
-#noVNC_modifiers {
-  display: inline;
-}
 
-/* Left side buttons */
-.noVNC_buttons_left {
-  float: left;
-  z-index: 1;
-  position: relative;
-  padding-left: 10px;
-}
-
-/* Right side buttons */
-.noVNC_buttons_right {
-  float: right;
-  right: 0px;
-  z-index: 2;
-  position: absolute;
-  padding-right: 10px;
+#noVNC_modifiers {
+  background-color: rgb(92, 92, 92);
+  border: none;
+  padding: 0 10px;
 }
 
 /* XVP Shutdown/Reboot */
+:root:not(.noVNC_connected) #noVNC_xvp_button {
+  display: none;
+}
 #noVNC_xvp {
 }
 #noVNC_xvp_buttons {
@@ -264,10 +281,16 @@ input[type=button]:active, select:active {
 }
 
 /* Clipboard */
+:root:not(.noVNC_connected) #noVNC_clipboard_button {
+  display: none;
+}
 #noVNC_clipboard {
+  /* Full screen, minus padding and left and right margins */
+  max-width: calc(100vw - 2*15px - 75px - 25px);
 }
 #noVNC_clipboard_text {
   width: 500px;
+  max-width: 100%;
 }
 
 /* Settings */
@@ -283,7 +306,11 @@ input[type=button]:active, select:active {
 }
 
 /* Connection Controls */
-#noVNC_connect_controls {
+:root.noVNC_connected #noVNC_connect_controls_button {
+  display: none;
+}
+:root:not(.noVNC_connected) #noVNC_disconnect_button {
+  display: none;
 }
 #noVNC_connect_controls ul {
   list-style: none;
@@ -367,6 +394,29 @@ input[type=button]:active, select:active {
   content: url("../images/warning.svg") " ";
 }
 
+/* ----------------------------------------
+ * Password Dialog
+ * ----------------------------------------
+ */
+
+#noVNC_password_dlg {
+  transform: translateY(-50px);
+}
+#noVNC_password_dlg.noVNC_open {
+  transform: translateY(0);
+}
+#noVNC_password_dlg ul {
+  list-style: none;
+  margin: 0px;
+  padding: 0px;
+}
+#noVNC_password_dlg li {
+  padding-bottom:8px;
+}
+#noVNC_password_input {
+  width: 150px;
+}
+
 /* ----------------------------------------
  * Main Area
  * ----------------------------------------
@@ -387,13 +437,13 @@ input[type=button]:active, select:active {
   margin: 0px;
   padding: 0px;
   bottom: 0px;
-  top: 36px; /* the height of the control bar */
+  top: 0px;
   left: 0px;
   right: 0px;
   width: auto;
   height: auto;
 }
-#noVNC_screen.noVNC_hidden {
+:root:not(.noVNC_connected) #noVNC_screen {
   display: none;
 }
 
@@ -418,14 +468,22 @@ input[type=button]:active, select:active {
                    url('Orbitron700.ttf') format('truetype');
 }
 
-#noVNC_logo {
-  margin-top: 170px;
-  margin-left: 10px;
+.noVNC_logo {
   color:yellow;
   text-align:left;
   font-family: 'Orbitron', 'OrbitronTTF', sans-serif;
-  font-size: 180px;
+  font-size: 13px;
   line-height:90%;
+  text-shadow: 1px 1px 0 #000;
+}
+.noVNC_logo span{
+  color:green;
+}
+
+#noVNC_logo {
+  margin-top: 60px;
+  margin-left: 60px;
+  font-size: 180px;
   text-shadow:
        5px 5px 0 #000,
       -1px -1px 0 #000,
@@ -433,83 +491,28 @@ input[type=button]:active, select:active {
       -1px 1px 0 #000,
        1px 1px 0 #000;
 }
-#noVNC_logo.noVNC_hidden {
+:root.noVNC_connected #noVNC_logo {
   display: none;
 }
 
-#noVNC_logo span{
-  color:green;
-}
-
 /* ----------------------------------------
  * Media sizing
  * ----------------------------------------
  */
 
 @media screen and (max-width: 640px){
-  #noVNC_clipboard_text {
-    width: 410px;
-  }
   #noVNC_logo {
     font-size: 150px;
   }
-  .noVNC_button {
-    font-size: 10px;
-  }
-  .noVNC_buttons_left {
-    padding-left: 0px;
-  }
-  .noVNC_buttons_right {
-    padding-right: 0px;
-  }
-  /* collapse the extra keys on lower resolutions */
-  #noVNC_toggle_extra_keys_button {
-    display: inline;
-  }
-  #noVNC_modifiers {
-    display: none;
-  }
-  #noVNC_modifiers.noVNC_open {
-    display: inline;
-  }
-  #noVNC_toggle_ctrl_button {
-    position: absolute;
-    top: 30px;
-    left: 0px;
-  }
-  #noVNC_toggle_alt_button {
-    position: absolute;
-    top: 65px;
-    left: 0px;
-  }
-  #noVNC_send_tab_button {
-    position: absolute;
-    top: 100px;
-    left: 0px;
-  }
-  #noVNC_send_esc_button {
-    position: absolute;
-    top: 135px;
-    left: 0px;
-  }
 }
 
 @media screen and (min-width: 321px) and (max-width: 480px) {
-  #noVNC_clipboard_text {
-    width: 250px;
-  }
   #noVNC_logo {
     font-size: 110px;
   }
 }
 
 @media screen and (max-width: 320px) {
-  .noVNC_button {
-    font-size: 9px;
-  }
-  #noVNC_clipboard_text {
-    width: 220px;
-  }
   #noVNC_logo {
     font-size: 90px;
   }