简体   繁体   English

切换显示的图标关闭javascript

[英]icons to display on toggle close javascript

I am creating a off canvas menu. 我正在创建一个画布菜单。 I am trying to get it so that when the close toggle is in effect it will just show the menu icons. 我正在尝试获取它,以便在关闭切换生效时仅显示菜单图标。

I am having a bit of trouble trying to work it out so just can see icons when off canvas is closed and when off canvas is open will be able to see whole links. 我在尝试解决它时遇到了一些麻烦,因此在关闭画布时可以看到图标,而在打开画布时可以看到整个链接。

Also can not seem to position the header at top of side bar where sidebar is under neath, can only get header on side. 似乎也无法将标题放置在侧栏位于其下方的侧栏顶部,只能将标题放在侧面。

Live Example: http://codepen.io/riwakawebsitedesigns/pen/oxwzt 实时示例: http//codepen.io/riwakawebsitedesigns/pen/oxwzt

Code

<div class="wrapper">

<div class="offcanvas-header">
        <i class="fa fa-dedent fa-lg toggle"></i>
</div>

<nav class="offcanvas">
    <ul>
        <li><a href="#"><i class="fa fa-dedent fa-lg"></i> Home</a></li>
        <li><a href="#"><i class="fa fa-dedent fa-lg"></i> About</a></li>
        <li><a href="#"><i class="fa fa-dedent fa-lg"></i> Portfolio</a></li>
        <li><a href="#"><i class="fa fa-dedent fa-lg"></i> Contact me</a></li>
    </ul>
</nav>

<div id="page-wrapper">
<main>
</main>
</div>

</div>

<script type="text/javascript">
$(function() {
  var wrapper = $(".wrapper"),
      toggle = $(".toggle"),
      nav = $(".offcanvas");
  toggle.on("click", function() {
    wrapper.toggleClass("nav-open");
    // Change the font-awesome icons on click.
    toggle.toggleClass("fa fa-dedent fa-lg");
    toggle.toggleClass("fa fa-dedent fa-lg");
  });


     $(window).on("click", function(e) {
        if (
          wrapper.hasClass("nav-open") && 
          !$(e.target).parents(nav).hasClass("offcanvas") && 
          !$(e.target).hasClass("toggle")
        ) {
            wrapper.removeClass("nav-open");
          }
      });

});
</script>

CSS CSS

/* Reset */

h1,
h2,
h3,
h4,
h5,
h6 {
    padding: 0 !important;
    margin: 0 !important;
}


body {
    margin: 0;
    padding: 0;
}

.wrapper {
    overflow-x: hidden;
    position: relative;
    left: 0;
}

.offcanvas-header {
    background: none repeat scroll 0 0 #ffffff;
   border-bottom: 1px solid #e5e5e5;
   margin: 0;
   padding: 0;
   height: 50px;
}

.offcanvas-header i {
    line-height: 50px;
    color: #6D6D6D;
    font-weight: bold;
    padding-left: 20px;
    font-size: 2rem;
}

.toggle {
    color: #eee;
    cursor: pointer;
    position: relative;
    top: 0px;
    left: 0px;
}

.offcanvas {
    background-color: #515151;
    border-right: 1px solid #515151;
    height: 100%;
   padding-top: 50px;
    transition: all 0.3s ease 0s;
    color: #fff;
    position: fixed;
    top: 0;
    left: -231px;
    width: 210px;
    height: 100%;
    padding: 10px;
}

.offcanvas ul {
    margin: 0;
    padding: 0;
}

.offcanvas ul li {
    list-style: none;
    position:relative;
    margin: 0;
    padding: 0;
}

.offcanvas ul li a {
    display: block;
    position:relative;
    padding-top: 10px;
    padding-bottom: 10px;
    border-bottom: 1px solid #585858;
   color: #c4c4c4;
   font-size: 14px;
   padding-left: 0;
    color: rgba(255, 255, 255, 0.8);
    text-decoration: none;
}

.offcanvas ul li a i {
    padding-right: 10px;
    font-size: 14px;
}

.offcanvas ul li a:hover {
    color: white;
    font-weight: bold;
}

.nav-open {
    left: 231px;
}

.nav-open .offcanvas {
  left: 0;
}

.wrapper, .offcanvas {
    -webkit-transition: left .2s ease;
    transition: left .2s ease;
}

You could float the icons to the right. 您可以将图标浮动到右侧。 and the remove that when the nav is open. 并在打开导航栏时将其删除。

a .fa {
  float: right;
}

.nav-open a .fa {
  float: none;
}

Codepen Demo Codepen演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM