簡體   English   中英

如何根據瀏覽器大小更改元素的順序?

[英]How to change order of elements based on browser size?

我有三個水平堆疊的按鈕。 單擊每個按鈕都會顯示一個div元素。 當瀏覽器調整為移動視圖大小時,我希望元素垂直堆疊。 默認情況下會發生這種情況,但是我想將div元素直接堆疊在與其關聯的按鈕下。

這是我要顯示的內容 (桌面左側,移動右側):

正確的桌面視圖 在此處輸入圖片說明

這是我得到的(桌面左側,移動右側):

正確的桌面視圖 移動視圖不正確

這是基本的HTML。 如果將關聯的div直接移到按鈕下方,則在移動設備上看起來不錯,但在桌面上卻不正確。

<button onclick="updateValue(1)">Button 1</button>
<button onclick="updateValue(2)">Button 2</button>
<button onclick="updateValue(3)">Button 3</button>
<div id="div-1"><span>This is div 1!</span></div>
<div id="div-2"><span>This is div 2!</span></div>
<div id="div-3"><span>This is div 3!</span></div>

我確實嘗試在按鈕上使用浮點數,但無法獲得所需的輸出。 這是一個小提琴,顯示了我現在所擁有的。

JSFIDDLE

那么,如何在桌面上為元素按鈕+按鈕+按鈕> div以及按鈕> div>按鈕>移動設備上的元素排序?

首先,將每個div移到其各自的按鈕下。

<button onclick="updateValue(1)">Button 1</button>
<div id="div-1"><span>This is div 1!</span></div>
<button onclick="updateValue(2)">Button 2</button>
<div id="div-2"><span>This is div 2!</span></div>
<button onclick="updateValue(3)">Button 3</button>
<div id="div-3"><span>This is div 3!</span></div>

然后,使用CSS媒體查詢,您可以將div絕對以桌面大小放置在按鈕行下方,然后將其通常放置為移動大小。

button {
  display: block;
}
div {
  display: none;
}
.show {
  display: block;
}

@media (min-width: 768px) {
  button {
    display: inline;
  }
  .show {
    position: absolute;
    top: 30px;
  }
}

這是一個有用的例子

@Lefka是使用flexbox模型的示例。
當您在全頁視圖中將示例的大小調整為小於420px時,元素將按照您期望的方式重新排序。
希望它能幫助您弄清您的需求。

 function updateValue(newValue) { for (i = 1; i <= 3; i++) { var element = document.getElementById("div-" + i); element.className = ""; if (newValue === i) { element.className = "show"; } } } 
 div { display: none; } .show { display: block; } .flex-parent { display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; align-content: stretch; align-items: flex-start; } button { flex: 0 0 auto; } [id^="div-"] { flex: 1 1 100%; } @media screen and (max-width: 420px) { .flex-parent { display: flex; flex-direction: column; flex-wrap: nowrap; justify-content: flex-start; align-content: stretch; align-items: flex-start; } .button-1 { order: 0; } .button-2 { order: 2; } .button-3 { order: 4; } #div-1 { order: 1; } #div-2 { order: 3; } #div-3 { order: 5; } } 
 <div class="flex-parent"> <button class="button-1" onclick="updateValue(1)">Button 1</button> <button class="button-2" onclick="updateValue(2)">Button 2</button> <button class="button-3" onclick="updateValue(3)">Button 3</button> <div id="div-1"><span>This is div 1!</span></div> <div id="div-2"><span>This is div 2!</span></div> <div id="div-3"><span>This is div 3!</span></div> </div> 

您可以添加一個新的DIV嗎?

 <div> <button onclick="updateValue(1)">Button 1</button> <button onclick="updateValue(2)">Button 2</button> <button onclick="updateValue(3)">Button 3</button> </div> <div id="div-1"><span>This is div 1!</span></div> <div id="div-2"><span>This is div 2!</span></div> <div id="div-3"><span>This is div 3!</span></div> 

將Button1和Div1以及寬度= button的寬度和溢出設置為可見,一起放入容器div中。 必要時重復其他按鈕。 如果需要,加寬div。

<div id=superContainer>
    <div id=subContainer1>
        <button onclick="updateValue(1)">Button 1</button>
        <div id="div-1"><span>This is div 1!</span></div>
    </div>
    <div id=subContainer2>
        <button onclick="updateValue(2)">Button 2</button>
        <div id="div-2"><span>This is div 2!</span></div>
    </div>
    <div id=subContainer3>
        <button onclick="updateValue(3)">Button 3</button>
        <div id="div-3"><span>This is div 3!</span></div>
    </div>
</div>

 function updateValue(div) { $('DIV > DIV').hide(); $('#div-'+ div).show() } 
 .parent{position:relative} DIV > DIV{display:none; position:absolute} @media (max-width: 480px) { DIV > DIV{display:none; position:relative} } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="parent"> <button onclick="updateValue(1)">Button 1</button> <div id="div-1"><span>This is div 1!</span></div> <button onclick="updateValue(2)">Button 2</button> <div id="div-2"><span>This is div 2!</span></div> <button onclick="updateValue(3)">Button 3</button> <div id="div-3"><span>This is div 3!</span></div> </div> 

暫無
暫無

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

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