簡體   English   中英

將UL設置為移動設備上的下拉菜單和台式機上的全角

[英]Set UL as dropdown on mobile and full width on desktop

背景

我們具有以下代碼,以使水平<ul>占據桌面上<div class="list__wrapper">元素的完整寬度( min-width: 1024px ),但顯示為移動斷點的下拉列表( max-width: 1024px )。

問題

  1. 使所有<li>元素占據全角(當前在desktopmobile上還留有一些空間)。
  2. 隨着<div class="list__wrapper">擴展, <li>會占用整個可用空間。 目前,即使更改.list__wrapper類的max-width: 50% ,也不會更改。

電流輸出

  1. desktop 當前輸出桌面

  2. mobile (not expanded) 當前發行的移動版(未擴展)

  3. mobile (expanded) 當前發行的移動版(擴展版)

所需的輸出

  1. desktop 期望的輸出

  2. mobile (not expanded) 所需的移動設備(未擴展)

  3. mobile (expanded)

所需的移動設備輸出(擴展)

碼:

 var wind = $(window); var windowWidth = $(window).width(); wind.on('resize load', function() { if (windowWidth < 1024) { $("ul").on("click", ".init", function() { $(this).parent().children('li:not(.init)').toggle(); }); var allOptions = $("ul").children('li:not(.init)'); $("ul").on("click", "li:not(.init)", function() { allOptions.removeClass('selected'); $(this).addClass('selected'); $("ul").children('.init').html($(this).html()); allOptions.toggle(); }); } }); 
 .list__wrapper { max-width: 50%; background-color: grey; } li { list-style-type: none; background-color: black; color: white; } @media screen and (max-width: 1024px) { ul { border: 1px #000 solid; text-align: center; width: 100%; } li { width: 100%; } li.init { cursor: pointer; } } @media screen and (min-width: 1024px) { .list { display: flex; justify-content: center; flex: 1; align-items: center; } .list li { padding: 10px; color: white; width: 25%; text-align: center; border-left: 1px solid white; } } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="list__wrapper"> <ul class="list"> <li class="init">Option 0</li> <li data-value="value 1">Option 1</li> <li data-value="value 2">Option 2</li> <li data-value="value 3">Option 3</li> </ul> </div> 

1.使所有<li>元素占據全寬(當前在台式機和移動設備上還留有一些空間)。

@media screen and (max-width: 1024px) {
  ul { 
    border: 1px #000 solid;
    text-align: center;
    width: 100vw; // vertical width of screen
  }
  li {
    width: 100%; 
  }
  li.init { 
    cursor: pointer; 
  }
}

2.隨着<div class="list__wrapper">展開,然后<li>占據整個可用空間。 目前,即使更改.list__wrapper類的最大寬度:50%,也不會更改。

    @media screen and (min-width: 1024px) {
      .list {
        display: flex;
        justify-content: center;
        flex: 1;
        align-items: center;

      }
      .list li {
        padding: 10px;
        color: white;
        flex:0 0 25%; // use flex sizing for flexboxes
        //flex:grow(1/0) shrink(1/0) width;
        text-align: center;
        border-left: 1px solid white;
      }
    }

ul具有默認的邊距和填充值。 我重置值並刪除max-width

 var wind = $(window); var windowWidth = $(window).width(); wind.on('resize load', function() { if (windowWidth < 1024) { $("ul").on("click", ".init", function() { $(this).parent().children('li:not(.init)').toggle(); }); var allOptions = $("ul").children('li:not(.init)'); $("ul").on("click", "li:not(.init)", function() { allOptions.removeClass('selected'); $(this).addClass('selected'); $("ul").children('.init').html($(this).html()); allOptions.toggle(); }); } }); 
 .list__wrapper { background-color: grey; } ul { padding:0; margin:0; } li { list-style-type: none; background-color: black; color: white; } @media screen and (max-width: 1024px) { .list__wrapper { background-color: grey; } ul { border: 1px #000 solid; text-align: center; width: 100%; padding:0; margin:0; } li { width: 100%; } li.init { cursor: pointer; } } @media screen and (min-width: 1024px) { .list { display: flex; justify-content: center; flex: 1; align-items: center; } .list li { padding: 10px; color: white; width: 25%; text-align: center; border-left: 1px solid white; } } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <div class="list__wrapper"> <ul class="list"> <li class="init">Option 0</li> <li data-value="value 1">Option 1</li> <li data-value="value 2">Option 2</li> <li data-value="value 3">Option 3</li> </ul> </div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM