04 响应式开发

# 1.响应式开发 #

## 1.1 响应式开发原理 ##

就是使用媒体查询针对不同宽度的设备进行布局和样式设置,从而适配不同设备的目的

    设备划分                    尺寸区间
    超小屏幕(手机)            < 768px
    小屏设备(平板)            >= 768px ~ < 992px
    中等屏幕(桌面显示器)        >= 992px ~ <1200px
    宽屏设备(大桌面显示器)         >= 1200px 

## 1.2响应式布局容器 ##

响应式需要一个父级做为布局容器,来配合子级元素来实现变化效果
原理就是在不同屏幕下,通过媒体查询来改变这个布局容器的大小,再改变里面子元素的排列方式和大小,从而实现不同屏幕下,看到不同的页面布局和样式变化

css

     

 <style>
        .container {
            height: 150px;
            background-color: pink;
            margin: 0 auto;
        }
        /* 1.超小屏幕(手机)< 768px  布局容器为100%*/
        
        @media screen and (max- 768) {
            .container {
                width: 100%;
            }
        }
        /* 2.小屏设备(平板)>= 768px ~ < 992px 布局容器为750*/
        
        @media screen and (min- 768px) {
            .container {
                width: 750px;
            }
        }
        /* 3.中等屏幕(桌面显示器)>= 992px ~ <1200px 布局容器改为970px*/
        @media screen and (min- 992px) {
            .container {
                width: 970px;
            }
        }
        /* 4.宽屏设备(大桌面显示器)>= 1200px 布局容器修改为  1170*/
        @media screen and (min- 1200px) {
            .container {
                width: 750px; 
            }
        }
    </style>



## 2.bootstrap前端开发框架 ##

基于HTML、css和javascript,简洁灵活,使web开发更加快捷

1、优点 

标准化的html + css 编码规范
提供一套简洁、直观、强悍的组件
有自己的生态圈、不断更新迭代
提高效率

## 2.1bootstrap使用 ##

只考虑样式库

控制权在框架本身,使用者按照框架所规定的某种规范进行开发

1.创建文件夹结构

2.创建html骨架结构

3.引入相关样式文件

4.书写内容

直接拿bootstrap预先定义好的样式来使用
修改bootstrap原先的样式,注重权重问题
学好的关键在于它定义了哪些样式跟实现效果        



    
    

 <head>
    <meta charset="utf-8">
    <!-- 要求当前网页使用IE浏览器最高版本内核渲染 -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!-- 视口的设置:视口宽度和设备一致,默认缩放比例和pc端一致,用户不能自行缩放 -->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>ss</title>

    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet">

    <!-- 解决ie 9以下浏览器对html5新增标签的不识别,导致css不起作用的问题 -->
    <!-- 解决ie 9以下浏览器对css3Media Query的不识别,导致css不起作用的问题 -->
    <!--[if lt IE 9]>
      <script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js">  </script>
      <script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
    </head>


## 2.3 bootstrap布局容器 ##

bootstrap需要为页面内容和栅格系统包裹一个.container容器
bootstrap预先定义好了这个类,叫.container 它提供了两个作用处的类

1、container类

- 响应式布局的容器,固定宽度

- 大屏(>=1200px) 宽度定为1170px 

- 中屏(>=992px) 宽度定为970px

- 小屏(>=768px) 宽度定为750px

- 超小屏幕(100%)

2、container-fluid类

- 流式布局容器百分百宽度

- 占据全部视口的容器 

- 适合于单独做移动端开发


## 2.4 bootstrap栅格系统##

也有人称呼为网格系统,指的是页面布局划分为等宽的列,然后通过列数的定义来模块化页面布局

bootstrap提供了一套响应式、移动设备有限的流式栅格系统,随着屏幕或视口viewport的尺寸增加,系统会自动分为最多12列

bootstrap里面的container宽度是固定的,但是不同屏幕下,container的宽度不同,再把container划分为12等份

## 2.5 bootstrap栅格选项参数##

栅格系统用于通过一系列的row 与 column的组合来创建页面布局,你的内容就可以放入这些创建好的布局中

                            超小屏幕(手机)< 768px        小屏设备(平板)> =768px    中等屏幕(桌面显示器)> =992px    宽屏设备(大桌面显示器)> =1200px
                                                                
    .container最大宽度        自动(100%)                750px                    970px                        1170px
    类前缀                    .col-xs-                .col-sm-                .col-md-                    .col-lg-
    列( column)数                                            12


- 按照不同屏幕划分为1~12等份

- 行( row)可以去除父容器作用15px的边距

- xs-extra small :超小; sm-small: 小; md-medium:中等 ; lg-large :大;

- 列( column)大于12 ,多余的"列( column )”所在的元素将被作为-个整体另起一行排列

- 每一列默认有左右15像素的padding

- 可以同时为一列指定多个设备的类名,以便划分不同份数例如class= "col-md-4 col-sm-6"


## 2.7 栅格系统列嵌套 ##

栅格系统内置的栅格系统将内容再次嵌套。简单理解就是列内再分成若干份小列

    

 <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <link rel="stylesheet" href="bootstarp/css/bootstrap.min.css">
        <style>
            .row>div {
                height: 50px;
                background-color: pink;
                /* margin会打乱布局 */
                /* margin: 0 10px; */
            }
        </style>
    </head>
    
    <body>
        <div class="container">
    
            <div class="row">
                <div class="col-md-4">
                    <!-- 列嵌套最好加一个行 row 这样可以取消父元素的padding 而且高度自动和父级一样高-->
                    <div class="row">
                        <div class="col-md-6">a</div>
                        <div class="col-md-6">b</div>
                    </div>
                </div>
                <div class="col-md-4">2</div>
                <div class="col-md-4">3</div>
            </div>
        </div>
    </body>
    
    </html>


## 2.8 列偏移 ##

使用.col-md-offset-* 类可以将列向右侧偏移。实际这些类是通过*选择器为当前元素增加了左侧的边距(magrin)

col-lg-offset-2

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <link rel="stylesheet" href="bootstarp/css/bootstrap.min.css">
        <style>
            .row div {
                height: 50px;
                background-color: pink;
            }
        </style>
    </head>
    
    <body>
        <div class="container">
            <div class="row">
                <div class="col-lg-4"></div>
                <div class="col-lg-4 col-lg-offset-4"></div>
            </div>
            <div class="row">
                <!-- 如果就一个盒子就偏移 = (12 — 8)/ 2 -->
                <div class="col-lg-8 col-lg-offset-2">中间盒子</div>
            </div>
        </div>
    </body>
    
    </html>




## 2.8 列排序 ##

 col-md-push-*
 col-md-pull-*

    <div class="container">
        <div class="row">
            <div class="col-md-4 col-md-push-8"></div>
            <div class="col-md-8 col-md-pull-4"></div>
        </div>
    </div>



## 2.9 响应式工具 ##

    类名            超小屏    小屏        中屏        大屏        
    .hidden-xs    隐藏        可见        可见        可见
    .hidden-sm    可见        隐藏        可见        可见
    .hidden-md    可观        可见        隐藏        可观
    .hidden-lg    可见        可见        可见        隐藏

与之相反的是visible-xs,visible-sm,visible-md,visible-lg 是显示某个页面内容 

原文地址:https://www.cnblogs.com/xujinglog/p/12874339.html