【问题标题】:Why is my transformed hamburger menu close button uneven?为什么我变形后的汉堡菜单关闭按钮不均匀?
【发布时间】:2018-02-21 17:48:39
【问题描述】:

我正在尝试创建一个汉堡菜单,单击该菜单后,它会变成关闭(“X”)按钮。所以我把这个 HTML 放在了汉堡菜单中

<div id="mobile-nav">

        <div class="menuContainer">
                <div class="bar1"></div>
                <div class="bar2"></div>
                <div class="bar3"></div>
        </div>

     <nav>
           <a href='#'>Vote</a>
           <a href='#'>Search</a>
           <a href='#'>Contact</a>
     </nav>
</div>

还有这些风格

.menuContainer {
    display: inline-block;
    cursor: pointer;
}

.bar1, .bar2, .bar3 {
    width: 25px;
    height: 4px;
    background-color: #333;
    margin: 5px 0;
    transition: 0.4s;
}

.change .bar1 {
    -webkit-transform: rotate(-45deg) translate(-9px, 6px);
    transform: rotate(-45deg) translate(-9px, 6px);
}

.change .bar2 {opacity: 0;}

.change .bar3 {
    -webkit-transform: rotate(45deg) translate(-8px, -8px);
    transform: rotate(45deg) translate(-8px, -8px);
}

但是,当我单击按钮时,右侧的“X”似乎被切断了——https://jsfiddle.net/8jvrrcqq/3/。怎么做才能让 X 左右两边都一样?

【问题讨论】:

    标签: html css transform hamburger-menu


    【解决方案1】:

    您的transform: translate 金额需要调整。我在下面调整了它们;可以根据需要随意调整。

    $('.close-btn').click(function() {
        $('.responsive-menu').removeClass('expand')
        $('.menu-btn').removeClass('btn-none')
    })
    
    $('.menuContainer').click(function() {
        $(this).toggleClass('change');
        $('nav').toggleClass('nav-open');
    });
    #mobile-nav {
        display: block;
    }
    .menuContainer {
        display: inline-block;
        cursor: pointer;
    }
    .bar1,
    .bar2,
    .bar3 {
        width: 25px;
        height: 4px;
        background-color: #333;
        margin: 5px 0;
        transition: 0.4s;
    }
    .change .bar1 {
        -webkit-transform: rotate(-45deg) translate(-5px, 6px);
        transform: rotate(-45deg) translate(-8px, 4px);
    }
    .change .bar2 {
        opacity: 0;
    }
    .change .bar3 {
        -webkit-transform: rotate(45deg) translate(-8px, -8px);
        transform: rotate(45deg) translate(-9px, -5px);
    }
    <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    <div id="mobile-nav">
        <div class="menuContainer">
            <div class="bar1"></div>
            <div class="bar2"></div>
            <div class="bar3"></div>
        </div>
        <nav>
            <a href='#'>Vote</a>
            <a href='#'>Search</a>
            <a href='#'>Contact</a>
        </nav>
    </div>

    【讨论】:

      【解决方案2】:

      您只需要稍微调整一下您的翻译值。还请考虑您可以使用translateYrotateZ,因为您只关心动画的这些方向。

       $('.close-btn').click(function() {
         $('.responsive-menu').removeClass('expand')
         $('.menu-btn').removeClass('btn-none')
       })
      
       $('.menuContainer').click(function() {
         $(this).toggleClass('change');
         $('nav').toggleClass('nav-open');
       });
      #mobile-nav {
        display: block;
      }
      
      .menuContainer {
        display: inline-block;
        cursor: pointer;
      }
      
      .bar1,
      .bar2,
      .bar3 {
        width: 25px;
        height: 4px;
        background-color: #333;
        margin: 5px 0;
        transition: 0.4s;
      }
      
      .change .bar1 {
        transform: translateY(9px) rotateZ(45deg);
      }
      
      .change .bar2 {
        opacity: 0;
      }
      
      .change .bar3 {
        transform: translateY(-9px) rotateZ(-45deg);
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <div id="mobile-nav">
        <div class="menuContainer">
          <div class="bar1"></div>
          <div class="bar2"></div>
          <div class="bar3"></div>
        </div>
      </div>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-08
        • 2021-01-24
        • 1970-01-01
        • 2022-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-24
        相关资源
        最近更新 更多