【问题标题】:Animate a menu using display: flex;使用 display: flex 动画菜单;
【发布时间】:2017-07-07 03:26:56
【问题描述】:

我想通过 JavaScript(jQuery 或 vanilla)使用 display: flex 为菜单制作动画。这不起作用:

$('#blah').click(function(e){
  e.preventDefault(); 
  $('#mid').animate({flex:'0 0 20%'});
  return false; 
});
* { margin:0; padding: 0; }
#menu { background-color: yellow; display: flex; }
#left {background-color: green; flex: 0 0 200px; }
#mid { background-color: red; flex: 0 0 40%; }
#right {background-color: blue; flex: 1; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="menu">
  <div id="left">left green: 200px</div> 
  <div id="mid">mid red: 40% of browser width</div> 
  <div id="right">right blue: rest</div>
</div>
<div>
<a href="" id="blah">click here to animate mid to 20%!</a>
</div>

使用 CSS display: flex 动画菜单?

【问题讨论】:

    标签: javascript jquery css jquery-animate flexbox


    【解决方案1】:

    animate 函数中使用flexBasis 而不是flex

    $('#blah').click(function(e){
      e.preventDefault(); 
      $('#mid').animate({flexBasis:'20%'});
      return false; 
    });
    * { margin:0; padding: 0; }
    #menu { background-color: yellow; display: flex; }
    #left {background-color: green; flex: 0 0 200px; }
    #mid { background-color: red; flex: 0 0 40%; }
    #right {background-color: blue; flex: 1; }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <div id="menu">
      <div id="left">left green: 200px</div> 
      <div id="mid">mid red: 40% of browser width</div> 
      <div id="right">right blue: rest</div>
    </div>
    <div>
    <a href="" id="blah">click here to animate mid to 20%!</a>
    </div>

    【讨论】:

      【解决方案2】:

      这样的事情对你有用吗?

      $('#blah').click(function(e){
        e.preventDefault(); 
        $('#mid').css('flex', '0 0 20%');
        return false; 
      });
      * { margin:0; padding: 0; }
      #menu { background-color: yellow; display: flex; }
      #left {background-color: green; flex: 0 0 200px; }
      #mid { background-color: red; flex: 0 0 40%; transition: all 0.35s ease-in-out}
      #right {background-color: blue; flex: 1; }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
      <div id="menu">
        <div id="left">left green: 200px</div> 
        <div id="mid">mid red: 40% of browser width</div> 
        <div id="right">right blue: rest</div>
      </div>
      <div>
      <a href="" id="blah">click here to animate mid to 20%!</a>
      </div>

      【讨论】:

      • 不抱歉,我们的目标是“动画化”。
      • 只需向 css 类添加一个过渡,它就会做你需要的事情。我已经把它加到上面的sn-p中了
      猜你喜欢
      • 1970-01-01
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      相关资源
      最近更新 更多