Blogger Information
Blog 41
fans 2
comment 0
visits 29721
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
js之ajax与选项卡换肤实战
月光下,遗忘黑暗
Original
602 people have browsed it

1.ajax演示

代码块
html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>CROS-POST</title>
  6. </head>
  7. <body>
  8. <button>跨域请求CROS-POST</button>
  9. <p class="tips"></p>
  10. <script>
  11. const btn = document.querySelector('button');
  12. const tips = document.querySelector('p');
  13. btn.onclick = (ev) =>{
  14. // 1.xhr对象
  15. const xhr = new XMLHttpRequest();
  16. // 2.配置xhr
  17. xhr.open('post','http://www.a.com/cors1.php');
  18. // 3.处理xhr响应
  19. xhr.onload = () => tips.innerHTML = xhr.response;
  20. // 4.发送xhr请求
  21. // 模拟表单数据 FormData
  22. let formData = new FormData();
  23. formData.append('email','admin@qq.com');
  24. formData.append('password','123456');
  25. xhr.send(formData);
  26. }
  27. </script>
  28. </body>
  29. </html>

php

  1. <?php
  2. header('Access-Control-Allow-Origin:*');
  3. print_r($_POST);

效果

2. 选项卡

代码块

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>选项卡</title>
  6. <style>
  7. * {
  8. margin: 0;
  9. padding: 0;
  10. box-sizing: border-box;
  11. }
  12. a {
  13. text-decoration: none;
  14. color: #555;
  15. }
  16. a:hover {
  17. text-decoration: underline;
  18. color: red;
  19. }
  20. li {
  21. list-style: none;
  22. line-height: 1.6em;
  23. }
  24. li:hover {
  25. cursor: default;
  26. }
  27. .tabs {
  28. width: 300px;
  29. height: 300px;
  30. margin: 30px;
  31. background-color: #e6e6e6;
  32. display: flex;
  33. flex-direction: column;
  34. }
  35. .tab {
  36. height: 36px;
  37. display: flex;
  38. }
  39. .tab li {
  40. flex: auto;
  41. text-align: center;
  42. line-height: 36px;
  43. background-color: #fff;
  44. }
  45. .tab li.active {
  46. background-color: #e6e6e6;
  47. }
  48. .tab li:hover {
  49. cursor: pointer;
  50. }
  51. /* 默认所有选项卡只有一个显示,其它隐藏 */
  52. .item {
  53. padding: 20px;
  54. display: none;
  55. }
  56. .item.active {
  57. display: block;
  58. }
  59. </style>
  60. </head>
  61. <body>
  62. <div class="tabs">
  63. <!-- 导航-->
  64. <ul class="tab">
  65. <li data-index="1" class="active">省内</li>
  66. <li data-index="2">国内</li>
  67. <li data-index="3">国际</li>
  68. </ul>
  69. <!-- 与导航标签页对应的详情页-->
  70. <ul data-index="1" class="item active">
  71. <li><a href="">坚持房住不炒,深圳态度坚决打击炒房团</a></li>
  72. <li><a href="">坚持房住不炒,深圳态度坚决打击炒房团</a></li>
  73. <li><a href="">坚持房住不炒,深圳态度坚决打击炒房团</a></li>
  74. <li><a href="">坚持房住不炒,深圳态度坚决打击炒房团</a></li>
  75. </ul>
  76. <ul data-index="2" class="item">
  77. <li><a href="">学党史悟思想办实事开新局</a></li>
  78. <li><a href="">学党史悟思想办实事开新局</a></li>
  79. <li><a href="">学党史悟思想办实事开新局</a></li>
  80. <li><a href="">学党史悟思想办实事开新局</a></li>
  81. </ul>
  82. <ul data-index="3" class="item">
  83. <li><a href="">柬埔寨单日新增新冠确诊病例数创新高</a></li>
  84. <li><a href="">柬埔寨单日新增新冠确诊病例数创新高</a></li>
  85. <li><a href="">柬埔寨单日新增新冠确诊病例数创新高</a></li>
  86. <li><a href="">柬埔寨单日新增新冠确诊病例数创新高</a></li>
  87. </ul>
  88. </div>
  89. <script>
  90. //事件代理实现导航的切换
  91. const tap = document.querySelector('.tab');
  92. const items = document.querySelectorAll('.item');
  93. tap.onclick = (ev) => {
  94. // console.log(ev.currentTarget)
  95. // console.log(ev.target)
  96. //1. 清空之前的active样式,将当前导航设置为active样式
  97. // ...转为数组
  98. //轮询删除class active
  99. [...tap.children].forEach((item) => item.classList.remove('active'));
  100. // 点击的元素增加class active
  101. ev.target.classList.add('active');
  102. items.forEach((item)=> {
  103. item.classList.remove('active');
  104. });
  105. //items变为类数组,然后过滤与点击的tap相等的data-index出来,并把它添加class属性active
  106. [...items].filter((item)=>item.dataset.index===ev.target.dataset.index).pop().classList.add('active');
  107. }
  108. </script>
  109. </body>
  110. </html>

效果

3.换肤

代码块

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>一键换肤</title>
  6. <style>
  7. * {
  8. margin: 0;
  9. padding: 0;
  10. }
  11. body {
  12. background-image: url('https://pic.netbian.com/uploads/allimg/180826/113958-153525479855be.jpg');
  13. /*自动填充,以窗口为大小*/
  14. background-size: cover;
  15. /*去重复*/
  16. background-repeat: no-repeat;
  17. }
  18. .container {
  19. display: grid;
  20. position: absolute;
  21. right: 0;
  22. left: 0;
  23. top: 80px;
  24. /*水平居中*/
  25. margin: auto;
  26. width: 700px;
  27. grid-template-columns: repeat(3,1fr);
  28. gap: 10px;
  29. }
  30. .container > img {
  31. opacity: 0.6;
  32. width: 100%;
  33. border: 2px solid white;
  34. }
  35. .container > img:hover {
  36. width: 105%;
  37. opacity: 1;
  38. cursor : pointer;
  39. }
  40. </style>
  41. </head>
  42. <body>
  43. <div class="container">
  44. <img src="https://pic.netbian.com/uploads/allimg/180826/113958-153525479855be.jpg" alt="">
  45. <img src="https://pic.netbian.com/uploads/allimg/170609/123945-1496983185ad61.jpg" alt="">
  46. <img src="https://pic.netbian.com/uploads/allimg/180826/113958-153525479855be.jpg" alt="">
  47. <img src="https://pic.netbian.com/uploads/allimg/190824/212516-15666531161ade.jpg" alt="">
  48. <img src="https://pic.netbian.com/uploads/allimg/210328/001020-1616861420d950.jpg" alt="">
  49. <img src="https://pic.netbian.com/uploads/allimg/190518/174718-1558172838db13.jpg" alt="">
  50. </div>
  51. <script>
  52. // 事件代理
  53. document.querySelector('.container').onclick =(ev) =>
  54. document.body.style.backgroundImage = `url('${ev.target.src}')`;
  55. /* const box = document.querySelector('.container');
  56. box.onclick = function (ev) {
  57. const body = document.body;
  58. let urlImg = `url('${ev.target.src}')`;
  59. body.style.backgroundImage = urlImg;
  60. }*/
  61. </script>
  62. </body>
  63. </html>

效果

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post