Blogger Information
Blog 29
fans 0
comment 0
visits 19532
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
双色球选项卡实践
千里马遇伯乐
Original
643 people have browsed it

双色球部分

html:

  1. <div class="bt" onclick="play()">抽奖</div>
  2. <div class="box"></div>

css

  1. <style>
  2. .bt{
  3. background-color: red;
  4. color: aliceblue;
  5. font-size: 30px;
  6. border-radius: 10px;
  7. width: 200px;
  8. margin-left: 50px;
  9. text-align: center;
  10. margin-bottom: 30px;
  11. }
  12. .box {
  13. display: grid;
  14. grid-template-columns: repeat(auto-fill, 30px);
  15. grid-auto-rows: 30px;
  16. gap: 5px;
  17. }
  18. .box>div {
  19. border-radius: 50%;
  20. display: grid;
  21. place-items: center;
  22. background-color: red;
  23. color: white;
  24. box-shadow: 2px 2px 2px #666;
  25. }
  26. .box>div:last-of-type {
  27. background-color: blue;
  28. }
  29. </style>

js:

  1. function play(){
  2. // 临时数组: 放红球
  3. let arr = [];
  4. // 中奖数组,6个红球,1个蓝球
  5. let res = [];
  6. // 1. 生成1-33个红球
  7. for (let i = 1; i <= 33; i++) {
  8. arr.push(i);
  9. }
  10. // 2、在33个红球中随机不重复取出6个数
  11. for (let i = 0; i < 6; i++) {
  12. // 原理:取到一个,原数组就删掉对应的数
  13. let index = Math.floor(Math.random() * arr.length);
  14. res.push(arr[index]);
  15. arr.splice(index,1);
  16. }
  17. // 将取出的6个红球进行排序
  18. res.sort((a, b) => a - b);
  19. // 3、在1-16中随机取出一个蓝球
  20. let blue = Math.floor(Math.random() * 16) + 1;
  21. res.push(blue);
  22. // 4、显示双色球数组
  23. const box = document.querySelector('.box');
  24. res.forEach(item=>{
  25. const ball = document.createElement('div');
  26. ball.textContent = item;
  27. box.append(ball);
  28. });
  29. }
  30. </script>

选项卡

HTML:

  1. <div class="box">
  2. <!-- 1. 标签 -->
  3. <!-- 子元素上的点击事件会冒泡到父元素,利用这个特点,只需要给父元素添加点击事件就可以了 -->
  4. <ul class="menu" onclick="show()">
  5. <!-- 先给默认显示的标签和对应的内容添加 class="active"处于激活状态/可见 -->
  6. <!-- 使用自定义属性data-index使标签和与之对应的内容进行绑定 -->
  7. <li data-index="1" class="active">本省</li>
  8. <li data-index="2">全国</li>
  9. <li data-index="3">防疫</li>
  10. </ul>
  11. <!-- 2. 内容 -->
  12. <ul class="content active" data-index="1">
  13. <li><a href="">刚刚通报!2021安徽GDP预计破4万亿元!</a></li>
  14. <li><a href="">刚刚通报!2021安徽GDP预计破4万亿元!</a></li>
  15. <li><a href="">刚刚通报!2021安徽GDP预计破4万亿元!</a></li>
  16. <li><a href="">刚刚通报!2021安徽GDP预计破4万亿元!</a></li>
  17. <li><a href="">刚刚通报!2021安徽GDP预计破4万亿元!</a></li>
  18. </ul>
  19. <ul class="content" data-index="2">
  20. <li><a href="">总书记关心北京冬奥会,冬残奥会筹办纪实</a></li>
  21. <li><a href="">总书记关心北京冬奥会,冬残奥会筹办纪实</a></li>
  22. <li><a href="">总书记关心北京冬奥会,冬残奥会筹办纪实</a></li>
  23. <li><a href="">总书记关心北京冬奥会,冬残奥会筹办纪实</a></li>
  24. <li><a href="">总书记关心北京冬奥会,冬残奥会筹办纪实</a></li>
  25. </ul>
  26. <ul class="content" data-index="3">
  27. <li><a href="">坚持“动态清零”不动摇(人民论坛)</a></li>
  28. <li><a href="">坚持“动态清零”不动摇(人民论坛)</a></li>
  29. <li><a href="">坚持“动态清零”不动摇(人民论坛)</a></li>
  30. <li><a href="">坚持“动态清零”不动摇(人民论坛)</a></li>
  31. <li><a href="">坚持“动态清零”不动摇(人民论坛)</a></li>
  32. </ul>
  33. </div>

css

  1. <style>
  2. .box {
  3. width: 28em;
  4. display: grid;
  5. grid-template-columns: 3em 1fr;
  6. }
  7. .box ul {
  8. margin: 0;
  9. padding: 0;
  10. }
  11. .box li {
  12. list-style: none;
  13. }
  14. .box li a {
  15. text-decoration: none;
  16. }
  17. .box li:hover {
  18. cursor: pointer;
  19. }
  20. .box .content {
  21. background-color: rgb(131, 201, 191);
  22. display: none;
  23. place-self: center start;
  24. }
  25. .box .content.active {
  26. display: block;
  27. }
  28. .box .menu li.active {
  29. background-color: rgb(137, 180, 174);
  30. }
  31. </style>

JS:

  1. <script>
  2. function show() {
  3. // 绑定事件
  4. // console.log(event.currentTarget);
  5. // 事件主体
  6. // console.log(event.target);
  7. const ul = event.currentTarget;
  8. const li = event.target;
  9. // 1. 将原高亮的标签去掉active,并把当前的标签设置为active
  10. [...ul.children].forEach(li => li.classList.remove('active'));
  11. li.classList.add('active');
  12. // 2. 根据标签的data-index进行查询,获取与它对应的列表
  13. const content = document.querySelectorAll('.content');
  14. // document.querySelectorAll()
  15. console.log(content);
  16. content.forEach(li => li.classList.remove('active'));
  17. console.log([...content].filter(ul => ul.dataset.index === li.dataset.index)[0]);
  18. // filter(ul => ul.dataset.index === li.dataset.index)[0]
  19. [...content].find(ul => ul.dataset.index === li.dataset.index).classList.add('active');
  20. }
  21. </script>

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