فهرست منبع

Merge pull request #5265 from ostezer/docs-fix-mobile-menu-click

Fix & improvements for mobile (& desktop) menu & submenu behaviour & issues.
Sven Dowideit 11 سال پیش
والد
کامیت
81d9d92436
3فایلهای تغییر یافته به همراه54 افزوده شده و 21 حذف شده
  1. 27 19
      docs/theme/mkdocs/css/base.css
  2. 25 0
      docs/theme/mkdocs/js/base.js
  3. 2 2
      docs/theme/mkdocs/nav.html

+ 27 - 19
docs/theme/mkdocs/css/base.css

@@ -227,6 +227,9 @@ h6,
 }
 }
 
 
 /* Submenu (dropdown) styling */
 /* Submenu (dropdown) styling */
+.dd_menu {
+  cursor: pointer;
+}
 .dd_menu .dd_submenu {
 .dd_menu .dd_submenu {
   display: none;
   display: none;
   position: absolute;
   position: absolute;
@@ -243,25 +246,25 @@ h6,
   -webkit-border-radius: 0px 0px 4px 4px;
   -webkit-border-radius: 0px 0px 4px 4px;
   -moz-border-radius: 0px 0px 4px 4px;
   -moz-border-radius: 0px 0px 4px 4px;
   border-radius: 0px 0px 4px 4px;
   border-radius: 0px 0px 4px 4px;
+  padding: 0px;
 }
 }
-.dd_menu:hover .dd_submenu {
+.dd_menu.dd_on_hover .dd_submenu {
   display: block;
   display: block;
-  padding: 0px;
 }
 }
-.dd_menu:hover .dd_submenu > li:first-child {
+.dd_menu.dd_on_hover .dd_submenu > li:first-child {
   border: none;
   border: none;
 }
 }
-.dd_menu:hover .dd_submenu > li {
+.dd_menu.dd_on_hover .dd_submenu > li {
   border-top: 1px solid #ddd;
   border-top: 1px solid #ddd;
 }
 }
-.dd_menu:hover .dd_submenu > li.active > a {
+.dd_menu.dd_on_hover .dd_submenu > li.active > a {
   border-color: #b1d5df;
   border-color: #b1d5df;
   color: #FF8100 !important;
   color: #FF8100 !important;
 }
 }
-.dd_menu:hover .dd_submenu > li:hover {
+.dd_menu.dd_on_hover .dd_submenu > li:hover {
   background: #eee;
   background: #eee;
 }
 }
-.dd_menu:hover .dd_submenu > li > a {
+.dd_menu.dd_on_hover .dd_submenu > li > a {
   padding: 0.6em 0.8em 0.4em 0.8em;
   padding: 0.6em 0.8em 0.4em 0.8em;
   width: 100%;
   width: 100%;
   display: block;
   display: block;
@@ -318,32 +321,37 @@ h6,
 }
 }
 #nav_menu > #docsnav > #main-nav > li {
 #nav_menu > #docsnav > #main-nav > li {
   display: block;
   display: block;
-  padding: 0em 1em;
+  padding: 0em 14px;
   height: 100%;
   height: 100%;
   padding-top: 12px;
   padding-top: 12px;
+  color: #fff;
+  font-size: 1.2em;
 }
 }
 #nav_menu > #docsnav > #main-nav > li.active {
 #nav_menu > #docsnav > #main-nav > li.active {
   background: #5992a3;
   background: #5992a3;
 }
 }
-#nav_menu > #docsnav > #main-nav > li:hover {
+#nav_menu > #docsnav > #main-nav > li.dd_on_hover {
   background: #b1d5df;
   background: #b1d5df;
-}
-#nav_menu > #docsnav > #main-nav > li > a {
-  color: #fff;
-  font-size: 1.2em;
-}
-#nav_menu > #docsnav > #main-nav > li:hover > a {
   color: #5992a3;
   color: #5992a3;
 }
 }
-#nav_menu > #docsnav > #main-nav > li > a > span > b {
+#nav_menu > #docsnav > #main-nav > li > span > b {
   border-top-color: #b1d5df !important;
   border-top-color: #b1d5df !important;
 }
 }
