【Web前端基础知识】如何实现网页中常见的切换效果

发布 : Web前端培训      来源:Web前端干货资料

2020-11-25 11:26:42

在页面中tab切换非常的常见,我们先来看下网站中tab切换的实际案例。

我们来做一个简单的tab切换的案例吧~学会了下面的案例,只要通过更改样式,就可以实现上面实例中的样子啦~

一、需求:

1.三个标题对应三个内容区域。

2.默认“标题1“文字颜色是红色,其他标题文字颜色为黑色。

3.“标题1“对应的”内容1“展示出来,其他两个内容区域隐藏。

4.点击“标题几“: ”标题几“的文字颜色是红色,其他标题颜色为黑色,对应的”内容几“展示出来,其他内容区域隐藏。

如图所示:

二、样式和结构:

我们先写结构和样式部分:

  1. <style>
  2. .on{
  3. /* 让class名是on的元素,文字变成红色 */
  4. color: red;
  5. }
  6. #con div{
  7. width: 200px;
  8. height: 200px;
  9. border:10px solid orange;
  10. /* 让内容区域都隐藏起来 */
  11. display: none;
  12. }
  13. #con .active{
  14. /* 让class名是active的元素显示出来 */
  15. display: block;
  16. }
  17. </style>
  18. <body>
  19. <div id="btn">
  20. <button class="on">标题1</button>
  21. <button>标题2</button>
  22. <button>标题3</button>
  23. </div>
  24. <div id="con">
  25. <div class="active">内容1</div>
  26. <div>内容2</div>
  27. <div>内容3</div>
  28. </div>
  29. </body>

三、按钮部分分析:

1.点击每个按钮之后所干的事是一样的,所以我们用for循环写。

2.点击按钮之后,我们先去掉所有按钮的class名,这样所有按钮里的文字颜色就都是默认的黑色。

3.然后我们给当前点击的这个按钮加上class名是on就可以了,上面样式里面我们已经定义好了class名是on的元素文字颜色是红色。

代码如下:

  1. for(var i = 0; i < obtn.length; i++){
  2. // 点击按钮
  3. obtn[i].onclick = function(){
  4. for(var j = 0; j<obtn.length; j++){
  5. // 去掉所有按钮的class名。
  6. obtn[j].className = "";
  7. }
  8. // 给当前点击的这个按钮加上class名是on
  9. this.className = "on";
  10. }
  11. }

四、按钮当前的索引:

我们需要定义按钮当前的索引,点击第几个按钮就把对应索引的第几个内容展示出来。

代码如下:

  1. obtn[i].index = i;

当i=0时,btns[0].index就是0;

当i=1时,btns[0].index就是1;

当i=0时,btns[2].index就是2。

五、展示对应索引的内容区域:

1. 我们需要先把所有内容区域都隐藏,所以我们使用for循环来写。

2. 把所有内容区域div的class名去掉就可以了。

3. 把当前索引对应的内容区域展示出来,只需要把class名active加上就可了,active的样式我们在上面已经写过了。

代码如下:

  1. //隐藏所有内容区域。
  2. for(var j = 0; j<ocon.length; j++){
  3. ocon[j].className = &#39;&#39;;
  4. }
  5. //当前索引对应的内容展示出来。
  6. ocon[this.index].className = &#39;active&#39;;

六、代码优化:

我们发现按钮的长度(obtn.length)和内容的长度(ocon.length)是一样的,上面我们是用两个for循环来写,其实我们可以把代码优化下,改成用一个for循环就可以了。代码如下:

  1. for(var j = 0; j<obtn.length; j++){
  2. // 去掉所有按钮的class名。
  3. obtn[j].className = "";
  4. //隐藏所有内容区域。
  5. ocon[j].className = &#39;&#39;;
  6. }

七、完整代码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>tab切换</title>
  6. <style>
  7. .on{
  8. /* 让class名是on的元素,文字变成红色 */
  9. color: red;
  10. }
  11. #con div{
  12. width: 200px;
  13. height: 200px;
  14. border:10px solid orange;
  15. /* 让内容区域都隐藏起来 */
  16. display: none;
  17. }
  18. #con .active{
  19. /* 让class名是active的元素显示出来 */
  20. display: block;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <div id="btn">
  26. <button class="on">标题1</button>
  27. <button>标题2</button>
  28. <button>标题3</button>
  29. </div>
  30. <div id="con">
  31. <div class="active">内容1</div>
  32. <div>内容2</div>
  33. <div>内容3</div>
  34. </div>
  35. <script>
  36. //获取到id名是btn的元素。
  37. var btn = document.getElementById("btn");
  38. //获取到btn里面标签名是button的元素,也就是获取到3个按钮。
  39. var obtn = btn.getElementsByTagName("button");
  40. //获取到id名是con的元素。
  41. var con = document.getElementById("con");
  42. //获取到con里面标签名是div的元素,也就是获取到3个内容。
  43. var ocon = con.getElementsByTagName("div");
  44. for(var i = 0; i < obtn.length; i++){
  45. //给每个按钮定义了一个index属性,这个index是属于obtn[i]的属性和方法。
  46. obtn[i].index = i;
  47. // 点击按钮
  48. obtn[i].onclick = function(){
  49. for(var j = 0; j<obtn.length; j++){
  50. // 去掉所有按钮的class名。
  51. obtn[j].className = "";
  52. //隐藏所有内容区域。
  53. ocon[j].className = &#39;&#39;;
  54. }
  55. // 给当前点击的这个按钮加上class名是on
  1. this.className = "on";
  2. //当前索引对应的内容展示出来。
  3. ocon[this.index].className = &#39;active&#39;;
  4. }
  5. }
  6. </script>
  7. </body>
  8. </html>

效果图:

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

领取零基础自学IT资源

涉及方向有Java、Web前端、UI设计、软件测试、python等科目,内容包含学习路线、视频、源码等

点击申请领取资料

点击查看资料详情 

收起 


 相关推荐

问题解答专区
返回顶部