pointer-events属性(CSS设置)

pointer-events属性pointer-events属性(CSS设置)pointer-events属性pointer-events是css3的一个特点,指定在什么状况下元素能够成为鼠标事情的target(包括鼠标

  pointer-events属性

指针事件是css3的一个特点,指定在什么状况下元素能够成为鼠标事情的目标(包括鼠标的款式)

特点值

指针事件特点有许多值,可是对于浏览器来说,只要汽车和没有人两个值可用,其它的几个是针对挽救(保存的简写)的(自身这个特点就来自于挽救(保存的简写)技术)。

/*关键字值*/

指针事件:汽车;/*默认*/

指针事件:无;

指针事件事件: visiblepainded/* SVGonly */

指针事件事件:visibleFill/*SVGonly*/

指针事件:可视行程;/*SVGonly*/

指针事件:可见;/*SVGonly*/

指针事件:绘制;/*SVGonly*/

指针事件:填充;/*SVGonly*/

指针事件:行程;/*SVGonly*/

指针事件:全部;/*SVGonly*/

/*全局值*/

指针事件事件:继承

指针事件事件:初始

指针事件:未设置;

指针事件特点值详解

auto——作用和没有界说指针事件特点相同,鼠标不会穿透当时层。在挽救(保存的简写)中,该值和可见绘画的作用相同。

none——元素永久不会成为鼠标事情的目标(方针)。可是,当其子孙元素的指针事件特点指定其他值时,鼠标事情能够指向子孙元素,在这种状况下,鼠标事情将在捕获或冒泡阶段触发父元素的事情侦听器。实际上默

认就能够穿透当时层,因为指针事件默以为汽车

浏览器兼容性

Firefox3.6和chrome2.0以及safari4.0都支撑这个CSS3特点,IE6/7/8/9都不支撑歌剧在挽救(保存的简写)中支撑该特点可是超文本标记语言中不支撑。

检测浏览器是否支撑该特点的射流研究…代码,其实也能够用来检测其他的特点

varsupportsPointerEvents=(function(){)

var dummy=文档。创建元素(' _ ');

if(!(“指针”包括。样式))返回假的;

笨蛋。风格。pointerevents=' auto

笨蛋。风格。pointerevents=' x

document.body.appendChild(虚拟);

varr=getComputedStyle(虚拟)。pointerEvents===" auto

document.body.removeChild(虚拟);

返回器;

})();

为什么要设置两次指示器的特点呢?

笨蛋。风格。pointerevents=' auto

笨蛋。风格。pointerevents=' x

解读:明显的是x会把之前赋值的汽车覆盖掉,后面用了getComputedStyle这个方法。因为x是个无效的值,所以假如浏览器支撑指针事件这个钢性铸铁特点的话,计算出来的款式应该是汽车。

运用射流研究…替代完成指示器穿透当时层的作用

函数指针事件(元素){ 0

$(元素)。绑定(“单击鼠标悬停”,函数(evt){ 0

这个。风格。显示='无';

varx=evt.pageX,y=evt.pageY,

under=文档。来自点(x,y)的元素;

这个。风格。display=

evt。stopperpagation();

evt。prevent default();

$(下)。触发器(evt。类型);

});

}

elementFromPoint:返回给定坐标处的地点的元素

运用实例:document.elementFromPoint(100,100)

触发器:触发被选元素指定的事情类型

event.type:返

