CSS小tips--@media和pointer-events

1. @media

@media可以针对不同的媒体类型定义不同的样式。

语法:@media mediatype and|not|only (media feature){

    css-Code;

}

mediatype即媒体类型的值有(过滤掉已经废弃的):

 

描述

all用于所有设备
print用于打印机和打印预览
screen用于电脑屏幕,平板电脑,智能手机等
speech应用于屏幕阅读器等发声设备

media feature即媒体功能的值,直接拿菜鸟教程的,有:

 

描述
aspect-ratio定义输出设备中的页面可见区域宽度与高度的比率
color定义输出设备每一组彩色原件的个数。如果不是彩色设备,则值等于0
color-index定义在输出设备的彩色查询表中的条目数。如果没有使用彩色查询表,则值等于0
device-aspect-ratio定义输出设备的屏幕可见宽度与高度的比率。
device-height定义输出设备的屏幕可见高度。
device-width定义输出设备的屏幕可见宽度。
grid用来查询输出设备是否使用栅格或点阵。
height定义输出设备中的页面可见区域高度。
max-aspect-ratio定义输出设备的屏幕可见宽度与高度的最大比率。
max-color定义输出设备每一组彩色原件的最大个数。
max-color-index定义在输出设备的彩色查询表中的最大条目数。
max-device-aspect-ratio定义输出设备的屏幕可见宽度与高度的最大比率。
max-device-height定义输出设备的屏幕可见的最大高度。
max-device-width定义输出设备的屏幕最大可见宽度。
max-height定义输出设备中的页面最大可见区域高度。
max-monochrome定义在一个单色框架缓冲区中每像素包含的最大单色原件个数。
max-resolution定义设备的最大分辨率。
max-width定义输出设备中的页面最大可见区域宽度。
min-aspect-ratio定义输出设备中的页面可见区域宽度与高度的最小比率。
min-color定义输出设备每一组彩色原件的最小个数。
min-color-index定义在输出设备的彩色查询表中的最小条目数。
min-device-aspect-ratio定义输出设备的屏幕可见宽度与高度的最小比率。
min-device-width定义输出设备的屏幕最小可见宽度。
min-device-height定义输出设备的屏幕的最小可见高度。
min-height定义输出设备中的页面最小可见区域高度。
min-monochrome定义在一个单色框架缓冲区中每像素包含的最小单色原件个数
min-resolution定义设备的最小分辨率。
min-width定义输出设备中的页面最小可见区域宽度。
monochrome定义在一个单色框架缓冲区中每像素包含的单色原件个数。如果不是单色设备,则值等于0
orientation定义输出设备中的页面可见区域高度是否大于或等于宽度。
resolution定义设备的分辨率。如:96dpi, 300dpi, 118dpcm
scan定义电视类设备的扫描工序。
width定义输出设备中的页面可见区域宽度。

今天看到一段有关代码

@media (orientation: landscape) {
    $mySize: 20vw;
    width: $mySize;
    height: $mySize;
    border: $mySize/5 solid $color_pink;    
  }:

第一个问题在于@media后面

没有mediatype即媒体类型,暂时不知道怎样,以后找到答案更新。

第二个(orientation: landscape) :

orientation:portrait | landscape

portrait:
指定输出设备中的页面可见区域高度大于或等于宽度
landscape:

除portrait值情况外,都是landscape,那么就指的是可见区域高度小于宽度,那么,场景就是横屏的时候了,恍然大悟。

 

2. pointer-events

pointer-events:auto | none | visiblepainted | visiblefill | visiblestroke | visible | painted | fill | stroke | all

pointer-events是CSS3的属性,IE至少要9才能支持,默认auto。

为元素设置pointer-events: none可以让元素以及子元素失去所有事件响应(click, mousemove......),如果为子元素设置pointer-events属性指定其他值,那么子元素可以捕获事件响应,并且在这种情况下,鼠标事件将在捕获或冒泡阶触发父元素的事件侦听器。

除了auto和none,其它值只能应用在SVG上。

有个例子:

<!DOCTYPE html>
<html>
<head>
<title>测试pointer-events</title>
</head>
<body>
<div class="father" οnclick="alert('father clicked')" style="pointer-events: none;">father
<div class="son" οnclick="alert('son clicked')" style="pointer-events: auto;">son </div>
</div>
</body>

</html>

当我们点击父元素时,不会alert,当我们点击子元素时,会先alert子元素,再alert父元素。

运用网上关于这个属性实用的总结:

    在许多网站上过节的时候页面最上层会用canvas绘制的雨、雪花,避免这些悬浮物遮挡住页面从而影响鼠标点击,可以使用pointer-events=none属性,让这些上方的canvas不会遮挡鼠标事件,让鼠标事件可以穿透上方的canvas来点击页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值