zoukankan      html  css  js  c++  java
  • CSS3 @media媒体查询【转】

    为什么要写自适应的页面(响应式页面)?

    众所周知,电脑、平板、手机的屏幕是差距很大的,假如在电脑上写好了一个页面,在电脑上看起来不错,但是如果放到手机上的话,那可能就会乱的一塌糊涂,这时候怎么解决呢?以前,可以再专门为手机定制一个页面,当用户访问的时候,判断设备是手机还是电脑,如果是手机就跳转到相应的手机页面,例如百度的就是,手机访问www.baidu.com就会跳转到m.baidu.com,这样做简直就是费力不讨好的活,所以聪明的程序员开发了一种自适应写法,即一次开发,处处显示! 这就是css3中@media媒体查询

    @media 媒体查询

    @media 媒体查询选择性加载css,意思是自动探测屏幕宽度,然后加载相应的CSS文件。可以针对不同的屏幕尺寸设置不同的样式,当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面,这对调试来说是一个极大的便利。

    语法:

    @media mediaType and|not|only (media feature) {
         /*CSS-Code;*/
    }
    

    媒体类型(mediaType )

    类型有很多,在这里不一一列出来了,只列出了常用的几个。

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

    媒体功能(media feature)

    媒体功能也有很多,以下列出常用的几个

    描述
    max-width 定义输出设备中的页面最大可见区域宽度
    min-width 定义输出设备中的页面最小可见区域宽度

    开始编写响应式页面

    1:设置Meta标签

    首先我们在使用 @media 的时候需要先设置下面这段代码,来兼容移动设备的展示效果:

    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    

    这段代码的几个参数解释:

    width = device-width:宽度等于当前设备的宽度
    initial-scale:初始的缩放比例(默认设置为1.0,即代表不缩放)
    user-scalable:用户是否可以手动缩放(默认设置为no,因为我们不希望用户放大缩小页面)

    2:加载兼容文件JS

    因为IE8既不支持HTML5也不支持CSS3 @media ,所以我们需要加载两个JS文件,来保证我们的代码实现兼容效果:

    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
      <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
    <![endif]-->
    

    3:设置IE渲染方式默认为最高(可选)

    现在有很多人的IE浏览器都升级到IE9以上了,所以这个时候就有又很多诡异的事情发生了,例如现在是IE9的浏览器,但是浏览器的文档模式却是IE8 为了防止这种情况,我们需要下面这段代码来让IE的文档渲染模式永远都是最新的

    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
    

    这段代码后面加了一个chrome=1,如果用户的电脑里安装了 chrome,就可以让电脑里面的IE不管是哪个版本的都可以使用Webkit引擎及V8引擎进行排版及运算,如果没有安装,就显示IE最新的渲染模式。

    代码实例

    1、如果文档宽度**小于等于 300px **则应用花括号内的样式——修改body的背景颜色(background-color):

    @media screen and (max- 300px) {
        body {
            background-color:lightblue;
        }
    }
    

    从上面的代码可以看出,媒体类型是屏幕(screen),使用 一个** and** 连接后面的媒体功能,这里写的是** max-300px** ,也就是说,当屏幕的最大宽度 小于等于 300px 的时候,就应用花括号里面的样式。

    2、当文档宽度大于等于300px 的时候显示的样式

    @media screen and (min- 300px){
        body {
            background-color:lightblue;
        }
    }
    

    注意,这里的媒体功能使用的是 min-width 而不是 max-width,我已经标红高亮显示出来了。

    3、当文档宽度大于等于 300px 并且小于等于500px ( width >=300 && width <=500)的时候显示的样式

    @media screen and (min-300px) and (max-500px) {
        /* CSS 代码 */
    }
    

    注意,这里使用了两个 and ,用来连接 两个媒体功能,一个用于限制最小,一个用于限制最大。

    ※ 需要注意的地方(划重点)

    1、通过灵活应用以上技巧,开发出一个响应式页面,还不是近在咫尺的感觉_(:з」∠)_

    2、不要被 min-width 和 max-width 所迷惑,初学者很容易误以为 min-width 的意思是小于xxx的时候才应用,然而这就陷入误区了,其实它的意思是:当设置了 min-width 的时候,文档的宽度如果小于设置的值,就不会应用这个区块里的CSS样式,所以 min-width 它才能实现大于等于设置的值得时候,才会应用区块里的CSS样式,max-width 也是如此。

    3、或者这样想想,先看代码,这句代码的意思是宽度大于等于 300px ,小于等于 500px ( width >=300 && width <=500)的时候应用样式

    @media screen and (min-300px) and (max-500px) {
        /* CSS 代码 */
    }
    

    min-300px 的作用是当文档宽度不小于 300px 的时候就应用 {} 里的CSS代码块,即大于等于 300px,max-500px 的作用是当文档宽度不大于 500px 的时候就应用{} 里的CSS代码块,即小于等于 500px 是不是这样想就容易明白了些呢?
     
    链接:http://www.fly63.com/article/detial/3122

  • 相关阅读:
    迭代器和生成器
    案例:复制大文件
    案例:使用seek倒查获取日志文件的最后一行
    Leetcode165. Compare Version Numbers比较版本号
    Leetcode137. Single Number II只出现一次的数字2
    Leetcode129. Sum Root to Leaf Numbers求根到叶子节点数字之和
    Leetcode116. Populating Next Right Pointers in Each Node填充同一层的兄弟节点
    Leetcode114. Flatten Binary Tree to Linked List二叉树展开为链表
    Leetcode113. Path Sum II路径总和2
    C++stl中vector的几种常用构造方法
  • 原文地址:https://www.cnblogs.com/KillBugMe/p/13232048.html
Copyright © 2011-2022 走看看