• ❋JQuery的快速入门2 jq鼠标滚轮


    onmousewheelscript当鼠标滚轮正在被滚动时运行的脚本。

    主要是利用top与left进行上下移动和左右移动

    【使用获取的角度正值还是负值,判断是向上还是上下滚动】

    1. $(element).on("mousewheel", function(event){
    2. var de= event.originalEvent.deltaY; //需要取反
    3. })

    案例:城市介绍【照片与城市介绍一样的写法,就不写了】

    先用HTML和css做出样式

    1.   .box中横向分布left和right盒子
    2.   .left盒子中纵向分布多个li
    3.   .right盒子中纵向分布top和bottom盒子
    4.    填入城市名,城市介绍,城市图片

    1. 根据选择的城市,切换介绍

    先隐藏p标签和img标签,分别只留一个元素【区分class】

    获取所有的li【li数组】,获取所有的p标签【p数组】,获取所有的img标签【img数组】。

    点击li,获取该li的行号(index),循环p和img,隐藏所有的元素【切换class】

    利用行号将对应的元素切换展示

    1. var ps=$('.right p');
    2. $('.left').on('click','li',function(){
    3. inx=$(this).index();
    4. for(var i=0;ilength;i++){
    5. ps[i].className='pa';
    6. }
    7. ps[inx].className='para';
    8. })

    图片也是一样的

    2. 为城市名添加滚动样式【主要】

    添加滚动不难,但是它会超出已有范围,先获取这个可滚动的范围【父盒子 - 子盒子】

    在不超过这个范围内更改.left的top属性

    top为正,绿色盒子向下走

    top为负,绿色盒子向上走

    1. var pdiv=$('.box').height();
    2. var cdiv=$('.box>.left').height();
    3. var high=pdiv-cdiv; // -100

    top的更改是随着上次的距离一点一点增加或缩短的,-=或+=

    用现在的top和最大top值和最小top值进行比较

    获取当前top的大小,$(element).css('top')【获取的是字符串类型】

    将字符串转为数字,使用正则表达式获取px前的数字【返回数组】,在转换为Number类型进行比较

    当角度<0,向下走

            绿色盒子的top值>0就会让绿色盒子向下走,直到>=0这时会使绿色盒子的顶部远离红色盒子顶部,所以不在向下走。

    当角度>0,向上走

            绿色盒子的top<隐藏值时继续向上奏,直到>=隐藏值 这时会使绿色盒子的底部远离红色盒子底部,所以不在向上走。

    【de没有取反,所以if下内容写反】

    1. reg=/\d+|-\d+/
    2. $('.left').on("mousewheel", function(event){
    3. var de= event.originalEvent.deltaY;
    4. tp=$(this).css('top');
    5. var tpn=Number(tp.match(reg)[0]);
    6. if(de < 0){
    7. if(tpn < 0){
    8. $(this).css('top','+=10px');
    9. }else{
    10. $(this).css('top','0px');
    11. }
    12. }else{
    13. if(tpn >= high){// 距离顶部的距离 > 子盒子隐藏的距离
    14. $(this).css('top','-=10px');
    15. }else{
    16. $(this).css('top',high+'px');
    17. }
    18. }
    19. })

     总代码

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <script src="jquery-3.6.0.min.js">script>
    7. <title>Documenttitle>
    8. <style>
    9. *{
    10. padding: 0;
    11. margin: 0;
    12. list-style: none;
    13. }
    14. .box{
    15. position: relative;
    16. width: 400px;
    17. height: 200px;
    18. border: 1px solid black;
    19. margin: 0 auto;
    20. overflow: hidden;
    21. }
    22. .left{
    23. position: relative;
    24. top: 0px;
    25. width: 60px;
    26. }
    27. .left>li{
    28. height: 30px;
    29. line-height: 30px;
    30. border-top: 1px solid;
    31. border-top: 1px solid;
    32. border-color: green;
    33. }
    34. .right{
    35. width: 338px;
    36. border-left: 1px solid;
    37. position: relative;
    38. }
    39. .right>.top{
    40. background-color: antiquewhite;
    41. height: 70px;
    42. }
    43. .right>.bottom{
    44. width: 100%;
    45. height: 128px;
    46. position: relative;
    47. overflow: hidden;
    48. }
    49. .box>div{
    50. text-align: center;
    51. float: left;
    52. }
    53. p{
    54. position: relative;
    55. top: 0px;
    56. font-size: 15px;
    57. text-indent: 2em;
    58. text-align: left;
    59. }
    60. .pa{
    61. display: none;
    62. }
    63. style>
    64. head>
    65. <body>
    66. <script>
    67. $(function(){
    68. var pdiv=$('.box').height();
    69. var cdiv=$('.box>.left').height();
    70. var high=pdiv-cdiv; // -100
    71. reg=/\d+|-\d+/
    72. $('.left').on("mousewheel", function(event){
    73. var de= event.originalEvent.deltaY;
    74. tp=$(this).css('top');
    75. var tpn=Number(tp.match(reg)[0]);
    76. if(de < 0){//为负时远离顶部,top增加
    77. if(tpn < 0){
    78. $(this).css('top','+=10px');
    79. }else{
    80. $(this).css('top','0px');
    81. }
    82. }else{
    83. if(tpn >= high){// 距离顶部的距离 > 子盒子隐藏的距离时,可以继续向下
    84. $(this).css('top','-=10px');
    85. }else{
    86. $(this).css('top',high+'px');
    87. }
    88. }
    89. });
    90. var ps=$('.right p');
    91. $('.left').on('click','li',function(){
    92. inx=$(this).index();
    93. for(var i=0;ilength;i++){
    94. ps[i].className='pa';
    95. }
    96. ps[inx].className='para';
    97. })
    98. })
    99. script>
    100. <div class="box">
    101. <div class="left">
    102. <li>铜川市li>
    103. <li>宝鸡市li>
    104. <li>西安市li>
    105. <li>榆林市li>
    106. <li>汉中市li>
    107. <li>延安市li>
    108. <li>安康市li>
    109. <li>商洛市li>
    110. <li>渭南市li>
    111. <li>南阳市li>
    112. <li>郑州市li>
    113. <li>洛阳市li>
    114. <li>开封市li>
    115. <li>信阳市li>
    116. div>
    117. <div class="right">
    118. <div class="top">
    119. div>
    120. <div class="bottom">
    121. <p class="para">
    122. 铜川市,别称同官,陕西省辖地级市,地处西北地区东部、陕西中部、关中盆地和陕北高原的接交地带,属温带季风气候。全市总面积3882平方千米。截至2022年10月,铜川市辖3区1县。截至2022末,铜川市常住人口70.5万人。
    123. p>
    124. <p class="pa">
    125. 宝鸡市,古称陈仓、雍城、西虢、西岐、西府等,陕西省辖地级市,是关中平原城市群副中心城市、关天经济区副中心城市,全市常住人口326.47万人。
    126. p>
    127. <p class="pa">
    128. 西安市,古称长安、镐京,陕西省辖地级市,是陕西省省会、副省级市、特大城市、国家中心城市、西安都市圈以及关中平原城市群核心城市,国务院批复确定的中国西部地区重要的中心城市,国家重要的科研、教育和工业基地。截至2022年末,全市下辖11个区、2个县,总面积10108平方千米,常住人口为1299.59万人,城镇人口1034.34万人,城镇化率79.59%。
    129. p>
    130. <p class="pa">
    131. 榆林市,陕西省辖地级市,古称上郡,别称驼城、小北京、塞上明珠等,位于陕西省最北部,陕北地区和河套地区,黄土高原和毛乌素沙地交界处,是黄土高原与内蒙古高原的过渡区,系陕、甘、宁、蒙、晋五省区交界地,温带大陆性季风气候,总面积42920.2平方千米。截至2023年4月,榆林市下辖2个市辖区、9个县,代管1个县级市。市人民政府驻榆阳区。2022年末,榆林市常住人口361.61万人。
    132. p>
    133. <p class="pa">
    134. 汉中市,简称“汉”,陕西省辖地级市,位于陕西省西南部,北与宝鸡市、西安市毗连,东与安康市接壤,南与四川省的广元市、巴中市、达州市相连,西与甘肃省陇南市相邻,区域面积27246平方千米,地处内陆东亚季风气候区内,气候温和湿润,年平均气温约14.5℃。截至2022年10月,汉中市辖2个区、9个县,另有5个经济功能区。汉中市人民政府驻地汉台区。2022年末,汉中市户籍总人口378.98万人。
    135. p>
    136. <p class="pa">
    137. 延安市
    138. p>
    139. <p class="pa">安康市p>
    140. <p class="pa">商洛市p>
    141. <p class="pa">渭南市p>
    142. <p class="pa">南阳市p>
    143. <p class="pa">郑州市p>
    144. <p class="pa">洛阳市p>
    145. <p class="pa">开封市p>
    146. <p class="pa">信阳市p>
    147. div>
    148. div>
    149. div>
    150. body>
    151. html>

  • 相关阅读:
    电路的基本原理
    Vue3打包构建从webpack改为vite
    Aspose.Words使用教程之如何操作主题属性
    JDK 11统一日志管理
    CSS3DRenderer, CSS3DObject, OrthographicCamera API 结合使用案例
    苹果AR设备未来展望:硬件舒适性、软件功能与网络速度等多维度期待
    专业135总分400+西安交通大学信息与通信工程学院909/815考研经验分享
    【爬虫知识】比lxml和bs4都要好?解析器parsel的使用
    迅速上手:CentOS 系统下 SSH 服务配置指南
    任务提醒摆件HTTP服务器端功能解析
  • 原文地址:https://blog.csdn.net/m0_62836433/article/details/133689399