2017-04-19 43 views
0

爲什麼只有在.info處於活動狀態時,兩個列表之間的50px邊距纔會出現?這個差距應該總是在那裏,一旦選擇數字1-8,文本應該出現在間隙內。所有建議都歡迎。爲什麼僅在.info處於活動狀態時才應用邊距

// Get references to the two sets of boxes 
 
var numbers = document.querySelectorAll(".click"); 
 
var letters = document.querySelectorAll(".border"); 
 

 
// Turn each node list into proper arrays: 
 
numbers = Array.prototype.slice.call(numbers); 
 
letters = Array.prototype.slice.call(letters); 
 

 
// Loop through all the number boxes 
 
numbers.forEach(function(box, index){ 
 

 
    // Set up the click event handlers for all the number boxes 
 
    box.addEventListener("click", function(){ 
 
    
 
    // Remove borders from each of the letter boxes 
 
    letters.forEach(function(box){ 
 
     box.classList.remove("showBorder"); 
 
    }); 
 
     
 
    // Apply the border to only the one clicked element 
 
    var info = document.getElementsByClassName('info')[0]; 
 
    
 
    info.style.display = 'inline'; 
 
    letters[index].classList.add("showBorder"); 
 
    }); 
 
    
 
});
.list-box li {display: inline-block;list-style-type: none;padding: 1em;background:red;} 
 
.list-box {margin:50px auto;padding:0;} 
 
.box-sleeve li {display: inline-block;list-style-type: none;padding: 1em;background:red;} 
 
.box-sleeve {margin:50px auto;padding:0;} 
 
.showBorder { border: 3px dashed black; } 
 
.info {margin:auto; position: relative;padding-left:3em;display:none}
    <ul class="list-box"> 
 
         <li class="click">1</li> 
 
         <li class="click">2</li> 
 
         <li class="click">3</li> 
 
         <li class="click">4</li> 
 
         <li class="click">5</li> 
 
         <li class="click">6</li> 
 
         <li class="click">7</li> 
 
         <li class="click">8</li> 
 
        </ul> 
 
       <div class="info">Regular length for your collar size</div> 
 
        <ul class="box-sleeve"> 
 
         <li class="border">a</li> 
 
         <li class="border">b</li> 
 
         <li class="border">c</li> 
 
         <li class="border">d</li> 
 
         <li class="border">e</li> 
 
         <li class="border">f</li> 
 
         <li class="border">g</li> 
 
         <li class="border">h</li> 
 
        </ul> 
 
      

+0

問題在於你的LI(.click)風格,它是內聯的。使它內聯塊,它會解決。 – Zri

+0

@Zri我編輯了我的問題與您的建議,但仍然有同樣的問題。 – Olivbelle

+0

您可以添加: .list-box { padding:50px 0; margin:0 auto; } – Zri

回答

1

// Get references to the two sets of boxes 
 
var numbers = document.querySelectorAll(".click"); 
 
var letters = document.querySelectorAll(".border"); 
 

 
// Turn each node list into proper arrays: 
 
numbers = Array.prototype.slice.call(numbers); 
 
letters = Array.prototype.slice.call(letters); 
 

 
// Loop through all the number boxes 
 
numbers.forEach(function(box, index){ 
 

 
    // Set up the click event handlers for all the number boxes 
 
    box.addEventListener("click", function(){ 
 
    
 
    // Remove borders from each of the letter boxes 
 
    letters.forEach(function(box){ 
 
     box.classList.remove("showBorder"); 
 
    }); 
 
     
 
    // Apply the border to only the one clicked element 
 
    var info = document.getElementsByClassName('info')[0]; 
 
    
 
    info.style.visibility = 'visible'; 
 
    letters[index].classList.add("showBorder"); 
 
    }); 
 
    
 
});
.list-box li {display: inline-block;list-style-type: none;padding: 1em;background:red;} 
 
.list-box {margin:50px auto;padding:0;} 
 
.box-sleeve li {display: inline-block;list-style-type: none;padding: 1em;background:red;} 
 
.box-sleeve {margin:50px auto;padding:0;} 
 
.showBorder { border: 3px dashed black; } 
 
.info {margin:auto; position: relative;padding-left:3em; visibility: hidden;}
<ul class="list-box"> 
 
         <li class="click">1</li> 
 
         <li class="click">2</li> 
 
         <li class="click">3</li> 
 
         <li class="click">4</li> 
 
         <li class="click">5</li> 
 
         <li class="click">6</li> 
 
         <li class="click">7</li> 
 
         <li class="click">8</li> 
 
        </ul> 
 
       <div class="info">Regular length for your collar size</div> 
 
        <ul class="box-sleeve"> 
 
         <li class="border">a</li> 
 
         <li class="border">b</li> 
 
         <li class="border">c</li> 
 
         <li class="border">d</li> 
 
         <li class="border">e</li> 
 
         <li class="border">f</li> 
 
         <li class="border">g</li> 
 
         <li class="border">h</li> 
 
        </ul>

而不是display:none

擺脫display

和INC路得

visibility:hidden

當調用點擊設置visibility:visible的信息元素。

+0

誰會想到。奇蹟般有效。最好的問候 – Olivbelle

+0

@Olivbelle不客氣。 –

相關問題