Rumah  >  Artikel  >  hujung hadapan web  >  响应式布局的开发教程实例

响应式布局的开发教程实例

小云云
小云云asal
2018-01-29 11:22:142236semak imbas

响应式布局可以为不同终端的用户提供更加舒适的界面和更好的用户体验,而且随着目前大屏幕移动设备的普及,用"大势所趋"来形容也不为过。随着越来越多的设计师采用这个技术,我们不仅看到很多的创新,还看到了一些成形的模式。

移动web前言

  1. 移动web : 移动端手机浏览器或者微信里面浏览的网页

  2. 移动APP : 手机上需要下载安装的应用程序

1. 移动web介绍

1.1 响应式开发 一套代码运行多个终端 优点:开发快 维护快 适配好  缺点加载速度慢

1.2 纯原生移动web开发 一套代码运行一个端 优点: 加载速度快 缺点开发慢  维护慢 适配差

1.3 应用场景 :

  1. 响应式开发用在一些新建的网站(PC和移动同时出来) 对加载速度要求不是很高

  2. 纯原生移动web开发 一般会用在一些已经有PC端上线的网站 再次开发移动端  移动端需要加载速度很快的网站

2. 响应式开发原理

2.1 CSS3的媒体查询: 通过查询屏幕的的宽度来指定某个宽度区间的网页布局

2.2 常见设备的屏幕宽度

  1. 超小屏幕(手机)    768px以下

  2. 小屏设备(平板)    768px-992px

  3. 中等屏幕(旧式电脑)   992px-1200px

  4. 大屏设备(现代电脑)   1200px以上

2.3 媒体查询的语法

    @media screen and (条件){
        //满足条件执行CSS代码
    }

    and的前后必须有空格  条件通常只有两个 min-width max-width

    @media (条件){
        //满足条件执行CSS代码
    }

    可以简写省略 screen and

2.4 媒体查询的写法的顺序和特性

2.4.1 条件判断有两种

min-width 屏幕宽度大于等于某个值生效 (最小宽度)

max-width 屏幕宽度小于等于某个值的时候生效 (最大宽度)

2.4.2 条件判断的参考值通常有以下4个

  width > 1200  大屏幕 大屏PC设备
  992 < width < 1200  中屏幕 老式电脑
  768 < width < 992  小屏幕 平板设备
  width < 768 超小屏幕 手机

2.4.3 媒体查询判断的顺序说明

1.如果使用min-width条件判断的时候 条件判断大小 要从小到大写

  /*min-width: 768px 当屏幕的宽度大于等于768时 背景颜色为green */
  @media screen and (min-width: 768px){
      body{
          background-color: green;
      }
  }

  /*min-width: 992px 当屏幕的宽度大于等于992时 背景颜色为blue*/
  @media screen and (min-width: 992px){
      body{
          background-color: blue;
      }
  }

  /*min-width: 1200px 当宽度大于等于1200时 背景颜色为pink*/
  @media screen and (min-width: 1200px){
      body{
          background-color: pink;
      }
  }

2.如果使用max-width条件判断到时候 条件判断大小 要从大到小写

  /*max-width: 1200px:宽度在1200以下*/
  @media screen and (max-width: 1200px) {
      body {
          background-color: green;
      }
  }

  /*max-width: 992px:宽度在992以下*/
  @media screen and (max-width: 992px) {
      body {
          background-color: blue;
      }
  }

  /*max-width: 768px:宽度在768以下*/
  @media screen and (max-width: 768px) {
      body {
          background-color: pink;
      }
  }

2.3.4 写法的特性有两个

  1. 向上兼容 只写了小的判断, 大的判断没有写, 但是在大屏幕下也会生效

  2. 向下覆盖 同时写了小的判断和大的判断, 满足大的条件会生效大的条件的样式, 大的条件写在后面会把小的条件的样式覆盖

