2016-02-05 58 views
0

我想弄清楚如何將這種類型的sidebar navigation與我的JSfiddle中的佈局結合在一起。創建摺疊的左導航樣式欄

在第一個示例中,側邊欄會摺疊到主要圖標,我會看到如何完成,但它使用的Nav標籤不夠理想,因爲它的物理空間不受頁面內容的尊重。它在頁面內容下滑動,而不是推到調整大小。

理想情況下,我希望將該導航欄放置在保留自己的空間並與其他行(如第二個JSfiddle)頂部對齊的列中,根據打開的大小將行和列的大小調整爲相應的大小它崩潰的狀態。

還是有一種更簡單的方法來實現這一點,完全忽略了導航標籤?

側邊欄功能我想:

HTML:

<body> 

<div class="row"> 
<div class="col-md-12" style="height:60px;"> 
Header Area 

</div> 
</div> 

<div class="row"> 

<div class="col-md-1"> 
    <nav class='sidebar sidebar-menu-collapsed'> <a href='#' id='justify-icon'> 
     <span class='glyphicon glyphicon-align-justify'></span> 
     </a> 

     <ul class='level1'> 
      <li class='active'> <a class='expandable' href='#' title='Dashboard'> 
      <span class='glyphicon glyphicon-home collapsed-element'></span> 
      <span class='expanded-element'>Dashboard</span> 
      </a> 

       <ul class='level2'> 
        <li> <a href='#' title='Traffic'>Traffic</a> 

        </li> 
        <li> <a href='#' title='Conversion rate'>Conversion rate</a> 

        </li> 
        <li> <a href='#' title='Purchases'>Purchases</a> 

        </li> 
       </ul> 
      </li> 
      <li> <a class='expandable' href='#' title='APIs'> 
      <span class='glyphicon glyphicon-wrench collapsed-element'></span> 
      <span class='expanded-element'>APIs</span> 
      </a> 

      </li> 
      <li> <a class='expandable' href='#' title='Settings'> 
      <span class='glyphicon glyphicon-cog collapsed-element'></span> 
      <span class='expanded-element'>Settings</span> 
      </a> 

      </li> 
      <li> <a class='expandable' href='#' title='Account'> 
      <span class='glyphicon glyphicon-user collapsed-element'></span> 
      <span class='expanded-element'>Account</span> 
      </a> 

      </li> 
     </ul> <a href='#' id='logout-icon' title='Logout'> 
     <span class='glyphicon glyphicon-off'></span> 
     </a> 

    </nav> 
    </div> 

    <div class="col-md-11"> 
    <p> 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 
    </p> 
    <p> 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 
    </p> 
    </div> 
    </div> 
</body> 

的Javascript:

