javascript實(shí)現(xiàn)列表切換效果
IE兼容性沒(méi)處理,確切的說(shuō)不太會(huì),還望指點(diǎn)一二

思路:
1、js獲取要給定點(diǎn)擊事件的按鈕組對(duì)象,如btns=document.xxx(),遍歷過(guò)程綁定事件之前先取得當(dāng)前對(duì)象的下標(biāo)eg:btns[i].index=i;
2、匹配index為將要顯示的DOM對(duì)象
3、點(diǎn)擊過(guò)程中要切換class,先判斷是否含有指定class,有就刪除,沒(méi)有就添加指定class。注:if(!null)為真.
4、onmouseover同理
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="css/index.css">
<script src="js/index-banner.js"></script>
</head>
<body>
<h3>javascript切換效果</h3>
<section>
<div class="baner_parent">
<div class="will_left btn_left">
<ul>
<li data-i="0" class="selected js_btn"><img src="img/Ferrari.png"><span>法拉利</span></li>
<li data-i="1" class="js_btn"><img src="img/Mercedes1.png"><span>奔馳</span></li>
<li data-i="2" class="js_btn"><img src="img/BMW.png"><span>寶馬</span></li>
<li data-i="3" class="js_btn"><img src="img/Audi.png"><span>奧迪</span></li>
</ul>
</div>
<div class="will_left banner_right">
<!--法拉利-->
<div class="banner_lists">
<img src="img/ferrari01.jpg" alt="">
<ul>
<li class="will_left btn selected">法拉利1</li>
<li class="will_left btn">法拉利2</li>
<li class="will_left btn">法拉利3</li>
<li class="will_left btn">法拉利4</li>
</ul>
</div>
<!--奔馳-->
<div class="banner_lists">
<img src="img/benchi01.jpg" alt="">
<ul>
<li class="will_left btn selected">奔馳1</li>
<li class="will_left btn">奔馳2</li>
<li class="will_left btn">奔馳3</li>
<li class="will_left btn">奔馳4</li>
</ul>
</div>
<!--寶馬-->
<div class="banner_lists">
<img src="img/baoma01.jpg" alt="">
<ul>
<li class="will_left btn selected">寶馬1</li>
<li class="will_left btn">寶馬2</li>
<li class="will_left btn">寶馬3</li>
<li class="will_left btn">寶馬4</li>
</ul>
</div>
<!--奧迪-->
<div class="banner_lists">
<img src="img/aodi01.jpg" alt="">
<ul>
<li class="will_left btn selected">奧迪1</li>
<li class="will_left btn">奧迪2</li>
<li class="will_left btn">奧迪3</li>
<li class="will_left btn">奧迪4</li>
</ul>
</div>
</div>
</div>
</section>
</body>
</html>
CSS
*{
list-style: none;
border:none;
text-decoration: none;
margin:0;
padding:0;
box-sizing: border-box;
}
h3{
text-align: center;
color: dimgrey;
}
.baner_parent{
width: 1000px;
margin:0 auto;
}
.will_left{
float: left;
}
.will_right{
float: right;
}
.btn_left ul li{
text-align: center;
width: 160px;
height:98px;
background-color: darkgrey;
padding: 13px 0;
cursor: pointer;
-webkit-transition:all .5s ease-out;
-moz-transition:all .5s ease-out;
-o-transition:all .5s ease-out;
-ms-transition:all .5s ease-out;
transition:all .5s ease-out;
}
.btn_left ul li.selected{
background-color: cornflowerblue;
}
.btn_left ul li:not(:nth-child(4)){
border-bottom: 1px solid dimgrey;
}
.btn_left ul li img{
width: 50px;
height: 50px;
}
.btn_left ul li span{
display:block;
}
.banner_right,.banner_lists img{
width: 800px;
height: 391px;
position: relative;
}
.banner_lists{
position: absolute;
height: 391px;
}
.banner_lists:not(:nth-child(1)){
display: none;
}
.banner_lists ul{
overflow: hidden;
position: absolute;
bottom: 0;
left: 0;
}
.btn{
height: 33px;
width: 200px;
border-right: 1px solid #000;
margin-top: -3px;
text-align: center;
line-height: 33px;
background-color: darkgrey;
opacity: .8;
cursor: pointer;
-webkit-transition:all .5s ease-out;
-moz-transition:all .5s ease-out;
-o-transition:all .5s ease-out;
-ms-transition:all .5s ease-out;
transition:all .5s ease-out;
}
.btn:hover,.btn.selected{
background-color: cornflowerblue;
}
JS
/**
* Created by Administrator on 2016/4/30 0030.
* blog:wjf444128852.github.io
* 不支持IE
*/
window.onload=function(){
var arrFR = ['img/ferrari01.jpg','img/ferrari02.jpg','img/ferrari03.jpg','img/ferrari04.jpg'];
var arrBC = ['img/benchi01.jpg','img/benchi02.jpg','img/benchi03.jpg','img/benchi04.jpg'];
var arrBM = ['img/baoma01.jpg','img/baoma02.jpg','img/baoma03.jpg','img/baoma04.jpg'];
var arrAD = ['img/aodi01.jpg','img/aodi02.jpg','img/aodi03.jpg','img/aodi04.jpg'];
var array = [arrFR,arrBC,arrBM,arrAD];
var btns=document.getElementsByClassName('js_btn');
var divList=document.getElementsByClassName('banner_lists');
// 品牌切換
for(var i=0;i<btns.length;i++){
btns[i].index=i;
btns[i].onclick=showItems;
}
//ClassName切換,是否含有指定class
function hasClass(elem,cls){
return elem.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
// 沒(méi)有就追加指定class
function addClass(elem,cls){
if(!hasClass(elem,cls)){
elem.className+=" "+cls;
}
}
// 有就移除指定class
function removeClass(elem,cls){
if(hasClass(elem,cls)){
var reg=new RegExp('(\\s|^)'+cls+'(\\s|$)');
elem.className=elem.className.replace(reg,"");
}
}
//ClassName切換,移除所有
function removeAll(obj){
for (var i = 0; i < obj.length; i++) {
removeClass(obj[i],"selected");
}
}
// DIV顯示切換
function showItems(){
removeAll(btns);
addClass(this,"selected");
for (var s = 0; s< divList.length; s++) {
divList[s].style.display="none";
divList[this.index].style.display="block";
}
willHover(this.index);
}
// 右邊切換按鈕效果
function willHover(sum){
var hoverbtns=divList[sum].getElementsByClassName('btn');
var img=divList[sum].getElementsByTagName('img')[0];
for (var i = 0; i < hoverbtns.length; i++) {
hoverbtns[i].index=i;
hoverbtns[i].onmouseover=function(){
removeAll(hoverbtns);
addClass(this,"selected");
var imgSrc=array[sum][this.index];
img.src=array[sum][this.index];
}
}
}
// 默認(rèn)第一次可以切換
willHover(0);
};
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
- 任意Json轉(zhuǎn)成無(wú)序列表的方法示例
- Vue.js Ajax動(dòng)態(tài)參數(shù)與列表顯示實(shí)現(xiàn)方法
- Vuejs第一篇之入門(mén)教程詳解(單向綁定、雙向綁定、列表渲染、響應(yīng)函數(shù))
- AngularJS實(shí)現(xiàn)數(shù)據(jù)列表的增加、刪除和上移下移等功能實(shí)例
- 將List對(duì)象列表轉(zhuǎn)換成JSON格式的類實(shí)現(xiàn)方法
- VUEJS實(shí)戰(zhàn)之構(gòu)建基礎(chǔ)并渲染出列表(1)
- 基于BootStrap Metronic開(kāi)發(fā)框架經(jīng)驗(yàn)小結(jié)【二】列表分頁(yè)處理和插件JSTree的使用
- JSON的String字符串與Java的List列表對(duì)象的相互轉(zhuǎn)換
- jsp頁(yè)面 列表 展示 ajax異步實(shí)現(xiàn)方法
- JS動(dòng)態(tài)的把左邊列表添加到右邊的實(shí)現(xiàn)代碼(可上下移動(dòng))
- 利用js來(lái)實(shí)現(xiàn)縮略語(yǔ)列表、文獻(xiàn)來(lái)源鏈接和快捷鍵列表
相關(guān)文章
原生js三級(jí)聯(lián)動(dòng)的簡(jiǎn)單實(shí)現(xiàn)代碼
下面小編就為大家?guī)?lái)一篇原生js三級(jí)聯(lián)動(dòng)的簡(jiǎn)單實(shí)現(xiàn)代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
javascript實(shí)現(xiàn)仿銀行密碼輸入框效果的代碼
這篇文章通過(guò)實(shí)例代碼給大家介紹了javascript實(shí)現(xiàn)仿銀行密碼輸入框效果,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2007-12-12
JavaScript中FontFace對(duì)象的使用方式
這篇文章主要介紹了JavaScript中FontFace對(duì)象的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
JavaScript實(shí)現(xiàn)簡(jiǎn)易計(jì)算器案例
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)易計(jì)算器案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下<BR>2022-07-07
js 將canvas生成圖片保存,或直接保存一張圖片的實(shí)現(xiàn)方法
下面小編就為大家分享一篇js 將canvas生成圖片保存,或直接保存一張圖片的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
微信小程序?qū)崿F(xiàn)上傳圖片裁剪圖片過(guò)程解析
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)上傳圖片裁剪圖片過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08

