热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

简单的弹出拖拽窗口(二)

接上文简单的弹出拖拽窗口(一)下面开始具体分析代码部分:首先我们先确认下结构:悬浮窗口:初始不可见。包括标题栏和内容栏,标题栏内有标题和关闭按钮。遮罩层:初始不可见。用于设置弹出悬浮

接上文 简单的弹出拖拽窗口(一)

下面开始具体分析代码部分:

首先我们先确认下结构:

悬浮窗口:初始不可见。包括标题栏和内容栏,标题栏内有标题和关闭按钮。

遮罩层:初始不可见。用于设置弹出悬浮窗口时的半透明背景,

按钮:用于点击弹出悬浮窗口。

 

下面进行详细解释

1.要让窗口能自由移动,那么窗口的定位(position)应该采用绝对定位(absolute);   

/*登录浮层组件*/

 1  .popup{ 
 2     display:none;                                              /*初始隐藏*/
 3     width: 380px;
 4     height: auto;                                              /*高度自由,因为不确定,内容多少。*/
 5     border: 1px solid #D5D5D5;
 6     background: #fff;                                          /*窗口内容不透明,背景为白色*/    
 7     box-shadow: 0 0 3px rgba(0, 0, 0, 0.25);
 8     -moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.25);
 9     -webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.25);             /*内容窗口带阴影*/
10     border-radius: 8px;                                         /* 所有角都使用半径为8px的圆角,此属性为CSS3标准属性 */ 
11     -moz-border-radius: 8px;                                    /* Mozilla浏览器的私有属性 */ 
12     -webkit-border-radius:8px;                                  /* Webkit浏览器的私有属性 */ /*窗口圆角*/
13     position: absolute;
14     top: 100px;
15     left: 100px;                                               /*绝对定位*/
16     z-index: 9000;   
17     }

2.给窗口添加标题栏,同时将标题栏的鼠标光标设置为拖动(move)形状(在chrome中拖动的时候,光标会变成文字光标,松开鼠标键后恢复),这里需要对标题栏的左上角和右上角设置一下圆角。 

 /*标题栏区域*/

 1 .popup_title{
 2     height: 48px;
 3     line-height: 48px;                                          /*使垂直居中*/
 4     padding:0px 20px;                                           /*使距离左边有一定距离*/               
 5     background: #f5f5f5;                                        /*背景颜色*/
 6     border-bottom: 1px solid #efefef;                           /*底边框*/
 7     border-radius:8px 8px 0 0;                                  /* 左上角和右上角使用半径为5px的圆角,此属性为CSS3标准属性 */ 
 8     -moz-border-radius: 8px 8px 0 0;                            /* Mozilla浏览器的私有属性 */ 
 9     -webkit-border-radius:8px 8px 0 0;                          /* Webkit浏览器的私有属性 */ /*窗口圆角*/
10     color: #535353;
11     font-size: 16px;                                            /*字体颜色和字体大小*/
12     cursor: move;                                               /*可移动样式*/
13     -moz-user-select: none;                                     /* Firefox all */
14     -webkit-user-select: none;                                  /* Chrome all / Safari all /opera15+*/  
15     -ms-user-select: none;                                      /*IE10*/
16     -khtml-user-select: none;                                   /*早期浏览器*/
17     user-select:none;
18     -o-user-select: none;                                       /* 以上两个属性目前并未支持,写在这里为了减少风险 */    
19     }

这里有几个知识点需要理解:

1. css3(border-radius)边框圆角

border-radius 是一种缩写方法。另外其四个值是按照top-lefttop-rightbottom-rightbottom-left的顺序来设置的其主要会有下面几种情形出现:

  1. 只有一个值,那么 top-lefttop-rightbottom-rightbottom-left 四个值相等。
  2. 有两个值,那么 top-left 等于 bottom-right,并且取第一个值;top-right 等于 bottom-left,并且取第二个值
  3. 有三个值,其中第一个值是设置top-left;而第二个值是 top-right bottom-left 并且他们会相等,第三个值是设置 bottom-right
  4. 有四个值,其中第一个值是设置 top-left 而第二个值是 top-right 第三个值 bottom-right 第四个值是设置 bottom-left

支持的浏览器:

我的随笔-我的前端之路-博客园

 

如果还是不太明白的话,这里有两篇文章可以参考一下.一篇是阮一峰的CSS3圆角详解,另一篇是w3cplusCSS3的圆角Border-radius,如果你能读完并理解这两篇文章,那么基本上CSS3圆角Border-radius的知识你就掌握的差不多了。

2.  cursor: move

cursor 属性规定所显示的指针(光标)的类型。

属性值为move时,表示此光标所指的对象是可以移动的,通常为一个交叉箭头,如图。

我的随笔-我的前端之路-博客园

 

3.user-select用来控制内容的可选择性

auto——默认值,用户可以选中元素中的内容

none——用户不能选择元素中的任何内容

