• HTML中心在页面上弹出自定义表单层(实现可能拖累)


    使用DIV窗体来动态显示内容的原理:首先採用CSS和HTML隐藏弹窗中的内容,然后利用JavaScript(本教程中是JQuery)来动态显示它们。这样的效果不仅可以充分利用有限的版面空间,并且可以提高用户体验;更重要的是,它并不影响SEO效果(由于它实际存在于页面中。仅仅是初始为不可见状态)


    1、在html页面中定义一个div,并在div实现我们须要展示的内容。

      <body>
    	<div id="login">
    		<h2><img src="images/close.png" alt="" class="close" />站点登录</h2>
    		<form id="loginForm" >
    		<div class="info"></div>
    		<div class="user">帐 号:<input type="text" name="user" class="text" /></div>
    		<div class="pass">密 码:<input type="password" name="pass" class="text" /></div>
    		<div class="button"><input type="button" name="sub" class="submit" value="" /></div>
    		</form>
    		<div class="other">注冊新用户 | 忘记密码?</div>
    	</div>
      </body>

    一图抵千言。让我们看看这个DIV弹出窗体的效果截图:



    2、我所用的CSS样式

    #login {
    	350px;
    	height:250px;
    	border:1px solid #ccc;
    	position:absolute;
    	display:block;
    	z-index:9999;
    	background:#fff;
    }
    #login h2 {
    	height:40px;
    	line-height:40px;
    	text-align:center;
    	font-size:14px;
    	letter-spacing:1px;
    	color:#666;
    	background:url(images/login_header.png) repeat-x;
    	margin:0;
    	padding:0;
    	border-bottom:1px solid #ccc;
    	cursor:move;
    }
    #login h2 img {
    	float:right;
    	position:relative;
    	top:14px;
    	right:8px;
    	cursor:pointer;
    }
    #login div.info {
    	padding:10px 0 5px 0;
    	text-align:center;
    	color:maroon;
    }
    #login div.user, #login div.pass {
    	font-size:14px;
    	color:#666;
    	padding:5px 0;
    	text-align:center;
    }
    #login input.text {
    	200px;
    	height:25px;
    	border:1px solid #ccc;
    	background:#fff;
    	font-size:14px;
    }
    #login .button {
    	text-align:center;
    	padding:15px 0;
    }
    #login input.submit {
    	107px;
    	height:30px;
    	background:url(images/login_button.png) no-repeat;
    	border:none;
    	cursor:pointer;
    }
    #login .other {
    	text-align:right;
    	padding:15px 10px;
    	color:#666;
    }
    这里面主要注意的是关于div样式的定义,由于须要居中展示我们使用绝对定位position:absolute;其次由于是弹出层,div必须在最外围,所以通常把z-index设置的很大,这里我们设置为z-index:9999;另一点是关于div本身是隐藏的须要设置为display:none,但这里我们须要直接看效果所以直接让它展现使用display:block;


    3、我们须要让它居中展示。那么首先就必须获取浏览器的高度和宽度,假设有滚动栏的水平或者竖向偏移,还须要获取那个长度。通过计算获取div应该浏览器的位置。

    $(document).ready(function()
    {
    		jQuery.fn.extend({
    			center:function(width,height)
    			{
    				return $(this).css("left", ($(window).width()-width)/2+$(window).scrollLeft()).
    				css("top", ($(window).height()-height)/2+$(window).scrollTop()).
    				css("width",width).
    				css("height",height);
    			}
    		});
    
    });
    

    通过点击button让它展现

    	$(".login").click(function () 
    	{
    		$("#login").show().center(350,250);//展现登陆框
    	});

    效果图



    4、能对弹出框进行拖拽

    代码实现

    $(document).ready(function()
    {
    		jQuery.fn.extend({
    			//拖拽功能
    			drag:function(){
    				var $tar = $(this);
    				return $(this).mousedown(function(e){
    					if(e.target.tagName =="H2"){
    						var diffX = e.clientX - $tar.offset().left;
    						var diffY = e.clientY - $tar.offset().top;
    						$(document).mousemove(function(e){
    							var left = e.clientX - diffX;
    							var top = e.clientY - diffY;
    							if (left < 0){
    								left = 0;
    							}
    							else if (left <= $(window).scrollLeft()){
    								left = $(window).scrollLeft();
    							}
    							else if (left > $(window).width() +$(window).scrollLeft() - $tar.width()){
    								left = $(window).width() +$(window).scrollLeft() -$tar.width();
    							}
    							if (top < 0){
    								top = 0;
    							}
    							else if (top <= $(window).scrollTop()){
    								top = $(window).scrollTop();
    							}
    							else if (top > $(window).height() +$(window).scrollTop() - $tar.height()){
    								top = $(window).height() +$(window).scrollTop() - $tar.height();
    							}
    							$tar.css("left",left + 'px').css("top",top + 'px');
    						});
    					}
    					$(document).mouseup(function(){
    						$(this).unbind("mousemove");
    						$(this).unbind("mouseup")
    					});
    				});
    			}
    		});
    		
    });
    
    这里我们仅仅针对div内容中的H2元素可供点击拖拽。假设须要全局div可进行改动,拖拽原理:当鼠标在指定元素上的按下时。获取该鼠标点坐标,通过计算,把图片也移动到相相应的位置,一旦鼠标点击取消,相相应的按下事件也随之取消,页面精巧。

    调用拖拽方法

    $("#login").drag();

    如今我们能够点击弹出框的标题栏任意对其在浏览器中拖拽了。

    影响地址

    点击 登录 要么 注册

  • 相关阅读:
    《剑指offer》面试题7:旋转数组的最小数字
    eclipse ------ TODO、FIXME、XXX 等任务标记
    RT-Thread ------ waitqueue
    RT-Thread ------ 设备注册
    ubuntu 安装 glibc
    openwrt上面移植MQTT代码
    MH5000-31模组无法识别SIM卡
    "Hello osmdroid World"手机GPS轨迹数据
    地质数据下载
    绘图软件Surfer绘制等高线
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5049567.html
Copyright © 2020-2023  润新知