(function() { 
    $(function() { 
     var SideBAR; 
     SideBAR = (function() { 
      function SideBAR() {} 

      SideBAR.prototype.expandMyMenu = function() { 
       return $("nav.sidebar").removeClass("sidebar-menu-collapsed").addClass("sidebar-menu-expanded"); 
      }; 

      SideBAR.prototype.collapseMyMenu = function() { 
       return $("nav.sidebar").removeClass("sidebar-menu-expanded").addClass("sidebar-menu-collapsed"); 
      }; 

      SideBAR.prototype.showMenuTexts = function() { 
       return $("nav.sidebar ul a span.expanded-element").show(); 
      }; 

      SideBAR.prototype.hideMenuTexts = function() { 
       return $("nav.sidebar ul a span.expanded-element").hide(); 
      }; 

      SideBAR.prototype.showActiveSubMenu = function() { 
       $("li.active ul.level2").show(); 
       return $("li.active a.expandable").css({ 
        width: "100%" 
       }); 
      }; 

      SideBAR.prototype.hideActiveSubMenu = function() { 
       return $("li.active ul.level2").hide(); 
      }; 

      SideBAR.prototype.adjustPaddingOnExpand = function() { 
       $("ul.level1 li a.expandable").css({ 
        padding: "1px 4px 4px 0px" 
       }); 
       return $("ul.level1 li.active a.expandable").css({ 
        padding: "1px 4px 4px 4px" 
       }); 
      }; 

      SideBAR.prototype.resetOriginalPaddingOnCollapse = function() { 
       $("ul.nbs-level1 li a.expandable").css({ 
        padding: "4px 4px 4px 0px" 
       }); 
       return $("ul.level1 li.active a.expandable").css({ 
        padding: "4px" 
       }); 
      }; 

      SideBAR.prototype.ignite = function() { 
       return (function (instance) { 
        return $("#justify-icon").click(function (e) { 
         if ($(this).parent("nav.sidebar").hasClass("sidebar-menu-collapsed")) { 
          instance.adjustPaddingOnExpand(); 
          instance.expandMyMenu(); 
          instance.showMenuTexts(); 
          instance.showActiveSubMenu(); 
          $(this).css({ 
           color: "#000" 
          }); 
         } else if ($(this).parent("nav.sidebar").hasClass("sidebar-menu-expanded")) { 
          instance.resetOriginalPaddingOnCollapse(); 
          instance.collapseMyMenu(); 
          instance.hideMenuTexts(); 
          instance.hideActiveSubMenu(); 
          $(this).css({ 
           color: "#FFF" 
          }); 
         } 
         return false; 
        }); 
       })(this); 
      }; 

      return SideBAR; 

     })(); 
     return (new SideBAR).ignite(); 
    }); 

}).call(this); 

CSS-

@import url('http://getbootstrap.com/dist/css/bootstrap.css'); 
@import url("//netdna.bootstrapcdn.com/bootstrap/3.0.0-rc2/css/bootstrap-glyphicons.css"); 
body { 
    background: none repeat scroll 0 0 white; 
} 
nav.sidebar-menu-collapsed { 
    width: 44px; 
} 
nav.sidebar-menu-expanded { 
    width: auto; 
} 
nav.sidebar { 
    position: fixed; 
    top: 0px; 
    left: 0px; 
    height: 100%; 
    background: none repeat scroll 0 0 #0099ff; 
    color: white; 
    padding: 20px 10px; 
} 
nav.sidebar a#justify-icon { 
    outline: 0; 
    color: white; 
    font-size: 24px; 
    font-style: normal; 
} 
nav.sidebar a#logout-icon { 
    outline: 0; 
    color: white; 
    font-size: 24px; 
    font-style: normal; 
    position: absolute; 
    bottom: 10px; 
    left: 10px; 
} 
nav.sidebar ul.level1 { 
    margin: 0; 
    padding: 0; 
    margin-top: 60px; 
} 
nav.sidebar ul.level1 li { 
    margin: 0; 
    padding: 0; 
    margin-top: 20px; 
    list-style-type: none; 
} 
nav.sidebar ul.level1 li a.expandable { 
    outline: 0; 
    display: block; 
    position: relative; 
    width: 100%; 
    height: 30px; 
    color: white; 
    text-decoration: none; 
    text-align: left; 
    padding: 4px 4px 4px 0px; 
    font-size: 20px; 
} 
nav.sidebar ul.level1 li a.expandable:hover { 
    color: #bbbbbb; 
} 
nav.sidebar ul.level1 li a.expandable span.expanded-element { 
    display: none; 
    font-size: 11px; 
    position: relative; 
    bottom: 5px; 
} 
nav.sidebar ul.level1 li.active { 
    margin-left: -4px; 
} 
nav.sidebar ul.level1 li.active a.expandable { 
    background: none repeat scroll 0 0 black; 
    border-radius: 4px; 
    color: white !important; 
    width: 30px; 
    padding: 4px; 
} 
nav.sidebar ul.level1 li.active a.expandable:hover { 
    color: white !important; 
} 
nav.sidebar ul.level1 ul.level2 { 
    margin: 20px 6px 20px 30px; 
    padding: 0; 
    display: none; 
} 
nav.sidebar ul.level1 ul.level2 li { 
    margin: 0; 
    padding: 0; 
    margin-top: 10px; 
    padding-bottom: 10px; 
    list-style-type: none; 
    border-bottom: solid white 1px; 
} 
nav.sidebar ul.level1 ul.level2 li:last-child { 
    border-bottom: none; 
} 
nav.sidebar ul.level1 ul.level2 li a { 
    text-decoration: none; 
    outline: 0; 
    color: white; 
    text-decoration: none; 
    font-size: 11px; 
} 

