JavaScript实现仿百度风云榜排行榜
JavaScript实现仿百度风云榜排行榜
html:
<div id="wrap"> <ul class="nav clearfix"> <li>电影</li> <li>电视剧</li> </ul> <div class="content-wrap"> <p class="info"><span class="level">排名</span><span class="keywords">关键词</span><span class="searchtop">搜索指数</span></p> <ul class="items"> </ul> </div> </div>
css:
<style>
*{
box-sizing:border-box;}
body,ul,li,h3,p{
margin:0;
padding:0;}
span{
font-size:0.875em;
color:#999;}
body{
font:1em "microsoft Yahei";
color:#333;}
li{
list-style:none;}
img{
border:none;
vertical-align:middle;}
h3{
font-weight:normal;}
a{
text-decoration:none;}
.clearfix:after{
content:"";
display:block;
clear:both;}
#wrap{
width:400px;
margin:20px auto;
border:1px solid #ddd;}
.info{
padding:5px 10px;
border-bottom:1px solid #eee;}
.level{
margin-right:10px;}
.searchtop{
float:right;}
.nav li{
float:left;
text-align:center;
line-height:40px;
border-right:1px solid #ddd;
border-bottom:1px solid #ddd;
cursor:pointer;
color:#666;}
.nav li:hover{
color:#333;}
.nav li:last-child{
border-right:none;}
.nav li.active{
background-color:#DB2162;
color:#fff;
border-color:#BF0A49}
.content-wrap li{
padding:10px;
border-bottom:1px solid #eee;}
.item-head{
font-size:1em;
}
.item-head a{
color:#2464B2;
}
.item-head a:hover{
text-decoration:underline;}
.num{
display:inline-block;
width:18px;
height:18px;
text-align:center;
line-height:18px;
color:#fff;
margin-right:10px;
border-radius:2px;
}
.num.top{
background-color:#F23D7C;
}
.num.normal{
background-color:#ccc;
}
.count{
float:right;
}
.item-info{
display:none;
margin-top:10px;
height:110px;
overflow:hidden;
word-break:break-all;
word-wrap:break-word;}
.item-info img{
float:left;
margin:0 10px 10px 0;
max-width:120px;
max-height:110px;
}
.item-info p{
font-size:0.875em;
color:#666;
line-height:1.5;
}
</style>javascript:
<script>
// 1.模拟数据(后台获取)
var data = [
{
'num':[1,2,3,4,5,6,7,8,9,10],
'title':['环太平洋:雷霆再起','西游记女儿国','复仇者联盟','白鹿原','银魂','天生一对','钢铁侠3','三体','天黑请闭眼','星球大战8'],
'count':[47423,45818,36925,34983,30202,25357,24797,24606,23992,23627],
'url':[
'images/movie/1.jpg',
'images/movie/2.jpg',
'images/movie/3.jpg',
'images/movie/4.jpg',
'images/movie/5.jpg',
'images/movie/6.jpg',
'images/movie/7.jpg',
'images/movie/8.jpg',
'images/movie/9.jpg',
'images/movie/10.jpg'
],
'info':[
'《环太平洋:雷霆再起》是斯蒂文·S·迪奈特执导,约翰·波耶加、斯科特·伊斯特伍德、景甜、卡莉·史派妮、菊地凛子、伯恩·戈曼、亚德里亚·霍纳、张晋、查理·戴、黄恺杰、吉丽、蓝盈莹、于小…',
'《西游记女儿国》是星皓影业有限公司出品,由郑保瑞执导,郭富城、冯绍峰、赵丽颖、小沈阳、罗仲谦领衔主演,林志玲、梁咏琪、刘涛、苑琼丹、潘斌龙、施诗出演的喜剧魔幻片。该片讲述了…',
'《复仇者联盟》(Marvel's The Avengers)是由乔斯·韦登执导的动作科幻电影,小罗伯特·唐尼、克里斯·埃文斯、斯嘉丽·约翰逊、克里斯·海姆斯沃斯等主演出。主要讲述的是“复…',
'《白鹿原》是根据陈忠实的同名小说而改编的,由王全安执导,张丰毅、张雨绮、吴刚、段奕宏等主演。该片筹备9年、拍摄3年,影片以“白家”和“鹿家”在白鹿原上的争斗为背景,主要表达北…',
'《白鹿原》是根据陈忠实的同名小说而改编的,由王全安执导,张丰毅、张雨绮、吴刚、段奕宏等主演。该片筹备9年、拍摄3年,影片以“白家”和“鹿家”在白鹿原上的争斗为背景,主要表达北…',
'《天生一对》(The Parent Trap)是美国1998年出品的家庭喜剧电影,根据伊利奇·卡斯特纳《两个小洛特》改编,由南希·迈耶斯执导,林赛·罗韩、丹尼斯·奎德、娜塔莎·理查德森等主演。影片…',
'《钢铁侠3》是《钢铁侠》系列电影第三部,是由美国漫威影业公司出品的科幻动作电影,由沙恩·布莱克执导,小罗伯特·唐尼、格温妮丝·帕特洛、唐·钱德尔、盖·皮尔斯联合主演。该片于2013年5…',
'《三体》是中国游族影业出品的科幻电影,由张番番执导,冯绍峰、张静初、吴刚、唐嫣、杜淳、张翰等主演。该片根据中国科幻作家刘慈欣同名小说改编,讲述了在红岸基地人类文明初次向宇宙发出…',
'《天黑请闭眼》是由阿甘执导,吴倩莲、李小冉、张耀扬等人主演的一部惊悚影片。于2004年4月1日在中国大陆上映。影片以几个朋友在酒吧中玩杀人游戏开始,讲述了在死亡面前,几位好友之间…',
'《星球大战:最后的绝地武士》是《星球大战》系列第八部,是由美国卢卡斯电影有限公司出品的科幻动作片,由莱恩·约翰逊执导,黛茜·雷德利、约翰·波耶加、奥斯卡·伊萨克、亚当·德赖弗、马克·…']
},
{
'num':[1,2,3,4,5,6,7,8,9],
'title':['如懿传','延禧攻略','白鹿原','香蜜沉沉烬如霜','夜天子','再创世纪','周六夜现场','天黑请闭眼','沙海'],
'count':[47423,45818,36925,34983,30202,25357,24797,24606,23992,23627],
'url':['images/tv/1.jpg','images/tv/2.jpg','images/tv/3.jpg','images/tv/4.jpg','images/tv/5.jpg','images/tv/6.jpg','images/tv/7.jpg','images/tv/8.jpg','images/tv/9.jpg'],
'info':['《环太平洋:雷霆再起》是斯蒂文·S·迪奈特执导,约翰·波耶加、斯科特·伊斯特伍德、景甜、卡莉·史派妮、菊地凛子、伯恩·戈曼、亚德里亚·霍纳、张晋、查理·戴、黄恺杰、吉丽、蓝盈莹、于小…','《西游记女儿国》是星皓影业有限公司出品,由郑保瑞执导,郭富城、冯绍峰、赵丽颖、小沈阳、罗仲谦领衔主演,林志玲、梁咏琪、刘涛、苑琼丹、潘斌龙、施诗出演的喜剧魔幻片。该片讲述了…','《复仇者联盟》(Marvel's The Avengers)是由乔斯·韦登执导的动作科幻电影,小罗伯特·唐尼、克里斯·埃文斯、斯嘉丽·约翰逊、克里斯·海姆斯沃斯等主演出。主要讲述的是“复…','《白鹿原》是根据陈忠实的同名小说而改编的,由王全安执导,张丰毅、张雨绮、吴刚、段奕宏等主演。该片筹备9年、拍摄3年,影片以“白家”和“鹿家”在白鹿原上的争斗为背景,主要表达北…','《白鹿原》是根据陈忠实的同名小说而改编的,由王全安执导,张丰毅、张雨绮、吴刚、段奕宏等主演。该片筹备9年、拍摄3年,影片以“白家”和“鹿家”在白鹿原上的争斗为背景,主要表达北…','《天生一对》(The Parent Trap)是美国1998年出品的家庭喜剧电影,根据伊利奇·卡斯特纳《两个小洛特》改编,由南希·迈耶斯执导,林赛·罗韩、丹尼斯·奎德、娜塔莎·理查德森等主演。影片…','《钢铁侠3》是《钢铁侠》系列电影第三部,是由美国漫威影业公司出品的科幻动作电影,由沙恩·布莱克执导,小罗伯特·唐尼、格温妮丝·帕特洛、唐·钱德尔、盖·皮尔斯联合主演。该片于2013年5…','《三体》是中国游族影业出品的科幻电影,由张番番执导,冯绍峰、张静初、吴刚、唐嫣、杜淳、张翰等主演。该片根据中国科幻作家刘慈欣同名小说改编,讲述了在红岸基地人类文明初次向宇宙发出…','《天黑请闭眼》是由阿甘执导,吴倩莲、李小冉、张耀扬等人主演的一部惊悚影片。于2004年4月1日在中国大陆上映。影片以几个朋友在酒吧中玩杀人游戏开始,讲述了在死亡面前,几位好友之间…','《星球大战:最后的绝地武士》是《星球大战》系列第八部,是由美国卢卡斯电影有限公司出品的科幻动作片,由莱恩·约翰逊执导,黛茜·雷德利、约翰·波耶加、奥斯卡·伊萨克、亚当·德赖弗、马克·…']
}
];
// 2.抓取元素
var oWrap = document.querySelector('#wrap');
var oNav = oWrap.querySelector('.nav');
var aLi = oNav.getElementsByTagName('li')
console.log(oWrap,oNav,aLi)
var oUl = oWrap.querySelector('.items')
var aList = oUl.getElementsByTagName('li')
console.log(oUl,aList)
var aItems = oUl.getElementsByClassName('item-info');
console.log(aItems)
// 3. 定义初始化变量
var navNum = 0;
var itemNum = 0;
var str = '';
// tab栏 的 索引是0的这一项,处于高亮显示状态,也就是给它添加一个active的类去修饰它
aLi[navNum].className = 'active';
// 调用函数--动态生成li --- 生成 <ul class="items"> 这个里面的li
fnTab();
// 循环遍历导航li
for(var i=0; i<aLi.length; i++){
// 1. 给当前的li自定义一个属性 叫index,并且 把 索引 i 赋值 给 index 去用
aLi[i].index = i;
// 2.设置当前li的宽度
aLi[i].style.width = 100/aLi.length + '%';
aLi[i].onmouseover = function(){
// (1). 把 我自己身上的 自定义的属性index上的值,赋值给 navNum 这个变量去使用。
navNum = this.index;
// (2). 遍历导航处 所有的li,一把 将他们身上的样式全部去掉
for(var j=0; j<aLi.length; j++){
aLi[j].className = ''
}
// (3). 然后给当前的导航处的li,添加高亮显示
// console.log(this)
this.className = 'active';
// (4). 调用执行 动态生成li的函数
fnTab()
}
}
// 动态生成li
function fnTab(){
console.log(data[navNum].num.length)
str = '';
for(var i=0; i<data[navNum].num.length; i++){
if(i<3){
str += `
<li>
<h3 class="item-head">
<span class="num top">${data[navNum].num[i]}</span>
<a href="">${data[navNum].title[i]}</a>
<span class="count">${data[navNum].count[i]}</span>
</h3>
<div class="item-info">
<a href="">
<img src="${data[navNum].url[i]}" alt="">
</a>
<p>
${data[navNum].info[i]}
</p>
</div>
</li>
`;
}else{
str += `
<li>
<h3 class="item-head">
<span class="num normal">${data[navNum].num[i]}</span>
<a href="">${data[navNum].title[i]}</a>
<span class="count">${data[navNum].count[i]}</span>
</h3>
<div class="item-info">
<a href="">
<img src="${data[navNum].url[i]}" alt="">
</a>
<p>
${data[navNum].info[i]}
</p>
</div>
</li>
`;
}
}
// console.log(str)
// 把 data中的 电影的数据 全部放置到 指定的ul列表中
oUl.innerHTML= str;
// 把 li项目中的 第一项展开 显示
aItems[itemNum].style.display = 'block';
// 鼠标移入 当前项展开,其他项隐藏
for(var i=0; i<aList.length; i++){
aList[i].index = i;
aList[i].onmouseover = function(){
console.log(this.index)
//1.遍历所有的li列表项
for(var j=0; j<aList.length; j++){
// 不是让外层li隐藏,是让 li里面的类名叫.item-info 这个div隐藏
aItems[j].style.display = 'none';
}
// 2. 让当前的li列表项 里面的 .item-info 这个div展开
aItems[this.index].style.display = 'block';
}
}
}
</script>
吐槽一下


还没有留言,还不快点抢沙发?