ASCII码 ASCII码

双色球选项卡实践

发布于:2022-04-12 10:30:55  栏目:技术文档

双色球部分

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>

相关推荐
阅读 +