所需的佈局:

<div class="row" style="height:60px; margin-bottom:10px;"> 
    <div class="well"> 
     Header area 
    </div> 
</div> 

<div class="row"> 
    <div class="col-md-4"> 
     <div class="well"> 
      <span class="glyphicon glyphicon-menu-hamburger pull-right" ></span> 
      <br/> 
      <span class="glyphicon glyphicon-home"></span> &nbsp;&nbsp;Home 
      <br/> 
      <span class="glyphicon glyphicon-thumbs-up"></span> &nbsp;&nbsp;Thumbs Up 
      <br/> 
      <span class="glyphicon glyphicon-picture"></span> &nbsp;&nbsp;Picture 
      <br/> 
      <br/> 
     </div> 
    </div> 
    <div class="col-md-8"> 
     <div class="row"> 
      <div class="col-md-12"> 
       <div class="well">2</div> 
      </div> 
     </div> 
     <div class="row"> 
      <div class="col-md-12"> 
       <div class="well">4</div> 
      </div> 
     </div> 
    </div> 
</div> 
+0

所以,讓我試着去了解一件事,你不希望它從絕對從上到下去,而是填補了「行」的高度,它在? – SpYk3HH

+0

是的,這就是我所問的,不知何故,我沒有明白。從我的一個例子中我可以看到它使用了原型,這增加了更多的複雜性。 – kylebellamy

回答

1

那麼,這樣的事情?

(function() { 
 
    $(function() { 
 
     var SideBAR; 
 
     SideBAR = (function() { 
 
      function SideBAR() {} 
 

 
      SideBAR.prototype.expandMyMenu = function() { 
 
       return $(".sidebar").removeClass("sidebar-menu-collapsed").addClass("sidebar-menu-expanded"); 
 
      }; 
 

 
      SideBAR.prototype.collapseMyMenu = function() { 
 
       return $(".sidebar").removeClass("sidebar-menu-expanded").addClass("sidebar-menu-collapsed"); 
 
      }; 
 

 
      SideBAR.prototype.showMenuTexts = function() { 
 
       return $(".sidebar ul a span.expanded-element").show(); 
 
      }; 
 

 
      SideBAR.prototype.hideMenuTexts = function() { 
 
       return $(".sidebar ul a span.expanded-element").hide(); 
 
      }; 
 

 
      SideBAR.prototype.showActiveSubMenu = function() { 
 
       $("li.active ul.level2").show(); 
 
       return $("li.active a.expandable").css({ 
 
        width: "100%" 
 
       }); 
 
      }; 
 

 
      SideBAR.prototype.hideActiveSubMenu = function() { 
 
       return $("li.active ul.level2").hide(); 
 
      }; 
 

 
      SideBAR.prototype.adjustPaddingOnExpand = function() { 
 
       $("ul.level1 li a.expandable").css({ 
 
        padding: "1px 4px 4px 0px" 
 
       }); 
 
       return $("ul.level1 li.active a.expandable").css({ 
 
        padding: "1px 4px 4px 4px" 
 
       }); 
 
      }; 
 

 
      SideBAR.prototype.resetOriginalPaddingOnCollapse = function() { 
 
       $("ul.nbs-level1 li a.expandable").css({ 
 
        padding: "4px 4px 4px 0px" 
 
       }); 
 
       return $("ul.level1 li.active a.expandable").css({ 
 
        padding: "4px" 
 
       }); 
 
      }; 
 

 
      SideBAR.prototype.ignite = function() { 
 
       return (function (instance) { 
 
        return $("#justify-icon").click(function (e) { 
 
         if ($(this).parent(".sidebar").hasClass("sidebar-menu-collapsed")) { 
 
          instance.adjustPaddingOnExpand(); 
 
          instance.expandMyMenu(); 
 
          instance.showMenuTexts(); 
 
          instance.showActiveSubMenu(); 
 
          $(this).css({ 
 
           color: "#000" 
 
          }); 
 
         } else if ($(this).parent(".sidebar").hasClass("sidebar-menu-expanded")) { 
 
          instance.resetOriginalPaddingOnCollapse(); 
 
          instance.collapseMyMenu(); 
 
          instance.hideMenuTexts(); 
 
          instance.hideActiveSubMenu(); 
 
          $(this).css({ 
 
           color: "#FFF" 
 
          }); 
 
         } 
 
         return false; 
 
        }); 
 
       })(this); 
 
      }; 
 

 
      return SideBAR; 
 

 
     })(); 
 
     return (new SideBAR).ignite(); 
 
    }); 
 

 
}).call(this);
@import url('http://getbootstrap.com/dist/css/bootstrap.css'); 
 