回事情类型
  实例一
  事例一:穿透当时层
  在某个项目中,许多元素需要定位在一个地图层上面,这里就要用到许多绝对定位或许相对定位的元素,可是这样的话,这些浮在上面的div或许其它元素一般都会给个宽高,或许relative的元素能够不给宽高,这个时分,这些元素就会盖
  住下面的地图层,以至于地图层无法操作。。。
  然后正好在Googlemap见到了类似的问题,拿来当例子来说:
  Googlemap中左上角的操作区域占位是挺大的,如赤色框区域,然后在这个区域是无法操作地图层的。那么我们就能够给这个div设置pointer-events:none,然后你就会发现下面的地图就能够拖动和点击了。
  可是悲剧的是,操作区域自身却无法操作了,直接被无视掉了。不过不用担心,我们能够给里面的元素从头设置为pointer-events:auto,当然,只给需要操作的元素区域设置。
  貌似有点儿纠结,不过这样能够保证地图自身的可操作区域最大化。
  实例二:pointer-events能够禁用HTML元素的hover/focus/active等动态作用。
  事例一:禁用a标签事情作用
  在做tab切换的时分,当选中当时项,禁用当时标签的事情,只要切换其他tab的时分,才从头恳求新的数据。
  "tab">
  "tabactive">
  "tab">
  事例二:切换开/关按钮状态
  点击提交按钮的时分,为了避免用户一向点击按钮,发送恳求,当恳求未返回结果之前,给按钮添加pointer-events:none,能够避免这种状况,这种状况在业务中也十分常见。
  .j-pro{pointer-events:none;}
  "j-pro":flag}}>提交
  submit:function(){
  this.data.flag=true;
  this.$request(url,{
  //...onload:function(json){
  if(json.retCode==200){
  this.data.flag=false;
  }}.bind(this)
  //...
  });
  }
  事例三:避免通明元素和可点击元素重叠不能点击
  一些内容的展现区域,为了完成一些美观的css作用,当元素上方有其他元素遮盖,为了不影响下方元素的事情,给被遮盖的元素添加pointer-events:none;能够处理。
  .layer{backround:linear-gradient(180deg,#fff,transparent);}
  .j-pro{poninter-events:none;}
  "layerj-pro">
  "item">
  "item">
  "item">
pointer-events属性
  CSS设置
  标签(空格分隔):水平居中高度居中
  水平居中设置-行内元素
  水平居中
  如果被设置元素为文本、图片等行内元素时,水平居中是通过给父元素设置text-align:center来实现的。如下代码:
  html代码:
  <body>
  <divclass="txtCenter">我是文本,哈哈,我想要在父容器中水平居中显示。</div>
  </body>
  css代码:
  <style>
  div.txtCenter{
  text-align:center;
  }
  </style>
  水平居中设置-块状元素
  当被设置元素为块状元素时用text-align:center就不起作用了,这时也分两种情况:定宽块状元素和不定宽块状元素。
  定宽块状元素
  满足定宽和块状两个条件的元素是可以通过设置“左右margin”值为“auto”来实现居中的。设置div这个块状元素水平居中:
  html代码:
  <body>
  <div>我是定宽块状元素,哈哈,我要水平居中显示。</div>
  </body>
  css代码:
  <style>
  div{
  border:1pxsolidred;/*为了显示居中效果明显为div设置了边框*/
  width:500px;/*定宽*/
  margin:20pxauto;/*margin-left与margin-right设置为auto*/
  }
  </style>
  也可以写成:
  margin-left:auto;
  margin-right:auto;
  注意:
  元素的“上下margin”是可以随意设置的。
  水平居中总结-不定宽块状元素方法
  在实际工作中我们会遇到需要为“不定宽度的块状元素”设置居中,比如网页上的分页导航,因为分页的数量是不确定的,所以我们不能通过设置宽度来限制它的弹性。
  不定宽度的块状元素有三种方法居中(这三种方法目前使用的都比多):
  加入table标签
  1.第一步:为需要设置的居中的元素外面加入一个table标签(包括<tbody>、<tr>、<td>)。
  2.第二步:为这个table设置“左右margin居中”(这个和定宽块状元素的方法一样)。
  举例如下:
  html代码:
  <div>
  <table>
  <tbody>
  <tr><td>
  <ul>
  <li><ahref="#">1</a></li>
  <li><ahref="#">2</a></li>
  <li><ahref="#">3</a></li>
  </ul>
  </td></tr>
  </tbody>
  </table>
  </div>
  css代码:
  <style>
  table{
  margin:0auto;
  }
  ul{list-style:none;margin:0;padding:0;}
  li{float:left;display:inline;margin-right:8px;}
  </style>
  设置display:inline方法
  改变块级元素的display为inline类型,然后使用text-align:center来实现居中效果。如下例子:
  html代码:
  <body>
  <divclass="container">
  <ul>
  <li><ahref="#">1</a></li>
  <li><ahref="#">2</a></li>
  <li><ahref="#">3</a></li>
  </ul>
  </div>
  </body>
  css代码:
  <style>
  .container{
  text-align:center;
  }
  .containerul{
  list-style:none;
  margin:0;
  padding:0;
  display:inline;
  }
  .containerli{
  margin-right:8px;
  display:inline;
  }
  </style>
  注意
  这种方法相比第一种方法的优势是不用增加无语义标签,简化了标签的嵌套深度,但也存在着一些问题:它将块状元素的display类型改为inline,变成了行内元素,所以少了一些功能,比如设定长度值。
  设置position:relative和left:50%;
  通过给父元素设置float,然后给父元素设置position:relative和left:50%,子元素设置position:relative和left:-50%来实现水平居中。
  代码如下:
  <body>
  <divclass="container">
  <ul>
  <li><ahref="#">1</a></li>
  <li><ahref="#">2</a></li>
  <li><ahref="#">3</a></li>
  </ul>
  </div>
  </body>
  css代码:
  <style>
  .container{
  float:left;
  position:relative;
  left:50%
  }
  .containerul{
  list-style:none;
  margin:0;
  padding:0;
  position:relative;
  left:-50%;
  }
  .containerli{float:left;display:inline;margin-right:8px;}
  </style>
  这种方法可以保留块状元素仍以display:block的形式显示,优点不添加无语议表标签,不增加嵌套深度,但它的缺点是设置了position:relative,带来了一定的副作用。
  这三种方法使用得都非常广泛,各有优缺点,具体选用哪种方法,可以视具体情况而定。
  垂直居中
  父元素高度确定的单行文本
  父元素高度确定的单行文本的竖直居中的方法是通过设置父元素的height和line-height高度一致来实现的。如下代码:
  <divclass="container">
  hi,imooc!
  </div>
  css代码:
  <style>
  .container{
  height:100px;
  line-height:100px;
  background:#999;
  }
  </style>
  父元素高度确定的多行文本、图片、块状元素
  竖直居中的方法有两种:
  方法一:使用插入table(包括tbody、tr、td)标签,同时设置vertical-align:middle。
  说到竖直居中,css中有一个用于竖直居中的属性vertical-align,但这个样式只有在父元素为td或th时,才会生效。所以又要插入table标签了。下面看一下例子:
  html代码:
  <body>
  <table><tbody><tr><tdclass="wrap">
  <div>
  <p>看我是否可以居中。</p>
  <p>看我是否可以居中。</p>
  <p>看我是否可以居中。</p>
  <p>看我是否可以居中。</p>
  <p>看我是否可以居中。</p>
  </div>
  </td></tr></tbody></table>
  </body>
  css代码:
  tabletd{height:500px;background:#ccc}
  因为td标签默认情况下就默认设置了vertical-align为middle,所以我们不需要显式地设置了。
  方法二:在chrome、firefox及IE8以上的浏览器下可以设置块级元素的display为table-cell,激活vertical-align属性,但注意IE6、7并不支持这个样式。
  html代码:
  <divclass="container">
  <div>
  <p>看我是否可以居中。</p>
  <p>看我是否可以居中。</p>
  <p>看我是否可以居中。</p>
  <p>看我是否可以居中。</p>
  <p>看我是否可以居中。</p>
  </div>
  </div>
  css代码:
  <style>
  .container{
  height:300px;
  background:#ccc;
  display:table-cell;/*IE8以上及Chrome、Firefox*/
  vertical-align:middle;/*IE8以上及Chrome、Firefox*/
  }
  </style>
  这种方法的好处是不用添加多余的无意义的标签,但缺点也很明显,它的兼容性不是很好,不兼容IE6、7。
  隐性改变display类型
  有一个有趣的现象就是当为元素(不论之前是什么类型元素,display:none除外)设置以下2个句之一:
  position:absolute
  float:left或float:right
  元素会自动变为以display:inline-block的方式显示,当然就可以设置元素的width和height了且默认宽度不占满父元素。
  如下面的代码,我们知道a标签是行内元素,所以设置它的width是没有效果的,但是设置为position:absolute以后,就可以了。
  <divclass="container">
  <ahref="#"title="">进入课程请单击这里</a>
  </div>
  css代码
  <style>
  .containera{
  position:absolute;
  width:200px;
  background:#ccc;
  }
  </style>
 

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/53470.html

(0)