4-2 综合实战题
本节编程练习不计算学习进度,请电脑登录imooc.com操作

综合实战题

来到这个题目,手风琴效果的全部你已经全部学完了吧!下面来实现一下如下所展示的手风琴效果吧!

任务

 任务1:根据注释,请在右侧的编辑器第62行后补全代码——鼠标悬停的处理函数
 任务2:根据注释,请在右侧的编辑器第70行后补全代码——根据事件的冒泡原理,找到需要变更class 的LI元素

 

温馨提示:完成的任务要与要求的代码效果相一致才可以通过本次测试,否则就再看一遍视频哦!

 

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Accordion</title>
  6. <style>
  7. #imageMenu{width:500px;height:200px;overflow:hidden;}
  8.  
  9. /*动画样式*/
  10. #imageMenu ul *{transition:all linear 0.2s;}
  11.  
  12. #imageMenu ul{width:800px;height:200px;padding: 0; margin: 0; list-style: none}
  13. #imageMenu li{float:left;}
  14.  
  15. #imageMenu ul li a{width: 73px;}
  16.  
  17. /*放大后的样式*/
  18. #imageMenu ul li.big a {width:200px;}
  19.  
  20. #imageMenu li a{width:98px;height:200px;display:block;text-indent:9999px;border-right:2px solid #fff;cursor:pointer;overflow:hidden;}
  21.  
  22. #imageMenu li.landscapes a{background:url(http://img1.sycdn.imooc.com//53451c66000170b503200200.jpg) no-repeat;}
  23. #imageMenu li.people a{background:url(http://img1.sycdn.imooc.com//53451cc900012a0303200200.jpg) no-repeat;}
  24. #imageMenu li.nature a{background:url(http://img1.sycdn.imooc.com//53451d020001336503200200.jpg) no-repeat;}
  25. #imageMenu li.urban a{background:url(http://img1.sycdn.imooc.com//53451d370001d17203200200.jpg) no-repeat;}
  26. #imageMenu li.abstract a{background:url(http://img1.sycdn.imooc.com//53451d5700013fd203200200.jpg) no-repeat;}
  27.  
  28. </style>
  29. </head>
  30. <body>
  31. <div id="imageMenu">
  32. <ul>
  33. <li class="landscapes">
  34. <a href="#link1">Landscapes</a>
  35. </li>
  36. <li class="people big">
  37. <a href="#link1">People</a>
  38. </li>
  39. <li class="nature">
  40. <a href="#link1">Nature</a>
  41. </li>
  42. <li class="urban">
  43. <a href="#link1">Urban</a>
  44. </li>
  45. <li class="abstract">
  46. <a href="#link1">Abstract</a>
  47. </li>
  48. </ul>
  49. </div>
  50. <script type="text/javascript">
  51.  
  52. function bind(el, eventType, callback){
  53. if(typeof el.addEventListener === 'function'){
  54. //标准事件绑定方法
  55. el.addEventListener(eventType, callback, false);
  56. }else if(typeof el.attechEvent === 'function'){
  57. //IE事件绑定方法
  58. el.attachEvent('on' + eventType, callback);
  59. }
  60. }
  61.  
  62. //鼠标悬停的处理函数
  63.  
  64.  
  65. //清空所有LI元素的big
  66. for(var i = 0; i < list.length; i++){
  67. list[i].className = list[i].className.replace(/ ?big/g, '');
  68. }
  69.  
  70. //根据事件的冒泡原理,找到需要变更class 的LI元素
  71.  
  72.  
  73.  
  74. //给当前元素加上class big
  75. target.className += ' big';
  76. }
  77.  
  78. function initList(){
  79. //取得外部元素
  80. var outer = document.getElementById('imageMenu');
  81. //取得每个列表项
  82. var list = outer.getElementsByTagName('li');
  83. for(var i =0; i < list.length; i++){
  84. //对每个列表绑定鼠标悬停事件的监听
  85. bind(list[i], 'mouseover', mouseoverHandler);
  86. }
  87. }
  88.  
  89. //执行初始化函数
  90. initList();
  91. </script>
  92. </body>
  93. </html>
返回课程