[英]how to give left and right scroll buttons for tabs which are dynamically generated
我根據我的要求生成了選項卡,但是當選項卡越來越多時,它們將進入下一行。它們看起來很奇怪,我想使用向右和向左滾動選項。 下一個和上一個功能應該起作用。 但是我也不是沒有辦法包含此功能,因為我是腳本的新手,任何人都可以幫助我。如果生成的標簽更多,則它們已經生成了標簽。 在此功能中,所有都是靜態選項卡,如何使它們在變得更多時適當出現。
function openCity(evt, cityName) { var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName("tabcontent"); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = "none"; } tablinks = document.getElementsByClassName("tablinks"); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(" active", ""); } document.getElementById(cityName).style.display = "block"; evt.currentTarget.className += " active"; return false; }
body {font-family: Arial;} /* Style the tab */ .tab { overflow: hidden; border: 1px solid #ccc; background-color: #f1f1f1; } /* Style the buttons inside the tab */ .tab button { background-color: inherit; float: left; border: none; outline: none; cursor: pointer; padding: 14px 16px; transition: 0.3s; font-size: 17px; } /* Change background color of buttons on hover */ .tab button:hover { background-color: #ddd; } /* Create an active/current tablink class */ .tab button.active { background-color: #ccc; } /* Style the tab content */ .tabcontent { display: none; padding: 6px 12px; border: 1px solid #ccc; border-top: none; }
<p>Click on the buttons inside the tabbed menu:</p> <div class="tab"> <button class="tablinks"onclick="return openCity(event,'London')">Jan 2017</button> <button class="tablinks" onclick="return openCity(event, 'Paris')">Feb 2017</button> <button class="tablinks" onclick="return openCity(event, 'Tokyo')">Mar 2017</button> <button class="tablinks"onclick="return openCity(event,'London')">April 2017</button> <button class="tablinks"onclick="return openCity(event,'London')">May 2017</button> <button class="tablinks"onclick="return openCity(event,'London')">June 2017</button> <button class="tablinks" onclick="return openCity(event, 'Paris')">July 2017</button> <button class="tablinks" onclick="return openCity(event, 'Tokyo')">August 2017</button> <button class="tablinks"onclick="return openCity(event,'London')">September 2017</button> <button class="tablinks"onclick="openCity(event,'London')">October 2017</button> <button class="tablinks"onclick="openCity(event,'London')">Novenber 2017</button> <button class="tablinks" onclick="openCity(event, 'Paris')">December 2017</button> <button class="tablinks" onclick="openCity(event, 'Tokyo')">Jan 2018</button> <button class="tablinks"onclick="openCity(event,'London')">Feb 2018</button> </div> <div id="London" class="tabcontent"> <h3>Januaray</h3> <p>London is the capital city of England.</p> </div> <div id="Paris" class="tabcontent"> <h3>Febrary</h3> <p>Paris is the capital of France.</p> </div> <div id="Tokyo" class="tabcontent"> <h3>March</h3> <p>Tokyo is the capital of Japan.</p> </div>
如果僅使用CSS來解決此問題該怎么辦。
添加white-space: nowrap;
和overflow-x: scroll;
到.tab
:
然后移除float: left;
從.tab button
並添加display: inline-block;
代替
這將使您的.tab
元素滾動,並防止您的按鈕換行到下一行。
/* Style the tab */
.tab {
/* overflow: hidden; */
overflow-x: scroll;
white-space: nowrap;
border: 1px solid #ccc;
background-color: #f1f1f1;
}
/* Style the buttons inside the tab */
.tab button {
background-color: inherit;
/* float: left; */
display: inline-block;
border: none;
outline: none;
cursor: pointer;
padding: 14px 16px;
transition: 0.3s;
font-size: 17px;
}
結果將是:
function openCity(evt, cityName) { var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName("tabcontent"); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = "none"; } tablinks = document.getElementsByClassName("tablinks"); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(" active", ""); } document.getElementById(cityName).style.display = "block"; evt.currentTarget.className += " active"; return false; }
body {font-family: Arial;} /* Style the tab */ .tab { overflow-x: scroll; white-space: nowrap; border: 1px solid #ccc; background-color: #f1f1f1; } /* Style the buttons inside the tab */ .tab button { background-color: inherit; display: inline-block; border: none; outline: none; cursor: pointer; padding: 14px 16px; transition: 0.3s; font-size: 17px; } /* Change background color of buttons on hover */ .tab button:hover { background-color: #ddd; } /* Create an active/current tablink class */ .tab button.active { background-color: #ccc; } /* Style the tab content */ .tabcontent { display: none; padding: 6px 12px; border: 1px solid #ccc; border-top: none; }
<p>Click on the buttons inside the tabbed menu:</p> <div class="tab"> <button class="tablinks"onclick="return openCity(event,'London')">Jan 2017</button> <button class="tablinks" onclick="return openCity(event, 'Paris')">Feb 2017</button> <button class="tablinks" onclick="return openCity(event, 'Tokyo')">Mar 2017</button> <button class="tablinks"onclick="return openCity(event,'London')">April 2017</button> <button class="tablinks"onclick="return openCity(event,'London')">May 2017</button> <button class="tablinks"onclick="return openCity(event,'London')">June 2017</button> <button class="tablinks" onclick="return openCity(event, 'Paris')">July 2017</button> <button class="tablinks" onclick="return openCity(event, 'Tokyo')">August 2017</button> <button class="tablinks"onclick="return openCity(event,'London')">September 2017</button> <button class="tablinks"onclick="openCity(event,'London')">October 2017</button> <button class="tablinks"onclick="openCity(event,'London')">Novenber 2017</button> <button class="tablinks" onclick="openCity(event, 'Paris')">December 2017</button> <button class="tablinks" onclick="openCity(event, 'Tokyo')">Jan 2018</button> <button class="tablinks"onclick="openCity(event,'London')">Feb 2018</button> </div> <div id="London" class="tabcontent"> <h3>Januaray</h3> <p>London is the capital city of England.</p> </div> <div id="Paris" class="tabcontent"> <h3>Febrary</h3> <p>Paris is the capital of France.</p> </div> <div id="Tokyo" class="tabcontent"> <h3>March</h3> <p>Tokyo is the capital of Japan.</p> </div>
結合JoelStüdle的答案和一些JS應該可以解決問題:
white-space: nowrap;
和overflow-x: hidden;
到.tab並在邊上留一點空白(用於控件) float: left;
從.tab按鈕並添加display: inline-block;
background-color
從.tab移至其中,以便所有控件具有相同的背景色 moveNavigation(byX)
moveNavigation(byX)
進行滾動 我還創建了一個小提琴 ,以便您可以使用它。
function openCity(evt, cityName) { var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName("tabcontent"); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = "none"; } tablinks = document.getElementsByClassName("tablinks"); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(" active", ""); } document.getElementById(cityName).style.display = "block"; evt.currentTarget.className += " active"; return false; } function moveNavigation(byX) { var navigation= document.getElementsByClassName("tab")[0]; navigation.scrollLeft= navigation.scrollLeft + byX; }
/* Style the tab */ .tab-navigation { border: 1px solid #ccc; background-color: #f1f1f1; } .tab { overflow-x: hidden; white-space: nowrap; margin-left: 30px; margin-right: 30px; } /* Style the buttons inside the tab */ .tab button, .tab-control { background-color: inherit; display: inline-block; border: none; outline: none; cursor: pointer; padding: 14px 16px; transition: 0.3s; font-size: 17px; } /* Change background color of buttons on hover */ .tab button:hover { background-color: #ddd; } /* Create an active/current tablink class */ .tab button.active { background-color: #ccc; } /* Style the tab content */ .tabcontent { display: none; padding: 6px 12px; border: 1px solid #ccc; border-top: none; } .arrow-left { float: left; } .arrow-right { float: right; }
<p>Click on the buttons inside the tabbed menu:</p> <div class="tab-navigation"> <button class="tab-control arrow-left" onclick="moveNavigation(-100)"> < </button> <button class="tab-control arrow-right" onclick="moveNavigation(100)"> > </button> <div class="tab"> <button class="tablinks" onclick="return openCity(event,'London')">Jan 2017</button> <button class="tablinks" onclick="return openCity(event, 'Paris')">Feb 2017</button> <button class="tablinks" onclick="return openCity(event, 'Tokyo')">Mar 2017</button> <button class="tablinks" onclick="return openCity(event,'London')">April 2017</button> <button class="tablinks" onclick="return openCity(event,'London')">May 2017</button> <button class="tablinks" onclick="return openCity(event,'London')">June 2017</button> <button class="tablinks" onclick="return openCity(event, 'Paris')">July 2017</button> <button class="tablinks" onclick="return openCity(event, 'Tokyo')">August 2017</button> <button class="tablinks" onclick="return openCity(event,'London')">September 2017</button> <button class="tablinks" onclick="openCity(event,'London')">October 2017</button> <button class="tablinks" onclick="openCity(event,'London')">Novenber 2017</button> <button class="tablinks" onclick="openCity(event, 'Paris')">December 2017</button> <button class="tablinks" onclick="openCity(event, 'Tokyo')">Jan 2018</button> <button class="tablinks" onclick="openCity(event,'London')">Feb 2018</button> </div> </div> <div id="London" class="tabcontent"> <h3>Januaray</h3> <p>London is the capital city of England.</p> </div> <div id="Paris" class="tabcontent"> <h3>Febrary</h3> <p>Paris is the capital of France.</p> </div> <div id="Tokyo" class="tabcontent"> <h3>March</h3> <p>Tokyo is the capital of Japan.</p> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.