媒体查询时能连用俩个and嘛(两个and能连用吗)
css3中,媒体查询,screen and 和only screen and有什么不同
W3C文档这样描述的:The?keyword?‘only’?can?also?be?used?to?hide?style?sheets?from?older?user?agents.?User?agents?must?process?media?queries?starting?with?‘only’?as?if?the?‘only’?keyword?was?not?present.
翻译过来就是:only是为了在不支持媒体查询的浏览器中隐藏样式表,浏览器处理以only开头的关键词时将会忽略only。
@media?only?screen?and?(min-width:xxx)?and?(max-width:xxx)?与?@media?screen?and?(min-width:xxx)?and?(max-width:xxx)?在支持媒体查询的浏览器中其实是一模一样的,没有任何区别,因为only将被忽略。但是在不支持媒体查询的浏览器中由于没有only这个媒体类型,因此会直接忽略这条媒体查询。在不支持媒体查询的浏览器中,如果不加only,@media?screen?and?(min-width:xxx)?and?(max-width:xxx)将会被解析为@media?screen,明显与期望不一致。因此通过加一个浏览器不认识的媒体类型only则浏览器将会直接忽略这条媒体查询。
media="only?screen?and?(min-width:?401px)?and?(max-width:?600px)"
/*?在支持媒体查询的浏览器中等于*/
media="screen?and?(min-width:?401px)?and?(max-width:?600px)"
/*在不支持媒体查询的浏览器中解析到带only的媒体查询时,会将only视为媒体类型。(由于没有only这种媒体类型,因此将不会被应用)*/
media="only"
/*如果不带only,在不支持媒体查询的浏览器中*/
media="screen?and?(min-width:?401px)?and?(max-width:?600px)"
/*将被解析为screen,将会被应用到屏幕类型设备上*/
media="screen"
英语中能不能用and并列俩个定语来修饰名词?
没规定说不可以,但一般多定语直接连在一起即可,有and的一堆形容词做表语的更多。
比如
I love this cute little thing.
The thing is cute and nice.
css3媒体查询为什么不见max
一、在 head 链接CSS文件时提供判断语句,选择性加载不同的CSS文件
Html代码
link rel="stylesheet" href="middle.css" media="screen and (min-width: 400px)"
这句意味在满足 media 的判断语句 screen and (min-width: 400px) 即 屏幕并且最小宽度不小于400px 的介质上面使用 middle.css 。
二、在CSS文件中分段书写不同设备的代码
Html代码
/* CSS Code */
@media screen and (min-width: 600px) { /* CSS Code */ }
@media screen and (max-width: 599px) { /* CSS Code */ }
相信这个代码也很容易理解,写在 @media 语句段外的是共用代码,第一个 @media 语句段是 屏幕以及最小宽度600px ,第而个 @media 语句段是 屏幕以及最大宽度599px 。
如果不同的代码段有冲突或者重叠,会按照CSS原本的代码优先级排序,即后方代码替代前方代码,等等。
三、媒体介质类型
CSS3中提供了多种媒体介质类型,虽然常用的就俩……注意媒体类型名称区分大小写,并且尽管有些介质类型有重合,但是一个平台只会有一种介质类型。(我猜这个标准很多浏览器不会遵守吧?)
all – 全部媒体类型
braille – 盲文触摸装置
embossed – 分页盲文打印机 (W3C的无障碍做的真细心……)
handheld – 小屏幕和流量有限的手持设备(注意!安装标准来说移动设备都应该使用这个介质类型,但是实际上安卓根本不理会这个介质,请使用 screen 结合媒体查询语句使用)
print – 提供给打印机的样式,最常用的介质类型,打印页面时获得适合阅读的效果
projection – 投影,给投影机使用(有人用?)
screen – 彩色屏幕,最常用的介质类型,一般和屏幕大小表达式联合使用
speech – 语音朗诵,用于屏幕阅读软件(和将来的Siri?)
tty – 固定间距字符网格,例如功能机那样的
tv – 智能电视设备(唔不知道我家的创维酷开支持如何……)
四、媒体查询语句
除了媒体介质,我们还能通过 and 使用 Media Query 语句,达到对屏幕大小的判断生成响应式布局。(可以通过改变浏览器窗口大小在桌面下测试效果)
一个 Media Query 包含一种媒体类型,如果媒体类型没有指定,那么就是默认类型all,比如:
Html代码
media="(max-width: 600px)"
也可以使用 and 表示同时满足这两者时生效,达到限定范围:
Html代码
handheld and (min-width:20em) and (max-width:50em)
逗号 , 被用来表示 并列 和 或者 :
Html代码
handheld and (max-width:20em), screen and (max-width:30em)
not 用来排除符合表达式的设备:
Html代码
not screen and (color)
下面来解释一下遇到冲突时的机制:
Html代码
link rel="stylesheet" href="styleA.css" media="screen and (min-width: 800px)"
link rel="stylesheet" href="styleB.css" media="screen and (min-width: 600px) and (max-width: 800px)"
link rel="stylesheet" href="styleC.css" media="screen and (max-width: 600px)"
上面将设备分成3种,分别是宽度大于800px时,应用 styleA ,宽度在600px到800px之间时应用 styleB ,以及宽度小于600px时应用 styleC 。那假如宽度正好等于800px时该应用那个样式?是 styleB,因为前两条表达式都成立,按CSS默认优先级规则后者覆盖了前者。
因此,为了避免冲突,这个例子正常情况应该这样写:
Html代码
link rel="stylesheet" href="styleA.css" media="screen"
link rel="stylesheet" href="styleB.css" media="screen and (max-width: 800px)"
link rel="stylesheet" href="styleC.css" media="screen and (max-width: 600px)"
五、浏览器支持
媒体介质在CSS2中已经被添加,因此主流平台的浏览器毫无疑问都可以正确支持。但是 Media Query 语句是CSS3中添加的新功能,部分浏览器可能并不理解。例如IE能成功解读媒体介质,但是却无法解读 and 后面的媒体查询语句,就会连带媒体介质一起忽略。为了让不识别媒体查询语句的浏览器依然识别到媒体介质,可以使用 only 关键字进行hack。
Html代码
link rel="stylesheet" href="example.css" media="only screen and (color)"
添加了 only 关键字后,支持媒体查询语句的浏览器依然正常解析。但不支持媒体查询语句但正确读取媒体介质的设备,由于先读取到 only 而不是 screen ,将忽略这个样式。不支持媒体查询的IE不论是否有 only ,都直接忽略样式。
最后是浏览器支持情况:
IE8-
IE9+
Chrome 5+
Opera 10+
Firefox 3.6+
Safari 4+