2.3.5 使用媒体查询实现网页布局

  1. 在大屏幕下显示4列 中屏幕显示3列 小屏幕显示2列 超小屏幕显示1列

      /*w 768~992  每一行放置两个子元素  50%*/
      @media screen and (min-width: 768px){
          .box > p{
              width: 50%;
          }
      }
      /* w 992~1200 每一行放置三个子元素  33.33%*/
      @media screen and (min-width: 992px){
          .box > p{
              width: 33.33%;
          }
      }
      /*w >1200 每一行放置四个子元素 25%*/
      @media screen and (min-width: 1200px){
          .box > p{
              width: 25%;
          }
      }
  2. 原理就是通过媒体查询判断条件改变盒子的宽度

  3. 3. 响应式开发框架 Bootstrap介绍

    1. 特点:灵活简介,代码优雅,美观大方

    2. 好处:Bootstrap 让我们的Web开发更简单,更快捷

    3. 版本:目前市面上使用最多的是3.x.x版本 除此之外还有2.3.2对IE8支持 现已有4.0.0的正式版

    4. 相关链接: 中文官网 使用Bootstrap构建的网站

    4. 库和框架的区别

    1. jquery : 库 便捷的DOM (你想实现什么功能就调用什么方法)(主导者是你 你调用库)

    2. Bootstrap : 框架 界面工具集 框架是他来控制你 (框架制定好了一系列规则 用户按照规则进行编写)可以实现整个网站大多数功能

    3. 插件 : fullpage 功能比较单一 只是实现了网页里面的某个或几个功能

    5. Bootstrap的基本使用

    5.1 下载: 去Bootstrap官网中文官网 的起步里面下载生产环境的Bootstrap 解压之后把整个文件夹放到项目里面来 也可以使用BootstrapCDN

    5.2 引入Bootstrap

    1. 先引入Bootstrap的CSS(如果想要主题可以在引入带主题的CSS)

    2. 再引入自己的CSS

    3. 先引入jquery(因为Bootstrap依赖jquery)

    4. 再引入Bootstrap的JS

    5. 再引入自己的JS

    <!DOCTYPE html>
    <html lang="zh-CN">
      <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
        <title>Bootstrap 101 Template</title>
    
        <!-- Bootstrap -->
        <link href="lib/bootstrap/css/bootstrap.css" rel="stylesheet">
    
        <!-- html5 shiv是为了让低版本IE支持html5新标签  -->
        <!-- respond.js是为了让低版本IE支持CSS3媒体查询 -->
        <!-- 但是注意respond.js需要在服务器下运行 就是localhost 不能再file下运行不然无法工作 -->
        <!-- 条件注释 IE版本小于IE9 条件成立就执行下面的代码  如果条件不成立就是注释不执行 -->
        <!--[if lt IE 9]>
          <script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script>
          <script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
        <![endif]-->
      </head>
      <body>
      
        <!-- bootstrap的JS插件依赖jquery 所以要先引入jquery -->
        <script src="lib/jquery/jquery.min.js"></script>
        <!-- 在引入Bootstrap的JS文件 -->
        <script src="lib/bootstrap/js/bootstrap.min.js"></script>
      </body>
    </html>

    5.3 引包的顺序

    1. 先引入第三方的框架

    2. 再引入自己的文件

    3. CSS放到head里面引入(有些特殊的JS文件对页面渲染有作用的要放到head中)

    4. js放到body结束标签是上面引入

    5.4 视口

    1. 视口: 浏览器的可视窗口 在PC端是会受到浏览器窗口变化而变化

    2. 视口在PC端是可视窗口(会变的) 在移动端有一个固定的值 通常是默认980

    3. 但是默认移动端的时候980会造成网页的缩放或者出滚动条

    4. 解决移动端默认视口会造成网页缩放和滚动条 设置meta标签设置默认是视口的宽度等于设备的宽度

    5. 视口的其他属性 初始化缩放 initial-scale=1.0 是否允许用户缩放 user-scalable=no 最大 maximum-scale=1.0 和最小缩放  minimum-scale=1.0

    6. meta:vp+tab 凡是写移动端页面一来就是加上视口

    5.5 浏览器兼容模式

    1.

    1. http-equiv="X-UA-Compatible" 表示设置IE浏览器的兼容模式

    2. content="IE=edge" 表示让IE浏览器用最新的渲染引擎渲染页面

    6. Bootstrap文档

    6.1 基础CSS样式

    • 概要 (常用)

      • 布局容器

    • 栅格系统 (常用)

      • xs : 超小屏幕 手机 (<768px)

      • sm : 小屏幕 平板 (≥768px)

      • md : 中等屏幕 桌面显示器 (≥992px)

      • lg : 大屏幕 大桌面显示器 (≥1200px)

    • 预置排版样式

      • 统一预制标签样式

      • 文本对齐 (常用)

      • 改变大小写

    • 代码样式

      • 页面输出代码

    • 表格样式

      • 各种表格样式

    • 表单样式

      • 各种表单组合的样式

    • 按钮样式

      • 各种按钮颜色 和 按钮大小等样式 (常用)

    • 图片样式

      • 图片圆角的样式

    • 辅助工具类

      • 内容块居中 (常用)

      • 快速浮动 和 清除浮动 (常用)

      • 显示隐藏 (常用)

    • 响应式工具类 (常用)

      • hidden-xx : 在某种屏幕下隐藏

      • visible-xx : 在某种屏幕尺寸下显示

    • 基础CSS这块只是将我们常用想一些元素的样式做了美化,如果需要使用直接拿过来用就行了

    6.2 预制界面组件

    • 导航 (常用)

    • 导航条 (常用)

    • 面包屑导航

    • 下拉菜单 (常用)

    • 按钮式下拉菜单

    • 按钮组

    • 输入框组

    • 警告框

    • 页头

    • 分页

    • 列表组 (常用)

    • 面板 (常用)

    • 媒体对象 (常用)

    • 进度条

    • Glyphicons字体图标 (常用)

    • 标签

    • 徽章

    • 缩略图

    • 大屏幕

    • 嵌入内容

    • 内嵌

    • 将我们日常使用的一些功能块例如下拉菜单,提前写好,我们使用时直接找到对应的demo然后拿回来做相应调整就行了

    6.3 Javascript 插件

    • 模态对话框 (常用)

    • 下拉菜单 (常用)

    • 滚动监听 (常用)

    • 标签页 (常用)

    • 工具提示

    • 弹出框

    • 警告框

    • 按钮

    • 折叠面板 (常用)

    • 轮播图 (常用)

    • 吸顶效果 (常用)

      • data-spy="affix"

      • data-offset-top="什么位置出现"

      • data-offset-bottom="什么位置消失"

    6.4 Javascript插件依赖情况

    • jQuery

      Bootstrap 框架中的所有JS组件都依赖jquery实现

    7. 项目搭建

    7.1 搭建Bootstrap页面骨架及项目目录结构

    ├─ /project/ ··················· 项目所在目录
    └─┬─ /css/ ······················· 自己的CSS文件
      ├─ /font/ ······················ 使用到的字体文件
      ├─ /img/ ······················· 使用到的图片文件
      ├─ /js/ ························ 自己写的JS脚步
      ├─ /lib/ ······················· 从第三方下载回来的库【只用不改】
      ├─ /favicon.ico ················ 站点图标
      └─ /index.html ················· 入口文件

    7.1.1 约定编码规范

    1. HTML约定
    1. 在head中引入必要的CSS文件,优先引入第三方的CSS,方便我们自己的样式覆盖

    2. 在body末尾引入必要的JS文件,优先引入第三方的JS文件,注意JS文件之间的依赖关系

    比如Bootstrap.js 依赖jquery,那就应该先引入jquery.js 然后引用Bootstrap.js

    2. CSS约定
    1. 除了公共级别的样式,其余样式全部由模块前缀

    2. 尽量使用直接子代选择器 少用间接子代选择器避免误杀

    7.2 创建主页 引入相应的文件

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title></title>
      <link rel="stylesheet" href="lib/bootstrap/bootstrap.css">
      <link rel="stylesheet" href="index.css">
    </head>
    <body>
      <script src="lib/jquery/jquery.js"></script>
      <script src="lib/bootstrap/bootstrap.js"></script>
      <script src="index.js"></script>
    </body>
    </html>

    7.3 在我们默认样式表中讲默认字体设置为

    body{
      font-family: "Helvetica Neue", Helvetica, Microsoft Yahei, Hiragino Sans GB, WenQuanYi Micro Hei, sans-serif;
    }

    7.4 完成页面空结构

    先划分好页面的大容器,然后具体看每一个容器的单独情况
      <!--  头部区域 -->
      <header></header>
      <!-- /头部区域 -->
      <!--  广告轮播 -->
      <section></section>
      <!-- /广告轮播 -->
      <!--  立即预约 -->
      <section></section>
      <!-- /立即预约 -->
      <!--  产品介绍 -->
      <section></section>
      <!-- /产品介绍 -->
      <!--  新闻资讯 -->
      <section></section>
      <!-- /新闻资讯 -->
      <!--  合作伙伴 -->
      <section></section>
      <!-- /合作伙伴 -->
      <!-- 脚注区域 -->
      <footer></footer>
      <!-- /脚注区域 -->