@import url("//netdna.bootstrapcdn.com/bootstrap/3.0.0-rc2/css/bootstrap-glyphicons.css"); 
 

 
body { 
 
    background: none repeat scroll 0 0 white; 
 
} 
 

 
nav.sidebar-menu-collapsed { 
 
    width: 44px; 
 
} 
 
nav.sidebar-menu-expanded { 
 
    width: auto; 
 
} 
 
nav.sidebar { 
 
    background: none repeat scroll 0 0 #0099ff; 
 
    color: white; 
 
    padding: 20px 10px; 
 
} 
 
nav.sidebar a#justify-icon { 
 
    outline: 0; 
 
    color: white; 
 
    font-size: 24px; 
 
    font-style: normal; 
 
} 
 
nav.sidebar a#logout-icon { 
 
    outline: 0; 
 
    color: white; 
 
    font-size: 24px; 
 
    font-style: normal; 
 
    position: absolute; 
 
    bottom: 10px; 
 
    left: 10px; 
 
} 
 
nav.sidebar ul.level1 { 
 
    margin: 0; 
 
    padding: 0; 
 
    margin-top: 60px; 
 
} 
 
nav.sidebar ul.level1 li { 
 
    margin: 0; 
 
    padding: 0; 
 
    margin-top: 20px; 
 
    list-style-type: none; 
 
} 
 
nav.sidebar ul.level1 li a.expandable { 
 
    outline: 0; 
 
    display: block; 
 
    position: relative; 
 
    width: 100%; 
 
    height: 30px; 
 
    color: white; 
 
    text-decoration: none; 
 
    text-align: left; 
 
    padding: 4px 4px 4px 0px; 
 
    font-size: 20px; 
 
} 
 
nav.sidebar ul.level1 li a.expandable:hover { 
 
    color: #bbbbbb; 
 
} 
 
nav.sidebar ul.level1 li a.expandable span.expanded-element { 
 
    display: none; 
 
    font-size: 11px; 
 
    position: relative; 
 
    bottom: 5px; 
 
} 
 
nav.sidebar ul.level1 li.active { 
 
    margin-left: -4px; 
 
} 
 
nav.sidebar ul.level1 li.active a.expandable { 
 
    background: none repeat scroll 0 0 black; 
 
    border-radius: 4px; 
 
    color: white !important; 
 
    width: 30px; 
 
    padding: 4px; 
 
} 
 
