zoukankan      html  css  js  c++  java
  • JavaScript总结之鼠标划过弹出div单击出现对话框

    为了满足他们的永无止境的要求,我可谓是任劳任怨啊,累断了双手,看瞎了双眼。这个是来写鼠标划过一个按钮,然后弹出一个小提示框解释,另外根据radio是否选中,判断点击后如何执行,然后执行之后再有一个确认或取消。其实部分想要的功能可以从中截取。

    js代码:

      1 <script type="text/javascript">
      2 function sAlert_jobdel(str){
      3    var msgw,msgh,bordercolor;
      4    msgw=400;//提示窗口的宽度
      5    msgh=150;//提示窗口的高度
      6    titleheight=25 //提示窗口标题高度
      7    bordercolor="#D3CFD0";//提示窗口的边框颜色
      8    titlecolor="#D3CFD0";//提示窗口的标题颜色
      9    
     10    var sWidth,sHeight;
     11    sWidth=document.body.offsetWidth;
     12    sHeight=screen.height;
     13 
     14    var bgObj=document.createElement("div");
     15    bgObj.setAttribute('id','bgDiv');
     16    bgObj.style.position="absolute";
     17    bgObj.style.top="0";
     18    bgObj.style.background="#777";
     19    bgObj.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";
     20    bgObj.style.opacity="0.6";
     21    bgObj.style.left="0";
     22    bgObj.style.width=sWidth + "px";
     23    bgObj.style.height=sHeight + "px";
     24    bgObj.style.zIndex = "10000";
     25    
     26    
     27    var msgObj=document.createElement("div")
     28    msgObj.setAttribute("id","msgDiv");
     29    msgObj.setAttribute("align","center");
     30    msgObj.style.background="white";
     31    msgObj.style.border="5px solid " + bordercolor;
     32    msgObj.style.position = "absolute";
     33    msgObj.style.left = "50%";
     34    msgObj.style.top = "50%";
     35    msgObj.style.font="12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif";
     36    msgObj.style.marginLeft = "-225px" ;
     37    msgObj.style.marginTop = -75+document.documentElement.scrollTop+"px";
     38    msgObj.style.width = msgw + "px";
     39    msgObj.style.height =msgh + "px";
     40    msgObj.style.textAlign = "center";
     41    msgObj.style.lineHeight ="25px";
     42    msgObj.style.zIndex = "10001";
     43             
     44     var btn1 = document.createElement("input");
     45     btn1.setAttribute("id","btnMks");
     46     btn1.setAttribute("value","确定");
     47     btn1.setAttribute("type","button");
     48     btn1.setAttribute("width","150px");
     49     btn1.setAttribute("height","20px");
     50     btn1.style.paddingTop="3px";
     51     btn1.style.paddingBottom="3px";
     52     btn1.style.paddingLeft="8px";
     53     btn1.style.paddingRight="8px";
     54     btn1.style.marginTop="40px";
     55     btn1.style.filter="progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100,             finishY=100,style=1,opacity=75,finishOpacity=100);";
     56      btn1.style.opacity="0.75";
     57      btn1.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif";
     58      btn1.style.cursor="pointer";
     59      btn1.onclick=function(){
     60           document.body.removeChild(bgObj);
     61           document.getElementById("msgDiv").removeChild(title);
     62           document.body.removeChild(msgObj);
     63           }
     64 
     65      var title=document.createElement("h4");
     66      title.setAttribute("id","msgTitle");
     67      title.setAttribute("align","right");
     68      title.style.margin="0";
     69      title.style.padding="3px";
     70      title.style.background=bordercolor;
     71      title.style.filter="progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);";
     72      title.style.opacity="0.75";
     73      title.style.border="1px solid " + bordercolor;
     74      title.style.height="18px";
     75      title.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif";
     76      title.style.color="white";
     77      title.style.cursor="pointer";
     78      title.innerHTML="关闭";
     79      title.onclick=function(){
     80           document.body.removeChild(bgObj);
     81           document.getElementById("msgDiv").removeChild(title);
     82           document.body.removeChild(msgObj);
     83           }
     84     var bool=false;
     85     for(i=0;i<document.getElementsByName("job_item").length;i++){
     86     if(document.getElementsByName("job_item").item(i).checked){
     87             bool=true;
     88        }}
     89     if(bool==false){
     90     document.body.appendChild(bgObj);
     91     document.body.appendChild(msgObj);
     92     document.getElementById("msgDiv").appendChild(title);
     93      var txt=document.createElement("p");
     94      txt.style.margin="1em 0"
     95      txt.setAttribute("id","msgTxt");
     96      txt.style.color="#000"
     97      txt.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif"
     98      txt.innerHTML=str;
     99      document.getElementById("msgDiv").appendChild(txt);
    100      document.getElementById("msgDiv").appendChild(btn1);
    101     }else{
    102         if(window.confirm('删除是不可恢复的,你确定要删除吗?')){
    103               /*alert("确定");*/
    104               return true;
    105            }else{
    106               /* alert("取消");*/
    107               return false;
    108            }
    109     
    110     }
    111 }
    112 
    113 </script>

    这段js代码实现了弹出提示框,还有再次确认框。

     1 <script type="text/javascript" src="jquery-1.11.1.min.js"></script> 
     2 <script type="text/javascript">
     3       $(function(){
     4             $("#popup_submit1").mouseover(function(){
     5             $('#overflow1').delay(400).show('fast');
     6             })
     7             $("#popup_submit1").mouseout(function(){
     8             $('#overflow1').hide('fast');
     9             })
    10             $("#popup_submit2").mouseover(function(){
    11             $('#overflow2').delay(400).show('fast');
    12             })
    13             $("#popup_submit2").mouseout(function(){
    14             $('#overflow2').hide('fast');
    15             })
    16         })
    17 </script>

    这段代码是鼠标划过显示下拉框。需要注意下的就是这里有一个延时。是为了避免鼠标无意划过多次,弹出多次。

    HTML代码:

     1 <form>
     2   <input type="radio" name="job_item" />
     3   作业1<br />
     4   <input type="radio" name="job_item"  />
     5   作业2<br />
     6   <input type="radio" name="job_item"  />
     7   作业3<br />
     8   <input type="radio" name="job_item"  />
     9   作业4<br />
    10   <br />
    11   <br />
    12   <br />
    13   <br />
    14   <span style="200px;">
    15   <input style="100px;" id="popup_submit1"  type="button" value="删除"  onclick="sAlert_jobdel('请在作业列表中选择一个作业');">
    16   <div  class="tip1" id="overflow1">
    17     <div class="arrow"></div>
    18     <div class="wrap">
    19       <div class="content">
    20         <p>选中一个作业后删除</p>
    21       </div>
    22     </div>
    23   </div>
    24   </span> <span style="margin-left:20px; 200px;">
    25   <input style="100px;" id="popup_submit2" type="reset" value="重置" >
    26   <div  class="tip1" id="overflow2">
    27     <div class="arrow"></div>
    28     <div class="wrap">
    29       <div class="content">
    30         <p>取消radio的选中状态</p>
    31       </div>
    32     </div>
    33   </div>
    34   </span>
    35 </form>

    将按钮放在一个form里,可以形成一个像组一样的东西,这样input一个type为reset的重置就可以将选中的radio去掉。

    CSS代码:

     1 <style type="text/css">
     2 .tip1 {
     3     position: absolute;
     4     z-index: 999;
     5     display: none;
     6     margin-top: 30px;
     7 }
     8 .tip1 > div.arrow {
     9     background: url(../assets/inline_help_arrow.png);
    10     position: absolute;
    11     width: 30px;
    12     height: 18px;
    13     background-repeat: no-repeat;
    14     right: 80px;
    15     top: 0;
    16 }
    17 .tip1 > .wrap {
    18     -moz-box-shadow: 2px 2px 10px rgba(0, 0, 10, 0.3), inset 0 1px 2px white;
    19     -o-box-shadow: 2px 2px 10px rgba(0, 0, 10, 0.3), inset 0 1px 2px white;
    20     -webkit-box-shadow: 2px 2px 10px rgba(0, 0, 10, 0.3), inset 0 1px 2px white;
    21     box-shadow: 2px 2px 10px rgba(0, 0, 10, 0.3), inset 0 1px 2px white;
    22     -moz-border-radius: 3px;
    23     /* Gecko */
    24     -webkit-border-radius: 3px;
    25     /* Webkit */
    26     -khtml-border-radius: 3px;
    27     /* Konqueror */
    28     border-radius: 3px;
    29     /* CSS3 */
    30     border: 1px solid #bbb;
    31     border-bottom-color: #aaa;
    32     border-right-color: #aaa;
    33     background: #fff;
    34     background-image: -moz-linear-gradient(#f8f8f8, #ededef);
    35     background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #f8f8f8), color-stop(1, #ededef));
    36     background-image: -webkit-linear-gradient(#f8f8f8, #ededef);
    37     background-image: -o-linear-gradient(#f8f8f8, #ededef);
    38     background-image: -ms-linear-gradient(top, #f8f8f8, #ededef);
    39     background-image: linear-gradient(top, #f8f8f8, #ededef);
    40      filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#ededef');
    41     -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#ededef')";
    42     padding: 5px 5px;
    43     width: 150px;
    44     color: #333;
    45     font-weight: normal;
    46     opacity: 0.7;
    47     filter: alpha(opacity=70);/* IE 透明度70%*/
    48     -moz-opacity: .7;/* Moz + FF 透明度70%*/
    49 }
    50 .tip1 > .wrap > .content {
    51     margin-top: 5px;
    52     padding: 0 10px 0 10px;
    53     background: #fff;
    54     border: 1px solid #cfcfcf;
    55     max-height: 400px;
    56     overflow-y: auto;
    57     -moz-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
    58     -o-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
    59     -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
    60     box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
    61 }
    62 .tip1 > .wrap .content p {
    63     color: #000;
    64 }
    65 .tip1 > .wrap h3 {
    66     text-align: center;
    67     padding-top: 10px;
    68     padding-left: 5px;
    69     margin: 0;
    70     color: #000;
    71     font-weight: 600;
    72     font-size: 14px;
    73 }
    74 .tip1 > .wrap h3:first-child {
    75     padding-top: 5px;
    76 }
    77 .tip1 > .wrap h4 {
    78     color: #fff;
    79     font-style: italic;
    80 }
    81 </style>

    将这些部分合到一个页面里面是可以完美运行起来的。

    有空来记录一下确实不错。发上来之前就发现了一出逻辑错误。我用for循环来检测每一个radio。但是也把画弹出框的语句放到循环里了,最后造成的效果是画了好几次。以后这习惯得好好保持啊。

    意见建议欢迎提出。

  • 相关阅读:
    Maidsafe-去中心化互联网白皮书
    The Top 20 Cybersecurity Startups To Watch In 2021 Based On Crunchbase
    Top 10 Blockchain Security and Smart Contract Audit Companies
    The 20 Best Cybersecurity Startups To Watch In 2020
    Blockchain In Cybersecurity: 11 Startups To Watch In 2019
    004-STM32+BC26丨260Y基本控制篇(阿里云物联网平台)-在阿里云物联网平台上一型一密动态注册设备(Android)
    涂鸦开发-单片机+涂鸦模组开发+OTA
    000-ESP32学习开发-ESP32烧录板使用说明
    03-STM32+Air724UG远程升级篇OTA(阿里云物联网平台)-STM32+Air724UG使用阿里云物联网平台OTA远程更新STM32程序
    03-STM32+Air724UG远程升级篇OTA(自建物联网平台)-STM32+Air724UG实现利用http/https远程更新STM32程序(TCP指令,单片机程序检查更新)
  • 原文地址:https://www.cnblogs.com/dk--/p/3900314.html
Copyright © 2011-2022 走看看