一.点击 右边滚动条跳转,模仿汽车品牌查找滚动条
主要知识点:
1.$(this).text() 查找当前的文本内容,用东西存起来
2.右边的scrollTop() 里面填写 根据左边text值在右边查找到对应的dom元素 然后再读取顶部的距离
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> <style> *{padding: 0;margin:0;} li{list-style: none;height: 40px; 180px;background-color: #76C825;border: 1px solid #5E606F;box-sizing: border-box; text-align: center;line-height: 40px; cursor: pointer} ul{float: left;background-color: #B7ACAC; 200px;height: 320px;box-sizing: border-box} .contentnext{ overflow: scroll; } .contentnext li,.contentnext p{ 100px; } .on{ background: orange; } </style> </head> <body> <ul class="contentprev"> <li>1a</li> <li>2a</li> <li>3a</li> <li>4a</li> <li>5a</li> <li>6a</li> <li>7a</li> <li>8a</li> </ul> <ul class="contentnext"> <li>1a</li> <div><p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p> <p>sss</p></div> <li>2a</li> <div><p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p> <p>sss</p></div> <li>3a</li> <div><p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p> <p>sss</p></div> <li>4a</li> <div><p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p> <p>sss</p></div> <li>5a</li> <div><p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p> <p>sss</p></div> <li>6a</li> <div><p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p> <p>sss</p></div> <li>7a</li> <div><p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p> <p>sss</p></div> <li>8a</li> <div><p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p><p>sss</p> <p>sss</p> <p>sss</p></div> </ul> <script> $(".contentprev li").click(function () { var texta=$(this).text(); $(this).addClass("on").siblings().removeClass("on"); $(".contentnext").animate({ scrollTop:$(".contentnext").find("li:contains('"+texta+"')").prop("offsetTop")},100 ) console.log($(".contentnext").find("li:contains('"+texta+"')").offset().top) console.log($(".contentnext").find("li:contains('"+texta+"')").prop("offsetTop")) }) </script> </body> </html>
二 选项卡切换
1.$(this).index() 这个可以查询当前的索引 i
$(".next li").eq($(this).index()).addClass("on") 找到需要改变class的 li 通过索引改变其样式
2.碰到结构不一致的
在next li 里面 给每个li分别增加index属性,index=0 按照我们理想的顺序。
$(".next li").filter("[index='"+i+"']").addClass("on");
var i=$(this).index();
在素有的li里面 查找 拥有的属性 和 我们当前的属性一致的 给添加样式.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="http://code.jquery.com/jquery-latest.js"></script> <style> *{margin:0;padding: 0;list-style: none;} .wrap{ 600px;height: 400px;border: 1px solid red;margin:100px auto;overflow: } .content{ float: left;box-sizing: border-box; 150px;height: 30px;background: #ACA9A9;border:1px solid #449556;text-align: center;line-height: 30px; } .con{ display: none; } .on{ display: block; } .flex{ 400px; height: 200px; background-color: red; display: flex; align-items: justify; } </style> </head> <body> <div class="flex"> <div>aaaa1</div> <div>aaaa2</div> <div>aaaa3</div> </div> <div class="wrap"> <ul class="contt"> <li class="content">内容提要01</li> <li class="content">内容提要02</li> <li class="content">内容提要03</li> <li class="content">内容提要04</li> </ul> <ul class="next"> <li class=" con on" index="0" >内容提要01</li> <li class="con" index="1">内容提要02</li> <li class="con" index="2">内容提要03</li> <li class="con" index="3">内容提要04</li> </ul> </div> <script> $(".contt li").mouseover(function () { // console.log($(this).index()) // $(".next li").removeClass("on") // $(".next li").eq($(this).index()).addClass("on") var i=$(this).index(); $(".next li").removeClass("on") $(".next li").filter("[index='"+i+"']").addClass("on") }) </script> </body> </html>