• 10 拖拽的对话框_滚动条_放大镜_


    前面复习 及 今天计划:

    三大系列:

    动画函数:

    动画函数需要 封装的函数  getStyleValue()  :

    今日内容:

    拖拽的对话框:

    阻止超链接跳转:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <a href="https://www.baidu.com" id = "href">百度</a>
     9     <script src="js/common.js"></script>
    10     <script>
    11         getId$("href").onclick = function () {
    12             alert("我去");
    13             return false; //这可以阻止超链接 跳转  !!!
    14         };
    15     </script>
    16 
    17 </body>
    18 </html>
    使用return false进行阻止!!!
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <a href="https://www.baidu.com" id = "href">百度</a>
     9     <script src="js/common.js"></script>
    10     <script>
    11         getId$("href").onclick = function (evt) {
    12             alert("我去");
    13             evt.preventDefault();  //这也可以阻止浏览器默认的事件
    14         };
    15     </script>
    16 
    17 </body>
    18 </html>
    使用evt.preventDefault() 阻止浏览器默认的事件。

    不过,后者有缺点,就是IE8,不认evt 要写兼容代码。 window.event  。

    SO,最好使用 return false!  ,IE8 也支持它!!!

      1 <!DOCTYPE html>
      2 <html lang="en">
      3     <head>
      4         <meta charset="UTF-8">
      5         <title>这是网页的标题</title>
      6         <style>
      7             ul, li, ol, dl, dt, dd, div, p, span, h1, h2, h3, h4, h5, h6, a {
      8                 margin: 0;
      9                 padding: 0;
     10             }
     11             .login-header{
     12                 width:100%;
     13                 height: 30px;
     14                 line-height: 30px; /*垂直居中*/
     15                 text-align: center; /*水平居中*/
     16 
     17                 font-size: 24px;
     18             }
     19             .login-main{
     20                 width: 512px;
     21                 height: 280px;
     22                 border: #ebebeb solid 1px;
     23                 position: absolute;  /*脱离文档流 */
     24                 left: 50%;
     25                 right: 50%;
     26                 margin-left: -256px;
     27 
     28                 margin-top: 140px;
     29 
     30                 background-color: #fff;
     31                 box-shadow: 0 0 20px #ddd;
     32 
     33                 z-index: 9999;
     34                 display: none;
     35             }
     36             .login-main-title{
     37                 width: 100%;
     38                 height: 40px;
     39                 text-align: center;
     40                 line-height: 40px;
     41                 font-size: 20px;
     42 
     43                 cursor: move;
     44 
     45                 user-select: none;
     46 
     47                 position: relative;
     48             }
     49             .input-box{
     50                 margin-top: 20px;
     51             }
     52 
     53             .login-button{
     54                 width: 50%;
     55                 height: 40px;
     56                 text-align: center;
     57                 line-height: 40px;
     58 
     59                 margin: 30px auto 0;
     60                 border: #ebebeb 1px solid;
     61 
     62                 font-size: 18px;
     63             }
     64             .login-bg{
     65                 width: 100%;
     66                 height: 100%;
     67 
     68                 position: fixed;
     69                 top: 0;
     70                 left: 0;
     71 
     72                 background: #000;
     73                 opacity: 0.3;
     74 
     75                 display: none;
     76             }
     77 
     78             a {
     79               text-decoration: none;
     80               color: #000;
     81             }
     82             .login-button a {
     83               display: block;
     84             }
     85 
     86             .input{
     87                 overflow: hidden;
     88                 margin: 0 0 20px;
     89             }
     90             .input .list-input{
     91                 float: left;
     92                 width: 350px;
     93                 height: 35px;
     94                 line-height: 35px;
     95                 border: #ebebeb 1px solid;
     96 
     97                 text-indent: 5px;
     98             }
     99             .input label{
    100                 float: left;
    101                 height: 35px;
    102                 width: 90px;
    103 
    104                 line-height: 35px;
    105                 text-align: right;
    106                 padding-right: 10px;
    107 
    108 
    109                 font-size: 14px;
    110             }
    111             .login-main-title span{
    112                 position: absolute;
    113                 width: 40px;
    114                 height: 40px;
    115                 border: #ebebeb solid 1px;
    116 
    117                 right: -20px;
    118                 top:-30px;
    119                 font-size: 12px;
    120                 background-color: #fff;
    121 
    122                 border-radius: 20px;
    123             }
    124 
    125 
    126         </style>
    127     </head>
    128     <body>
    129 
    130         <div class="login-header"><a href="javascript:void(0);" id="link">点击,弹出登录框</a> </div>
    131         <div class="login-main" id="login-main">
    132             <div class="login-main-title" id="login-main-title">登录会员界面<span><a id="close-btn" href="javascript:void(0);" >关闭</a></span></div>
    133             <div class="input-box">
    134                 <div class="input">
    135                     <label>用户名:</label>
    136                     <input type="text" placeholder="请输入用户名" name="info[username]" id="username" class="list-input" >
    137                 </div>
    138                 <div class="input">
    139                     <label>登录密码:</label>
    140                     <input type="text" placeholder="请输入密码" name="info[password]" id="password" class="list-input">
    141                 </div>
    142             </div>
    143             <div class="login-button"><a href="javascript:void(0);" id="login-button-submit">点我登录</a> </div>
    144         </div>
    145         <div class="login-bg"></div>  <!--遮挡层   -->
    146 
    147         <script src="js/common.js"></script>
    148         <script>
    149             //点击弹出登录框  弹出登录界面 , 点击 其他页面任意位置都可以关闭登录框
    150             getId$("link").onclick = function (evt) {
    151                 getId$("login-main").style.display = "block";
    152                 //阻止事件冒泡  兼容代码
    153                 if(evt){
    154                     evt.stopPropagation(); //谷歌火狐支持
    155                 }else{
    156                     window.event.cancelBubble = true; //IE8 支持
    157                 }
    158             };
    159             document.onclick =function () {
    160                 getId$("login-main").style.display = "none";
    161             };
    162         </script>
    163     </body>
    164 </html>
    点击弹出登录框 弹出登录界面 , 点击 其他页面任意位置都可以关闭登录框

    定位原理:

     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         img{
    12             position: absolute;
    13             width: 50px;
    14             height: 50px;
    15             border: 2px solid red;
    16             margin-left: 100px; /*如果加上 margin 就可以看到问题所在*/
    17         }
    18 
    19     </style>
    20 </head>
    21 <body>
    22     <img src="images/slidepic1.jpg" alt="" id="im">
    23     <script src="js/common.js"></script>
    24     <script>
    25         document.onmousemove = function (evt) {
    26             getId$("im").style.left = evt.clientX +"px";
    27             getId$("im").style.top = evt.clientY +"px";
    28         };
    29     </script>
    30 
    31 </body>
    32 </html>
    图片跟着鼠标飞新问题!!!

    所以,做这些的时候要注意margin-left 和 margin-top  的问题。

      1 <!DOCTYPE html>
      2 <html lang="en">
      3     <head>
      4         <meta charset="UTF-8">
      5         <title>这是网页的标题</title>
      6         <style>
      7             body{
      8                 width: 100%;
      9                 height: 2000px;
     10             }
     11             ul, li, ol, dl, dt, dd, div, p, span, h1, h2, h3, h4, h5, h6, a {
     12                 margin: 0;
     13                 padding: 0;
     14             }
     15             .login-header{
     16                 width:100%;
     17                 height: 30px;
     18                 line-height: 30px; /*垂直居中*/
     19                 text-align: center; /*水平居中*/
     20 
     21                 font-size: 24px;
     22             }
     23             .login-main{
     24                 width: 512px;
     25                 height: 280px;
     26                 border: #ebebeb solid 1px;
     27                 position: absolute;  /*脱离文档流 */
     28                 left: 50%;
     29                 right: 50%;
     30                 margin-left: -256px;
     31 
     32                 margin-top: 140px;
     33 
     34                 background-color: #fff;
     35                 box-shadow: 0 0 20px #ddd;
     36 
     37                 z-index: 9999;
     38                 display: none;
     39             }
     40             .login-main-title{
     41                 width: 100%;
     42                 height: 40px;
     43                 text-align: center;
     44                 line-height: 40px;
     45                 font-size: 20px;
     46 
     47                 cursor: move;
     48 
     49                 user-select: none;
     50 
     51                 position: relative;
     52             }
     53             .input-box{
     54                 margin-top: 20px;
     55             }
     56 
     57             .login-button{
     58                 width: 50%;
     59                 height: 40px;
     60                 text-align: center;
     61                 line-height: 40px;
     62 
     63                 margin: 30px auto 0;
     64                 border: #ebebeb 1px solid;
     65 
     66                 font-size: 18px;
     67             }
     68             .login-bg{
     69                 width: 100%;
     70                 height: 100%;
     71 
     72                 position: fixed;
     73                 top: 0;
     74                 left: 0;
     75 
     76                 background: #000;
     77                 opacity: 0.3;
     78 
     79                 display: none;
     80             }
     81 
     82             a {
     83               text-decoration: none;
     84               color: #000;
     85             }
     86             .login-button a {
     87               display: block;
     88             }
     89 
     90             .input{
     91                 overflow: hidden;
     92                 margin: 0 0 20px;
     93             }
     94             .input .list-input{
     95                 float: left;
     96                 width: 350px;
     97                 height: 35px;
     98                 line-height: 35px;
     99                 border: #ebebeb 1px solid;
    100 
    101                 text-indent: 5px;
    102             }
    103             .input label{
    104                 float: left;
    105                 height: 35px;
    106                 width: 90px;
    107 
    108                 line-height: 35px;
    109                 text-align: right;
    110                 padding-right: 10px;
    111 
    112 
    113                 font-size: 14px;
    114             }
    115             .login-main-title span{
    116                 position: absolute;
    117                 width: 40px;
    118                 height: 40px;
    119                 border: #ebebeb solid 1px;
    120 
    121                 right: -20px;
    122                 top:-30px;
    123                 font-size: 12px;
    124                 background-color: #fff;
    125 
    126                 border-radius: 20px;
    127             }
    128 
    129 
    130         </style>
    131     </head>
    132     <body>
    133 
    134         <div class="login-header"><a href="javascript:void(0);" id="link">点击,弹出登录框</a> </div>
    135         <div class="login-main" id="login-main">
    136             <div class="login-main-title" id="login-main-title">登录会员界面<span><a id="close-btn" href="javascript:void(0);" >关闭</a></span></div>
    137             <div class="input-box">
    138                 <div class="input">
    139                     <label>用户名:</label>
    140                     <input type="text" placeholder="请输入用户名" name="info[username]" id="username" class="list-input" >
    141                 </div>
    142                 <div class="input">
    143                     <label>登录密码:</label>
    144                     <input type="text" placeholder="请输入密码" name="info[password]" id="password" class="list-input">
    145                 </div>
    146             </div>
    147             <div class="login-button"><a href="javascript:void(0);" id="login-button-submit">点我登录</a> </div>
    148         </div>
    149         <div class="login-bg" id="login-bg"></div>  <!--遮挡层   -->
    150 
    151         <script src="js/common.js"></script>
    152         <script>
    153             //点击  弹出登录框  显示登录框和遮挡层
    154             getId$("link").onclick = function (evt) {
    155                 getId$("login-main").style.display = "block";
    156                 getId$("login-bg").style.display = "block";
    157             };
    158             //点击 关闭按钮   关闭 登录框和遮挡层
    159             getId$("close-btn").onclick = function () {
    160                 getId$("login-main").style.display = "none";
    161                 getId$("login-bg").style.display = "none";
    162             };
    163 
    164             // 按下 login-main-title
    165             getId$("login-main-title").onmousedown = function (evt) {
    166                 var const_x = evt.clientX - getId$("login-main").offsetLeft;
    167                 var const_y = evt.clientY - getId$("login-main").offsetTop;
    168                 document.onmousemove = function (evt) {
    169                     var newLeft = evt.clientX - const_x +256;
    170                     var newTop = evt.clientY - const_y -140;
    171                     getId$("login-main").style.left = newLeft +"px"; //256 和 140 是为了消除margin 的影响
    172                     getId$("login-main").style.top = newTop+"px";
    173                 };
    174             };
    175             //当鼠标 抬起的时候 将onmousemove 事件移除
    176             // getId$("login-main-title").onmouseup = function () {
    177             //     document.onmousemove = null;
    178             // };
    179             document.onmouseup = function () {
    180                 document.onmousemove = null;   // 清除该事件 !!!
    181             };
    182 
    183         </script>
    184     </body>
    185 </html>
    完整代码

    上述代码还有一个缺点就是,用户可以将 登录框 拖到可视区以外,一般是不允许这样的。下面将解决这一问题。

    放大镜案例:

    使得遮挡层不能脱出 指定的区域,也就是上面的解决方法。

      1 <!doctype html>
      2 <html lang="en">
      3     <head>
      4         <meta charset="UTF-8">
      5         <title>Document</title>
      6         <style>
      7             *{
      8                 margin: 0;
      9                 padding:0;
     10             }
     11             .box{
     12                 width: 350px;
     13                 height: 350px;
     14 
     15                 margin: 100px;
     16                 border: 1px solid #ccc; /* 1px #ccc*/
     17                 position: relative;
     18             }
     19             .big{
     20                 position: absolute;
     21                 top: 0;
     22                 left: 360px;
     23 
     24                 width: 400px;
     25                 height: 400px;
     26 
     27                 border:1px solid #ccc; /* 1px #ccc*/
     28                 overflow: hidden;
     29 
     30                 display: none;
     31             }
     32             .small{
     33                 position: relative;
     34             }
     35             .mask{
     36                 position: absolute;
     37                 top: 0;
     38                 left: 0;
     39 
     40                 width: 175px;
     41                 height: 175px;
     42 
     43                 cursor: move;
     44 
     45                 background: rgba(255,255,0,0.4);
     46                 display: none;
     47             }
     48 
     49 
     50         </style>
     51 
     52     </head>
     53     <body>
     54         <div class="box" id="box">
     55             <div class="small">
     56                 <img src="images/cat_big.jpg" width="350" alt="">
     57                 <div class="mask"></div> <!-- 遮挡层  -->
     58             </div>
     59             <div class="big">
     60                 <img src="images/cat_small.jpg" width="800" alt=""> <!-- 图片本身 宽度设置成800 -->
     61             </div>
     62         </div>
     63 
     64         <script src="js/common.js"></script>
     65         <script>
     66             /*获取所需要的元素*/
     67             var box = getId$("box");
     68             var small = box.children[0];
     69             var mask = small.children[1];
     70             var big = box.children[1];
     71 
     72             //鼠标进入 显示遮挡层 和大图 div
     73             box.onmouseenter = function () {
     74                 mask.style.display = "block";
     75                 big.style.display = "block";
     76             };
     77             //鼠标离开 隐藏遮挡层 和大图div
     78             box.onmouseleave = function () {
     79                 mask.style.display = "none";
     80                 big.style.display = "none";
     81             };
     82 
     83             //鼠标移动事件, 鼠标在小图上移动  。遮挡层跟着移动
     84             small.onmousemove = function (evt) {
     85                 var newLeft =  evt.clientX-100 - mask.offsetWidth/2;  //100 是消除margin 影响  mask.offsetWidth/2 是使其居中。
     86                 var newTop = evt.clientY-100 -mask.offsetHeight/2;
     87 
     88                 if(newLeft <0)
     89                     newLeft = 0;
     90                 else if(newLeft >small.offsetWidth - mask.offsetWidth)
     91                     newLeft = small.offsetWidth- mask.offsetWidth;
     92 
     93                 if(newTop <0)
     94                     newTop = 0;
     95                 else if(newTop > small.offsetHeight- mask.offsetHeight)
     96                     newTop = small.offsetHeight- mask.offsetHeight;
     97 
     98                 mask.style.left = newLeft +"px";
     99                 mask.style.top = newTop +"px";
    100 
    101                 console.log("newLeft "+newLeft+" newTop "+newTop);
    102             };
    103         </script>
    104     </body>
    105 </html>
    version 01

    分析大图移动的比例:

    遮挡层的移动距离 / 大图的移动距离 == 遮挡层的最大移动距离 / 大图的最大移动距离。 //主要求这个比例,然后求 大图的移动距离

      1 <!doctype html>
      2 <html lang="en">
      3     <head>
      4         <meta charset="UTF-8">
      5         <title>Document</title>
      6         <style>
      7             *{
      8                 margin: 0;
      9                 padding:0;
     10             }
     11             .box{
     12                 width: 350px;
     13                 height: 350px;
     14 
     15                 margin: 100px;
     16                 border: 1px solid #ccc; /* 1px #ccc*/
     17                 position: relative;
     18             }
     19             .big{
     20                 position: absolute;
     21                 top: 0;
     22                 left: 360px;
     23 
     24                 width: 400px;
     25                 height: 400px;
     26 
     27                 border:1px solid #ccc; /* 1px #ccc*/
     28                 overflow: hidden;
     29 
     30                 display: none;
     31             }
     32             .small{
     33                 position: relative;
     34             }
     35             .mask{
     36                 position: absolute;
     37                 top: 0;
     38                 left: 0;
     39 
     40                 width: 175px;
     41                 height: 175px;
     42 
     43                 cursor: move;
     44 
     45                 background: rgba(255,255,0,0.4);
     46                 display: none;
     47             }
     48 
     49 
     50         </style>
     51 
     52     </head>
     53     <body>
     54         <div class="box" id="box">
     55             <div class="small">
     56                 <img src="images/cat_big.jpg" width="350" alt="">
     57                 <div class="mask"></div> <!-- 遮挡层  -->
     58             </div>
     59             <div class="big">
     60                 <img src="images/cat_small.jpg" width="800" alt=""> <!-- 图片本身 宽度设置成800 -->
     61             </div>
     62         </div>
     63 
     64         <script src="js/common.js"></script>
     65         <script>
     66             /*获取所需要的元素*/
     67             var box = getId$("box");
     68             var small = box.children[0];
     69             var mask = small.children[1];
     70             var big = box.children[1];
     71             //大图
     72             var bigImg = big.children[0];
     73 
     74             //鼠标进入 显示遮挡层 和大图 div
     75             box.onmouseenter = function () {
     76                 mask.style.display = "block";
     77                 big.style.display = "block";
     78             };
     79             //鼠标离开 隐藏遮挡层 和大图div
     80             box.onmouseleave = function () {
     81                 mask.style.display = "none";
     82                 big.style.display = "none";
     83             };
     84 
     85             //鼠标移动事件, 鼠标在小图上移动  。遮挡层跟着移动
     86             small.onmousemove = function (evt) {
     87                 var newLeft =  evt.clientX -100 - mask.offsetWidth/2;  //100 是消除margin 影响  mask.offsetWidth/2 是使其居中。
     88                 var newTop = evt.clientY -100 -mask.offsetHeight/2;
     89 
     90                 if(newLeft <0)
     91                     newLeft = 0;
     92                 else if(newLeft >small.offsetWidth - mask.offsetWidth)
     93                     newLeft = small.offsetWidth- mask.offsetWidth;
     94 
     95                 if(newTop <0)
     96                     newTop = 0;
     97                 else if(newTop > small.offsetHeight- mask.offsetHeight)
     98                     newTop = small.offsetHeight- mask.offsetHeight;
     99 
    100                 mask.style.left = newLeft +"px";
    101                 mask.style.top = newTop +"px";
    102 
    103                 // console.log("newLeft "+newLeft+" newTop "+newTop);
    104 
    105                 //遮挡层的移动距离 / 大图的移动距离 == 遮挡层的最大移动距离 / 大图的最大移动距离。 //主要求这个比例,然后求 大图的移动距离
    106 
    107                 //大图的 横向的最大移动距离 。bigMaxX
    108                 var bigMaxX = bigImg.offsetWidth - big.offsetWidth;
    109 
    110                 //大图的纵向的最大移动距离  。bigMaxY
    111                 //var bigMaxY = bigImg.offsetHeight - big.offsetHeight;  有了比例就可以不要它了,
    112 
    113                 //后面是固定的比例 。
    114                 var bigImgNewMarginLeft = newLeft * bigMaxX /(small.offsetWidth - mask.offsetWidth);
    115                 var bigImgNewMarginTop = newTop *  bigMaxX /(small.offsetWidth - mask.offsetWidth);
    116 
    117                 //设置大图的MarginLeft 和 marginTop
    118                 bigImg.style.marginLeft = - bigImgNewMarginLeft +"px";
    119                 bigImg.style.marginTop = - bigImgNewMarginTop +"px";
    120             };
    121         </script>
    122     </body>
    123 </html>
    View Code

    滚动条案例:

     1 <!doctype html>
     2 <html lang="en">
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>Document</title>
     6         <style>
     7             div{
     8                 width:200px;
     9                 height: 500px;
    10                 border:1px solid red;
    11                 overflow: auto;
    12             }
    13         </style>
    14 
    15     </head>
    16     <body>
    17        <div>
    18            经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。
    19        </div>
    20         <script src="js/common.js"></script>
    21         <script>
    22 
    23         </script>
    24     </body>
    25 </html>
    系统的滚动条,它是不能改变的,形状样式都不能变。

    下面,我们自定义我们自己的滚动条,来DIY。

    滚动条长度的计算:

      

    移动滚动条的计算。     

    滚动条移动时候,文字跟着移动:

     1 <!doctype html>
     2 <html lang="en">
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>Document</title>
     6         <style>
     7             *{
     8                 margin: 0;
     9                 padding: 0;
    10             }
    11             .box{
    12                 width: 300px;
    13                 height: 500px;
    14                 border: 1px solid red;
    15                 margin: 100px;
    16                 overflow: hidden;
    17 
    18                 position: relative;
    19             }
    20             .content{
    21                 padding: 5px 18px 5px 5px;
    22                 position: absolute;
    23                 top: 0;
    24                 left: 0;
    25             }
    26             .scroll{
    27                 width: 18px;
    28                 height: 100%;
    29                 background-color: #ccc;
    30                 position: absolute;
    31                 top: 0;
    32                 right: 0;
    33             }
    34             .bar{
    35                 width: 100%;
    36                 height: 100px;
    37                 background-color: red;
    38                 position: absolute;
    39                 top: 0;
    40                 left: 0;
    41                 border-radius: 9px;
    42                 cursor: pointer;
    43             }
    44 
    45         </style>
    46     </head>
    47     <body>
    48         <div class="box" id="box">
    49             <div class="content" id="content">
    50                 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。 经停附加按扣水电费发动机爱上刻录机,今天天气个爱好。就罚款多少减肥京东数科。
    51                 嘿嘿
    52             </div>
    53             <div class="scroll" id="scroll">
    54                 <div class="bar" id="bar"></div>
    55             </div>
    56         </div>
    57         <script src="js/common.js"></script>
    58         <script>
    59             /*获取相应的元素  */
    60             var box = getId$("box");
    61             var content = getId$("content");
    62             var scroll = getId$("scroll");
    63             var bar = getId$("bar");
    64 
    65             //计算滚动条的 长度
    66             /*  滚动条bar的长度/ scroll 的长度 == box的长度 / content的长度  */
    67             var barHeight = box.offsetHeight /content.offsetHeight *scroll.offsetHeight ;
    68             bar.style.height = barHeight +"px";
    69 
    70             //移动滚动条
    71             //1 按下鼠标 2 移动 3 抬起
    72             bar.onmousedown = function (evt) {
    73                 var const_y = evt.clientY - bar.offsetTop;
    74                 document.onmousemove = function (evt) {
    75                     var newTop = evt.clientY - const_y;
    76                     newTop = newTop < 0 ? 0:newTop;
    77                     newTop = newTop > scroll.offsetHeight - bar.offsetHeight?scroll.offsetHeight - bar.offsetHeight:newTop;
    78                     bar.style.top = newTop +"px";
    79 
    80 
    81                     //滚动条移动 ,文字跟着移动
    82                     //滚动条移动/ 文字移动 == 滚动条最大移动距离 / 文字最大移动距离。
    83                     var contentMoveY = newTop*(content.offsetHeight-box.offsetHeight)/ (scroll.offsetHeight - bar.offsetHeight);
    84                     content.style.top = -contentMoveY +"px";
    85 
    86                     //最后,当鼠标移动的时候, 文字不被选中 (兼容代码 )
    87                     window.getSelection?window.getSelection().removeAllRanges():document.selection.empty();
    88                 }
    89             };
    90             document.onmouseup = function () {
    91                 document.onmousemove = null;
    92             }
    93         </script>
    94     </body>
    95 </html>
    完整代码

    补充(复习):

    元素隐藏的不同方式:

     1 <!doctype html>
     2 <html lang="en">
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>Document</title>
     6         <style>
     7             *{
     8                 margin: 0;
     9                 padding: 0;
    10             }
    11             div{
    12                 width: 300px;
    13                 height: 200px;
    14                 border:1px solid red;
    15             }
    16 
    17         </style>
    18     </head>
    19     <body>
    20         <input type="button" value="显示效果" id="btn">
    21         <div id="dv">哈哈哈</div>
    22 
    23         <script src="js/common.js"></script>
    24         <script>
    25             //点击按钮 隐藏 div
    26             document.getElementById("btn").onclick = function () {
    27                 getId$("dv").style.display = "none"; //不占位置  
    28             };
    29 
    30 
    31 
    32 
    33         </script>
    34     </body>
    35 </html>
    第一种隐藏方式
     1 <!doctype html>
     2 <html lang="en">
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>Document</title>
     6         <style>
     7             *{
     8                 margin: 0;
     9                 padding: 0;
    10             }
    11             div{
    12                 width: 300px;
    13                 height: 200px;
    14                 border:1px solid red;
    15                 visibility: visible;
    16             }
    17 
    18         </style>
    19     </head>
    20     <body>
    21         <input type="button" value="显示效果" id="btn">
    22         <div id="dv"></div>
    23         我去  
    24 
    25 
    26         <script src="js/common.js"></script>
    27         <script>
    28             //点击按钮 隐藏 div
    29             document.getElementById("btn").onclick = function () {
    30                 getId$("dv").style.visibility = "hidden"; //占位置
    31             };
    32 
    33 
    34 
    35 
    36         </script>
    37     </body>
    38 </html>
    第二种隐藏方式
     1 <!doctype html>
     2 <html lang="en">
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>Document</title>
     6         <style>
     7             *{
     8                 margin: 0;
     9                 padding: 0;
    10             }
    11             div{
    12                 width: 300px;
    13                 height: 200px;
    14                 border:1px solid red;
    15             }
    16 
    17         </style>
    18     </head>
    19     <body>
    20         <input type="button" value="显示效果" id="btn">
    21         <div id="dv"></div>
    22         我去
    23 
    24 
    25         <script src="js/common.js"></script>
    26         <script>
    27             //点击按钮 隐藏 div
    28             document.getElementById("btn").onclick = function () {
    29                 getId$("dv").style.opacity = 0; //占位置
    30             };
    31 
    32 
    33 
    34 
    35         </script>
    36     </body>
    37 </html>
    第三种隐藏方式
     1 <!doctype html>
     2 <html lang="en">
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>Document</title>
     6         <style>
     7             *{
     8                 margin: 0;
     9                 padding: 0;
    10             }
    11             div{
    12                 width: 300px;
    13                 height: 200px;
    14                 border:1px solid red;
    15             }
    16 
    17         </style>
    18     </head>
    19     <body>
    20         <input type="button" value="显示效果" id="btn">
    21         <div id="dv"></div>
    22         我去
    23 
    24 
    25         <script src="js/common.js"></script>
    26         <script>
    27             //点击按钮 隐藏 div
    28             document.getElementById("btn").onclick = function () {
    29                 getId$("dv").style.height = "0px"; //占位置
    30                 getId$("dv").style.border = "0px solid red"; //占位置
    31             };
    32 
    33 
    34 
    35 
    36         </script>
    37     </body>
    38 </html>
    第四种隐藏方式

    隔行变色:

      1 <!doctype html>
      2 <html lang="en">
      3     <head>
      4         <meta charset="UTF-8">
      5         <title>Document</title>
      6         <style>
      7             *{
      8                 margin: 0;
      9                 padding: 0;
     10             }
     11             .wrap{
     12                 width: 500px;
     13                 margin: 100px auto 0;
     14             }
     15             table{
     16                 width: 500px;
     17                 border:1px solid #c0c0c0;
     18                 border-spacing: 0;
     19                 border-collapse: collapse; /*相邻的 边框会 合并的!!!*/
     20                 cursor: pointer;
     21             }
     22             th,td{
     23                 border: 1px solid #d0d0d0;
     24                 padding: 10px;
     25                 color: #406060;
     26             }
     27             th{
     28                 background-color: #09c;
     29                 font: bold 18px "微软雅黑";
     30                 color: #fff;
     31             }
     32             td{
     33                 font: bold 14px "微软雅黑";
     34             }
     35             tbody tr{
     36                 background-color: cyan;
     37             }
     38 
     39 
     40         </style>
     41     </head>
     42     <body>
     43         <div class="wrap">
     44             <table>
     45                 <thead>
     46                     <tr>
     47                         <th>序号</th>
     48                         <th>姓名</th>
     49                         <th>学号</th>
     50                         <th>成绩</th>
     51                     </tr>
     52                 </thead>
     53                 <tbody id="t-body">
     54                     <tr>
     55                         <td>1</td>
     56                         <td>egon</td>
     57                         <td>17096218</td>
     58                         <td>100</td>
     59                     </tr>
     60                     <tr>
     61                         <td>2</td>
     62                         <td>alex</td>
     63                         <td>17099318</td>
     64                         <td>10</td>
     65                     </tr>
     66                     <tr>
     67                         <td>3</td>
     68                         <td>etnm</td>
     69                         <td>13536218</td>
     70                         <td>87</td>
     71                     </tr>
     72                     <tr>
     73                         <td>4</td>
     74                         <td>tom</td>
     75                         <td>17094238</td>
     76                         <td>18</td>
     77                     </tr>
     78                     <tr>
     79                         <td>5</td>
     80                         <td>jane</td>
     81                         <td>1732218</td>
     82                         <td>125</td>
     83                     </tr>
     84                 </tbody>
     85             </table>
     86         </div>
     87 
     88 
     89 
     90         <script src="js/common.js"></script>
     91         <script>
     92 
     93             //先获取所有的行
     94             var rows = getId$("t-body").getElementsByTagName("tr");
     95             //循环为每个行 注册鼠标进入和离开事件
     96             for (var i =0;i<rows.length;i++){
     97                 rows[i].style.backgroundColor = i%2 ==0?"red":"yellow";
     98                 rows[i].onmouseenter = mouseenterEvent;
     99                 rows[i].onmouseleave = mouseleaveEvent;
    100             }
    101             //当鼠标进入的时候,先将设置后的颜色保存起来,等鼠标离开后恢复
    102             var lastColor = "";
    103             function mouseenterEvent() {
    104                 lastColor = this.style.backgroundColor;
    105                 this.style.backgroundColor = "cyan";
    106             }
    107             function mouseleaveEvent(){
    108                 this.style.backgroundColor = lastColor;
    109             }
    110         </script>
    111     </body>
    112 </html>
    View Code

    tab切换效果:

     1 <!doctype html>
     2 <html lang="en">
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>Document</title>
     6         <style>
     7             #ulist li{
     8                 list-style-type: none;
     9 
    10                 width: 80px;
    11                 height: 30px;
    12 
    13                 float: left;
    14 
    15                 line-height: 30px;
    16                 text-align: center;
    17 
    18                 background-color: beige;
    19                 margin-left: 5px;
    20             }
    21             #ulist li.current{
    22                 background-color: burlywood;
    23             }
    24             #ulist li a{
    25                 text-decoration: none;
    26             }
    27         </style>
    28     </head>
    29     <body>
    30         <div class="menu">
    31             <ul id="ulist">
    32                 <li class="current"><a href="http://www.baidu.com">首页</a></li>
    33                 <li><a href="javascript:void(0);">设置</a></li>
    34                 <li><a href="javascript:void(0);">博客园</a></li>
    35                 <li><a href="javascript:void(0);">随笔</a></li>
    36                 <li><a href="javascript:void(0);">帮助</a></li>
    37                 <li><a href="javascript:void(0);">订阅</a></li>
    38             </ul>
    39         </div>
    40         <script src="js/common.js"></script>
    41         <script>
    42             //获取所有的li 标签
    43             var ulis = getId$("ulist").getElementsByTagName("li");
    44             //循环遍历每个li 为其注册点击事件
    45             for (var i =0;i<ulis.length;i++){
    46                 //获取当前li 中的a
    47                 var aObj = ulis[i].firstElementChild;
    48 
    49                 aObj.onclick = function () {
    50                     //首先 ,将所有的li  中的class 清除
    51                     for(var j = 0;j<ulis.length;j++){
    52                         ulis[j].removeAttribute("class");
    53                     }
    54                     //然后 给当前的li  设置class = "current"
    55                     this.parentNode.className  = "current";
    56                     return false;  //阻止超链接 跳转 。
    57                 }
    58             }
    59 
    60         </script>
    61     </body>
    62 </html>
    View Code

    大量字符串拼接:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>这是网页的标题</title>
     6         <style>
     7 
     8         </style>
     9     </head>
    10     <body>
    11         <input type="button" value="点我拼接下面的内容为字符串" id="btn"><br />
    12         <input type="text" value=""><br />
    13         <input type="text" value=""><br />
    14         <input type="text" value=""><br />
    15         <input type="text" value=""><br />
    16         <input type="text" value=""><br />
    17 
    18         <script src="js/common.js"></script>
    19         <script>
    20             //为按钮注册点击事件
    21             document.getElementById("btn").onclick = function () {
    22                 //获取所有的 输入框
    23                 var inputs = document.getElementsByTagName("input");
    24 
    25                 //加上 所有的 输入框 的 value属性值
    26                 var str = "";
    27                 for (var i =0;i<inputs.length -1 ;i++){
    28                     if(inputs[i].type == "text"){
    29                         str += inputs[i].value +"|";
    30                     }
    31                 }
    32                 //再加上最后一个
    33                 str += inputs[inputs.length -1 ].value;
    34                 console.log(str);
    35             };
    36           </script>
    37     </body>
    38 </html>
    字符串拼接!!!

    不过,这样的做法会消耗大量的空间。

     1 <!DOCTYPE html>
     2 <html lang="en">
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>这是网页的标题</title>
     6         <style>
     7 
     8         </style>
     9     </head>
    10     <body>
    11         <input type="button" value="点我拼接下面的内容为字符串" id="btn"><br />
    12         <input type="text" value=""><br />
    13         <input type="text" value=""><br />
    14         <input type="text" value=""><br />
    15         <input type="text" value=""><br />
    16         <input type="text" value=""><br />
    17 
    18         <script src="js/common.js"></script>
    19         <script>
    20             //为按钮注册点击事件
    21             document.getElementById("btn").onclick = function () {
    22                 //获取所有的 输入框
    23                 var inputs = document.getElementsByTagName("input");
    24 
    25                 //加上 所有的 输入框 的 value属性值
    26                 var str = [];
    27                 for (var i =0;i<inputs.length;i++){
    28                     if(inputs[i].type == "text"){
    29                         str.push(inputs[i].value);
    30                     }
    31                 }
    32                 //再加上最后一个
    33                 var myString = str.join("|");
    34                 console.log(myString);
    35             };
    36           </script>
    37     </body>
    38 </html>
    用数组来 放字符串!

    无刷新评论:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>这是网页的标题</title>
     6     </head>
     7     <body>
     8         <table id="myTable" border="1">
     9             <tbody id="myTbody">
    10                 <tr>
    11                     <td>猪猪:</td>
    12                     <td>我喜欢吃肉</td>
    13                 </tr>
    14             </tbody>
    15         </table>
    16         <div>
    17             昵称:<input type="text" value="" id="userName"><br />
    18             <textarea name="" id="textarea" cols="30" rows="10"></textarea><br />
    19             <input type="button" value="评论一下" id="btn"><br />
    20         </div>
    21 
    22         <script src="js/common.js"></script>
    23         <script>
    24             //获取按钮,注册点击事件
    25             document.getElementById("btn").onclick = function () {
    26                 //获取  新昵称
    27                 var username = getId$("userName");
    28                 //获取 评论 textarea
    29                 var textarea = getId$("textarea");
    30 
    31                 //创建行
    32                 var tr = document.createElement("tr");
    33                 //将行加到 tbody 中
    34                 getId$("myTbody").appendChild(tr);
    35 
    36                 //创建列
    37                 var td1 = document.createElement("td");
    38                 tr.appendChild(td1);
    39                 td1.innerHTML = username.value;
    40 
    41                 var td2 = document.createElement("td");
    42                 tr.appendChild(td2);
    43                 td2.innerHTML = textarea.value;
    44 
    45                 //清空username   textarea
    46                 username.value = "";
    47                 textarea.value = "";
    48             };
    49 
    50         </script>
    51     </body>
    52 </html>
    View Code
  • 相关阅读:
    css清除浮动
    对象遍历
    vue 小工具
    数据库优化-聚合索引
    mysql修改唯一索引
    输出带pre的调试信息
    mysql的group by优化跟limit优化
    地址联动数据抓取
    php7新特新
    linux同步系统时间
  • 原文地址:https://www.cnblogs.com/zach0812/p/11831718.html
Copyright © 2020-2023  润新知