text——用户可以选择元素中的文本

element——文本可选,但仅限元素的边界内(只有IEFF支持)

需要注意的是:user-select并不是一个W3C的CSS标准属性,浏览器支持的不完整,需要对每种浏览器进行调整

user-select说明:

设置或检索是否允许用户选中文本。

(1)IE6-9不支持该属性,但支持使用标签属性 Onselectstart="return false;" 来达到 user-select:none 的效果;Safari和Chrome也支持该标签属性;

(2)直到Opera12.5仍然不支持该属性,但和IE6-9一样,也支持使用私有的标签属性 unselectable="on" 来达到 user-select:none 的效果;

(3)unselectable 的另一个值是 off;除Chrome和Safari外,在其它浏览器中,如果将文本设置为 -ms-user-select:none;,则用户将无法在该文本块中开始选择文本。

不过,如果用户在页面的其他区域开始选择文本,则用户仍然可以继续选择将文本设置为 -ms-user-select:none; 的区域文本.

分析以下代码(注意:此代码及此代码的分析结果来自w3help):

 1 DOCTYPE html>
 2 <html>
 3 <body>
 4         <div unselectable="on" style="background:#CCC;" >unselectable=on div>
 5         <br/>
 6         <div style="background:#CCC;-webkit-user-select:none;" >-webkit-user-select:none;div>
 7         <br/>
 8         <div style="background:#CCC;-moz-user-select:none;" >-moz-user-select:none;div>
 9         <br/>
10         <div style="background:#CCC;" onselectstart="return false;" >Onselectstart="return false;"div>
11 body>
12 html>        

在各浏览器中效果如下:

我的随笔-我的前端之路-博客园

注1:可以禁止内容选中。

注2:没有禁止内容选中。

可见,禁止内容选中的方法如下:

IE 给标签设置 unselectable= "on" ,设置标签方法 Onselectstart="return false;"

Firefox 给标签设置私有样式 -moz-user-select:none 。

Chrome Safari 给标签设置私有样式 -webkit-user-select:none ,设置标签方法 Onselectstart="return false;"。

Opera 给标签设置 unselectable= "on" 

解决方案

给标签设置样式 -moz-user-select:none ;-webkit-user-select:none 同时标签设置 unselectable= "on" ,保证各浏览器都可以禁止内容选中。

如案例中给悬浮差弹出窗的标题栏设置禁止选中样式,可以这样设置:

1 <div class="popup_title" id="popup_title" unselectable= "on" >
2     登录
3     <a href="Javascript:hidepopup();" class="popup_closebutton">a>
4 div>
1 .popup_title{
2     -moz-user-select: none;                                     /* Firefox all */
3     -webkit-user-select: none;                                  /* Chrome all / Safari all /opera15+*/  
4     -ms-user-select: none;                                      /*IE10*/
5     -khtml-user-select: none;                                   /*早期浏览器*/
6     user-select:none;
7     -o-user-select: none;                                       /* 以上两个属性目前并未支持,写在这里为了减少风险 */    
8 }

 注意:本文为原创,转载请以链接形式标明本文地址 ,谢谢合作。

本文地址:http://www.cnblogs.com/wanghuih/p/5576910.html


推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 如何压缩网站页面以减少页面加载时间
    本文介绍了影响网站打开时间的两个因素,即网页加载速度和网站页面大小。重点讲解了如何通过压缩网站页面来减少页面加载时间。具体包括图片压缩、Javascript压缩、CSS压缩和HTML压缩等方法,并推荐了相应的压缩工具。此外,还提到了一款Google Chrome插件——网页加载速度分析工具Speed Tracer。 ... [详细]
  • css元素可拖动,如何使用CSS禁止元素拖拽?
    一、用户行为三剑客以下3个CSS属性:user-select属性可以设置是否允许用户选择页面中的图文内容;user-modify属性可以设置是否允许输入 ... [详细]
  • this prototype 闭包 总结
    this对象整理下思路:一般用到this中的情景:1.构造方法中functionA(){this.nameyinshen;}varanewA() ... [详细]
  • pyecharts 介绍
    一、pyecharts介绍ECharts,一个使用JavaScript实现的开源可视化库,可以流畅的运行在PC和移动设备上,兼容当前绝大部 ... [详细]
  • JavaWeb介绍概念JavaWeb,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有javaapplet,不过使 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 在JavaScript中,函数没有重载的概念,如果声明了多个重名的函数,不管函数的形参个数是否一样,只有最后一个有效。如果调用函数时传入的参数个数与函数定义时的参数个数不符,会出现不同的情况。函数调用时,传入的参数个数少于函数定义时的参数个数,未传入的参数会被当做undefined处理,可能会导致错误。而传入的参数个数多于函数定义时的参数个数,多余的参数不会被使用,但不会报错。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • html结构 ... [详细]
author-avatar
mobiledu2502870747
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有