-#nav_menu > #docsnav > #main-nav > li:hover > a > span > b {
+#nav_menu > #docsnav > #main-nav > li.dd_on_hover > span > b {
   border-top-color: #71afc0 !important;
   border-top-color: #71afc0 !important;
 }
 }
 #nav_menu > #docsnav > #main-nav > li form {
 #nav_menu > #docsnav > #main-nav > li form {
   margin-top: -12px;
   margin-top: -12px;
 }
 }
+#nav_menu > #docsnav > #main-nav > li.home > a {
+  color: #fff;
+}
+#nav_menu > #docsnav > #main-nav > li.home:hover {
+  background: #b1d5df;
+}
+#nav_menu > #docsnav > #main-nav > li.home:hover > a {
+  color: #5992a3;
+}
 
 
 /* TOC (Left) */
 /* TOC (Left) */
 #toc_table {
 #toc_table {
@@ -634,11 +642,11 @@ ol.breadcrumb > li:last-child > a {
   #nav_menu > #docsnav > #main-nav > li {
   #nav_menu > #docsnav > #main-nav > li {
     display: none;
     display: none;
   }
   }
-  #nav_menu > #docsnav > #main-nav > li.active {
+  #nav_menu > #docsnav > #main-nav > .dd_menu.active {
     display: block;
     display: block;
     background: #71afc0;
     background: #71afc0;
   }
   }
-  #nav_menu > #docsnav > #main-nav > li.active:hover {
+  #nav_menu > #docsnav > #main-nav > .dd_menu.active:hover {
     background: #b1d5df;
     background: #b1d5df;
   }
   }
   #nav_menu > #docsnav > #mobile_menu_button {
   #nav_menu > #docsnav > #mobile_menu_button {

+ 25 - 0
docs/theme/mkdocs/js/base.js

@@ -1,6 +1,9 @@
 $(document).ready(function ()
 $(document).ready(function ()
 {
 {
 
 
+  // Detect if the device is "touch" capable
+  var isTouchDevice = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0));
+
   // Tipue Search activation
   // Tipue Search activation
   $('#tipue_search_input').tipuesearch({
   $('#tipue_search_input').tipuesearch({
     'mode': 'json',
     'mode': 'json',
@@ -38,6 +41,28 @@ $(document).ready(function ()
     }
     }
   });
   });
 
 
+  // Submenu ensured drop-down functionality for desktops & mobiles
+  $('.dd_menu').on({
+    click: function ()
+    {
+      if (isTouchDevice)
+      {
+        $(this).toggleClass('dd_on_hover');
+      }
+    },
+    mouseenter: function ()
+    {
+      if (!isTouchDevice)
+      {
+        $(this).addClass('dd_on_hover');
+      }
+    },
+    mouseleave: function ()
+    {
+      $(this).removeClass('dd_on_hover');
+    },
+  });
+
   /* Follow TOC links (ScrollSpy) */
   /* Follow TOC links (ScrollSpy) */
   $('body').scrollspy({
   $('body').scrollspy({
     target: '#toc_table',
     target: '#toc_table',

+ 2 - 2
docs/theme/mkdocs/nav.html

@@ -21,13 +21,13 @@
     </span>
     </span>
     <b class="arrow pull-left"><img src="/img/docs_nav_menu_arrow_1x.png"></b>
     <b class="arrow pull-left"><img src="/img/docs_nav_menu_arrow_1x.png"></b>
     <ul id="main-nav" class="pull-left">
     <ul id="main-nav" class="pull-left">
-      <li class="dd_menu pull-left">
+      <li class="home pull-left">
         <a href="/"><i class="glyphicon glyphicon-home"></i></span></a>
         <a href="/"><i class="glyphicon glyphicon-home"></i></span></a>
       </li>
       </li>
       {% for menu in nav %}
       {% for menu in nav %}
       {% if menu.title != '**HIDDEN**' %}
       {% if menu.title != '**HIDDEN**' %}
       <li class="dd_menu pull-left{% if menu.active %} active{% endif %}">
       <li class="dd_menu pull-left{% if menu.active %} active{% endif %}">
-        <a href="#"><span>{{ menu.title }} <b class="caret"></b></span></a>
+        <span>{{ menu.title }} <b class="caret"></b></span>
         <ul class="dd_submenu">
         <ul class="dd_submenu">
         {% for menu in menu.children %}
         {% for menu in menu.children %}
           <li {% if menu.active %}class="active"{% endif %}>
           <li {% if menu.active %}class="active"{% endif %}>