nav.sidebar ul.level1 li.active a.expandable:hover { 
 
    color: white !important; 
 
} 
 
nav.sidebar ul.level1 ul.level2 { 
 
    margin: 20px 6px 20px 30px; 
 
    padding: 0; 
 
    display: none; 
 
} 
 
nav.sidebar ul.level1 ul.level2 li { 
 
    margin: 0; 
 
    padding: 0; 
 
    margin-top: 10px; 
 
    padding-bottom: 10px; 
 
    list-style-type: none; 
 
    border-bottom: solid white 1px; 
 
} 
 
nav.sidebar ul.level1 ul.level2 li:last-child { 
 
    border-bottom: none; 
 
} 
 
nav.sidebar ul.level1 ul.level2 li a { 
 
    text-decoration: none; 
 
    outline: 0; 
 
    color: white; 
 
    text-decoration: none; 
 
    font-size: 11px; 
 
}
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
 
<div class="row" style="height:60px; margin-bottom:10px;"> 
 
\t <div class="well"> 
 
\t \t Header area 
 
\t </div> 
 
</div> 
 

 
<div class="row"> 
 
\t <nav class="sidebar sidebar-menu-collapsed"> 
 
\t \t <a href="#" id="justify-icon" style="color: rgb(255, 255, 255);"> 
 
\t \t \t <span class="glyphicon glyphicon-align-justify"></span> 
 
\t \t </a> 
 
\t \t <ul class="level1"> 
 
      <li class="active"> 
 
\t \t \t \t <a class="expandable" href="#" title="Dashboard" style="padding: 4px; width: 100%;"> 
 
\t \t \t \t \t <span class="glyphicon glyphicon-home collapsed-element"></span> 
 
\t \t \t \t \t <span class="expanded-element" style="display: none;">Dashboard</span> 
 
\t \t \t \t </a> 
 
      </li> 
 
      <li> 
 
\t \t \t \t <a class="expandable" href="#" title="APIs" style="padding: 1px 4px 4px 0px;"> 
 
\t \t \t \t \t <span class="glyphicon glyphicon-thumbs-up collapsed-element"></span> 
 
\t \t \t \t \t <span class="expanded-element" style="display: none;">Thumbs Up</span> 
 
\t \t \t \t </a> 
 
      </li> 
 
      <li> 
 
\t \t \t \t <a class="expandable" href="#" title="Settings" style="padding: 1px 4px 4px 0px;"> 
 
\t \t \t \t \t <span class="glyphicon glyphicon-picture collapsed-element"></span> 
 
\t \t \t \t \t <span class="expanded-element" style="display: none;">Picture</span> 
 
\t \t \t \t </a> 
 
      </li> 
 
     </ul> 
 
\t \t <a href="#" id="logout-icon" title="Logout"> 
 
\t \t \t <span class="glyphicon glyphicon-off"></span> 
 
\t \t </a> 
 
    </nav> 
 
\t <div class="col-md-8"> 
 
\t \t <div class="row"> 
 
\t \t \t <div class="col-md-12"> 
 
\t \t \t \t <div class="well">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div> 
 
\t \t \t </div> 
 
\t \t </div> 
 
\t \t <div class="row"> 
 
\t \t \t <div class="col-md-12"> 
 
\t \t \t \t <div class="well">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div> 
 
\t \t \t </div> 
 
\t \t </div> 
 
\t </div> 
 
</div> 
 
<style> 
 
    html, body { margin: 0; min-height: 100%; min-width: 100%; padding: 0; } 
 
    .row { margin: 0; width: 100%; } 
 
    .row .row { width: auto; } 
 
    .row nav { position: relative; } 
 
    .row nav, .row nav ~ div { display: table-cell; } 
 
</style>

+0

它在窗口模式下工作,但是當您打開整頁時,主要信息會在其下方滑動。但是,是的,這是窗口模式下的正確功能。 – kylebellamy