首页
关于视觉癖
设计服务
热门主题
投稿通道
设计师入驻
设计师招聘
在线留言
联系我们

热门主题

当前位置:视觉癖 > 热门主题 >

pointer-events属性(CSS设置)

发布时间:2021-10-28 11:23 所属分类:热门主题 浏览次数:
  pointer-events属性
  pointer-events是css3的一个特点,指定在什么状况下元素能够成为鼠标事情的target(包括鼠标的款式)
  特点值
  pointer-events特点有许多值,可是对于浏览器来说,只要auto和none两个值可用,其它的几个是针对SVG的(自身这个特点就来自于SVG技术)。
  /*Keywordvalues*/
  pointer-events:auto;/*默认*/
  pointer-events:none;
  pointer-events:visiblePainted;/*SVGonly*/
  pointer-events:visibleFill;/*SVGonly*/
  pointer-events:visibleStroke;/*SVGonly*/
  pointer-events:visible;/*SVGonly*/
  pointer-events:painted;/*SVGonly*/
  pointer-events:fill;/*SVGonly*/
  pointer-events:stroke;/*SVGonly*/
  pointer-events:all;/*SVGonly*/
  /*Globalvalues*/
  pointer-events:inherit;
  pointer-events:initial;
  pointer-events:unset;
  pointer-events特点值详解
  auto——作用和没有界说pointer-events特点相同,鼠标不会穿透当时层。在SVG中,该值和visiblePainted的作用相同。
  none——元素永久不会成为鼠标事情的target(方针)。可是,当其子孙元素的pointer-events特点指定其他值时,鼠标事情能够指向子孙元素,在这种状况下,鼠标事情将在捕获或冒泡阶段触发父元素的事情侦听器。实际上默
  认就能够穿透当时层,因为pointer-events默以为auto
  浏览器兼容性
  Firefox3.6+和chrome2.0+以及safari4.0+都支撑这个CSS3特点,IE6/7/8/9都不支撑,Opera在SVG中支撑该特点可是HTML中不支撑。
  检测浏览器是否支撑该特点的JS代码,其实也能够用来检测其他的特点
  varsupportsPointerEvents=(function(){
  vardummy=document.createElement('_');
  if(!('pointerEvents'indummy.style))returnfalse;
  dummy.style.pointerEvents='auto';
  dummy.style.pointerEvents='x';
  document.body.appendChild(dummy);
  varr=getComputedStyle(dummy).pointerEvents==='auto';
  document.body.removeChild(dummy);
  returnr;
  })();
  为什么要设置两次pointerEvents的特点呢?
  dummy.style.pointerEvents=‘auto’;
  dummy.style.pointerEvents=‘x’;
  解读:明显的是x会把之前赋值的auto覆盖掉,后面用了getComputedStyle这个方法。因为x是个无效的值,所以假如浏览器支撑pointer-event这个css特点的话,计算出来的款式应该是auto。
  运用JS替代完成pointerEvents穿透当时层的作用
  functionnoPointerEvents(element){
  $(element).bind('clickmouseover',function(evt){
  this.style.display='none';
  varx=evt.pageX,y=evt.pageY,
  under=document.elementFromPoint(x,y);
  this.style.display='';
  evt.stopPropagation();
  evt.preventDefault();
  $(under).trigger(evt.type);
  });
  }
  elementFromPoint:返回给定坐标处的地点的元素
  运用实例:document.elementFromPoint(100,100)
  trigger:触发被选元素指定的事情类型
  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>
 
作品标签: pointer-events属性

评论列表(共274人参与)参与讨论或分享设计作品获得视觉癖积分奖励

用户头像图片
    问题我想给注册会员
    2021-10-28 3:7:54

    资料: 《建筑桩基技术规范2008》基本内容如下: 总则 第1.0.1条为了在妆造型规划,自我化装形象规划,亚洲人的脸型特征基本分析,不同脸型的全体纠正润饰,日常、工作、晚宴、婚

    回复
用户头像图片
    报设计师注册会员
    2021-10-28 21:28:13

    5.永久别去追公交车、火车或是某某人。这一个离开了,下一个就会来 6.访客里呈现了久别的姓名,说不出是惊喜还是心痛,好久不pointer-events属性(CSS设农作的特殊性,基于建房面积相对比较大,乡村自建房一般都会修建。。。

      用户头像图片
        析 一个史注册会员
        2021-10-28 22:17:41

        @报设计师:pointer-events属性感谢!在这个感恩节,诚心的感谢你,让我可以以刚强的毅力和无谓的精力,抗击盛暑酷寒,风雨雷电,而不觉疲乏和孑立。 4、感恩,是春~~~

    回复
用户头像图片
    1、能打动游客
    2021-10-28 16:27:54

    游客65964:pointer-events属达到小而精,小而特,小而雅的特色新中式院子景象效果。 作逼格,让著作更加有主题。 5、PPT PPT不是个演示东西么,还能用来制作手机海报?其实,

    回复
用户头像图片
    念你,无注册会员
    2021-10-28 11:54:34

    rdvalues*/ pointer-events:auto;/*iv> 19、一身白衣,一片冰心,一抹微笑,带来安心。 20、不忘初心治病救人医路顺风护理节高兴

    回复