【问题标题】:Shrink div elements while adding new ones在添加新元素时缩小 div 元素
【发布时间】:2016-08-26 08:11:40
【问题描述】:

我会尽力解释它。我想把这个原则应用到我自己身上。

Tab Add Example

如您所见,我将“标签”添加到标签栏。当我添加足够的选项卡以填充整个选项卡栏时,我不断添加更多选项卡,这些选项卡基本上会调整大小以适应 div。我不希望他们扩展 div 或使用滚动条在其中移动。我希望它们在 div 内缩小。您可以在我链接的 GIF 上看到确切的示例。

它在调整窗口大小时的行为也应该相同。

Window Resize Example

您对如何实现这一目标有任何想法吗?我尝试使用 JQuery,但它的“硬编码”太多,它无法调整大小,也无法调整屏幕分辨率。

我要应用的HTML:

<div class="l_tabs">
 <div>
  <ul id="myTab1" class="nav nav-tabs bordered">
   <li class="tab-add"></li>
   <li class="contentTab"></li>
   <li class="contentTab"></li>
   <li class="contentTab"></li>
   <li class="contentTab"></li>
  </ul>
 </div>
</div>

当我添加新标签时,它会添加这个
&lt;li class="contentTab"&gt;&lt;/li&gt;

JSFiddle

有什么建议吗?

【问题讨论】:

    标签: javascript jquery html css tabs


    【解决方案1】:

    你可以用Flexbox做到这一点,你只需要设置flex-basis

    $(".add").click(function() {
      $(".tabs").append('<li class="tab">Lorem ipsum</li>');
    })
    
    $('.remove').click(function() {
      $('.tab').last().remove();
    })
    .tabs {
      display: flex;
      list-style: none;
      padding: 0;
    }
    .tab {
      border: 1px solid black;
      flex-basis: 200px;
      text-align: center;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <ul class="tabs">
      <li class="tab">Lorem ipsum</li>
    </ul>
    
    <button class="add">Add Tab</button>
    <button class="remove">Remove Tab</button>

    【讨论】:

      【解决方案2】:

      您可以为此使用display: tabledisplay: table-cell

      $("#add").click(function() {
        $("<li>", { "class": "tab", "text": "Lorem ipsum" }).appendTo(".tabs");
      });
      
      $("#del").click(function() {
        $(".tab").last().remove();
      });
      .tabs {
        display: table;
        border-collapse: collapse;
        padding: 0;
      }
      .tab {
        display: table-cell;
        width: 200px;
        border: 1px solid black;
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      
      <ul class="tabs">
        <li class="tab">Lorem ipsum</li>
      </ul>
      
      <button id="add">Add Tab</button>
      <button id="del">Remove Tab</button>

      【讨论】:

        【解决方案3】:

        $('.tab-add').click(function() {
          $('.tab-add').html('+');
          var lastCount = $('#myTab1 li:last-child').html();
          var plusOne = parseInt(lastCount) + 1;
          $('#myTab1').append('<li class="contentTab">' + plusOne + '</li>');
        });
        * {
          margin: 0; padding: 0;
        }
        .l_tabs {
          width: 100%;
          background-color: red;
        }
        #myTab1 {
          display: flex;
          list-style-type: none;
        }
        #myTab1 li {
          display: flex; 
          justify-content: center;
          flex: 1;
          line-height: 50px;
          color: white;
          background-color: hsla(0, 0%, 20%, 1);
        }
        #myTab1 li:nth-child(even) {
          background-color: hsla(0, 0%, 40%, 1);
        }
        .tab-add:hover {
          background-color: hsl(0, 55%, 55%)!important;
          cursor: pointer;
        }
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <div class="l_tabs">
         <div>
          <ul id="myTab1" class="nav nav-tabs bordered">
           <li class="tab-add">click to add</li>
           <li class="contentTab">1</li>
           <li class="contentTab">2</li>
           <li class="contentTab">3</li>
           <li class="contentTab">4</li>
          </ul>
         </div>
        </div>

        小提琴

        https://jsfiddle.net/Hastig/mx2mxgg1/2/

        【讨论】:

          【解决方案4】:

          你可以使用 flexbox 做你想做的事

          ul {
            display: -webkit-box;
          }
          
          
          ul li {
            -webkit-box-flex: 1;
            background: #ddd;
            padding: 10px 15px 6px 15px;
            white-space: nowrap;
            overflow: hidden;
            max-width: 180px;
            min-width: 60px;
            border: solid #ccc 1px;
            border-bottom: none;
            border-radius: 5px 5px 0 0;
            text-overflow: ellipsis;  
          }
          

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-09-22
          • 1970-01-01
          • 1970-01-01
          • 2014-08-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多