3-移动端Web

移动端Web

移动端

  1. 兼容移动端主流浏览器,处理Webkit内核浏览器即可.
  2. 我们现状开发的移动端主要针对手机端开发
  3. 现在移动端碎片化严重,分辨率和屏幕尺寸大小不一
  4. 学会用谷歌浏览器模拟手机界面及调试

视口 viewport

布局视口 layout viewpor
  • 早期用于解决pc端网页在手机上显示的问题
  • 但是移动端将pc端的视口分辨率设置为980px,相对手机屏幕看上去很小.
视觉视口 visual viewport
  • 用户用手机屏幕查看pc端原本网页大小只能显示一小块手机屏幕尺寸大的区域.
理想视口 ideal viewport
  • 为了使网站在移动端有最理想的阅读宽度设定的
  • 需要手动添加meta视口标签通知浏览器操作
  • meta视口标签用作让布局的视口和设备的宽度同步.
meta视口标签
<meta name="viewport" content="width=device-width, user-scalable=no,initial-scala=1.0, maximum=1.0, minimum-scale=1.0">
  • width 宽度是设置viewport的宽度 一般设置和设备宽度一样,还可以设置devic-width的特殊值.
  • initial-scale 初始缩放比例,大于0的数字
  • maximum-scale 最大缩放比例, 大于0的数字
  • minimum-scale 最小缩放比例, 大于0的数字
  • user-scalable 用户是否可以缩放 yes或no
物理像素和物理像素比
  • PC端页面 一个px等于一个物理像素,但是在不同的手机上显示出的px大小却不同,他们之间的比例称为物理像素比.
  • 开发的时候要注意不同的手机的开发尺寸
二倍图
  • 因为手机有个视网膜技术可以将更多的物理元素压缩,从而达到更高的分辨率,以提高显示的细腻程度.
  • 对于pc端的图片来说,在手机端打开PC端的图片会按照物理像素比放大倍数,从而造成图片模糊
  • 解决方案:在pc端将图片压缩2倍(手机端会放大的物理像素比),再在手机端上显示就不会变模糊了
css3 盒子模型 box-sizing
  • 传统盒子模型: 盒子宽度=宽高+border+padding
  • box-sizing:border-box; 盒子宽度=设置的宽高(里面包含了border和padding)
  1. 移动端可以全部使用css3盒子模型
  2. pc端需要兼容就用传统模式,不考虑兼容就选择css3盒子模型
移动端上的特殊样式
  • 移动端的链接自带点击高亮,我们需要清除
    • a {-webkit-tap-highlight-color:transparent;}
  • 移动端浏览器的按钮会有自带的样式也要去掉
    • input {-webkit-appearance:none;}
  • 禁用长安页面时的弹出菜单
    • img,a {-webkit-touch-callout:none;}

移动端页面项目准备

  • 流式布局/弹性布局

    1. 搭建相关文件夹结构css images upload

    2. 引入视口标签及css初始化样式

      <meta name="viewport" content="width=device-width, user-scalable=no,initial-scala=1.0, maximum=1.0, minimum-scale=1.0">
      
    3. body 常用初始化样式

      body {
        max-width: 540px;
        min-width: 320px;
        margin: 0 auto;
        font: normal 14px/1.5 Tahoma,"Lucida Grande",Verdana,"Microsoft Yahei",STXihei,hei;
        color: #000;
        background: #f2f2f2;
        overflow-x: hidden;
        -webkit-tap-highlight-color: transparent;
      }
      
  • rem适配布局

    1. 搭建相关文件夹结构css images upload (less文件放入css文件夹)

    2. 放入视口标签及css初始化样式

      <meta name="viewport" content="width=device-width, user-scalable=no,initial-scala=1.0, maximum=1.0, minimum-scale=1.0">
      
      <link rel="stylesheet" href="css/normalize.css">
      
    3. 设置公共common.less文件

      • 设置好最常见的屏幕尺寸,利用媒体查询设置不同的html字体大小,其他页面也需要.(数值从小到大写)
        • 常见的屏幕尺寸:320px、360px、375px、384px、400px、414px、424px、480px、540px、720px、750px
      • 因为pc端也可以打开,默认的html字体大小为50px;(写在最上面)
    4. 新建index.less文件

      • 写首页的样式
      • 将conmmon.less引入到index.less 语法:@import “common.less” ; (import可以把一个样式文件导入到另一个样式文件里面
    5. body 常用初始化样式

      • width写死:最大屏幕尺寸 / html字体大小 (单位用rem)
      body {
          min-width: 320px;
          width: 15rem;
          margin: 0 auto!important;
          // line-height: 1.5;
          height: 1000rem / @baseFont;
      }
      @import "common.less";
      
  • rem适配方案2 (flexible.js+rem)

    1. 搭建相关文件夹结构css images upload js

    2. 放入视口标签及css和js初始化样式

      <meta name="viewport" content="width=device-width, user-scalable=no,initial-scala=1.0, maximum=1.0, minimum-scale=1.0">
      <link rel="stylesheet" href="css/normalize.css">
      <script src="js/flexible.js"> </script>
      
    3. body常用初始化样式

      body {
          min-width: 320px;
          max-width: 750px;
          /* flexible 给我们划分了 10 等份 */
          width: 10rem;
          margin: 0 auto;
          line-height: 1.5;
          font-family: Arial, Helvetica;
          background: #f2f2f2;
      } 
      
      

移动端常见布局

流式布局(百分比布局)
  • 通过盒子的宽度设置百分比来根据屏幕的宽度进行伸缩,不受固定像素的限制,内容向两侧填充.
  • 但是无限伸缩会影响其他布局,所以最好设置一个最大和最小宽度
    • max-width:最大宽度 (max-height 最大高度)
    • min-width:最小宽度 (min-height 最小高度 )
flex弹性布局
  • 操作方便,布局简单,移动端应用广泛,PC端浏览器支持情况较差 IE11等低版本不支持
    • PC端还是建议传统布局
    • 不考虑兼容性问题,我们还是使用flex弹性布局
  • 当我们为父盒子设为flex布局后,子元素的float,clear和vertical-align属性将失效
  • 伸缩布局=弹性布局=伸缩盒布局=弹性盒布局=flex布局
  • 父盒子称为flex父容器,子元素称为flex项目
    • 子元素可以横向排列和纵向排列
display:flex; 给父盒子设置flex布局
  • flex-direction:row(行); 主轴排列方式 默认从左往右
    • row-reverse(翻转); 从右到左
    • column(列); 从上到下
    • column-reverse; 从下到上
    • flex-direction:row设置的为主轴 另一个为侧轴
  • justify-content 设置主轴上子元素的排列方式
    • flex-start 从头到尾(默认)
    • flex-end 从尾部开始排列
    • center 主轴居中对齐
    • space-around 平分剩余空隙空间(相当于剩余空间平分给每个子元素一个margin值)
    • space-between 第一和最后一个子元素贴边,再平分剩余空间
  • flex-wrap 设置子元素是否换行 如果装不开会缩小子元素,还是放已在一行
    • nowrap; 不换行(默认)
    • warp; 换行
  • align-items 设置侧轴上子元素的排列方式(单行)
    • flex-start 主轴初始位置
    • flex-end 主轴另一侧尾部
    • center 侧轴挤在一起居中
    • stretch 拉伸 (默认值)
  • alingn-content 设置侧轴上子元素的排列方式(多行)
    • flex-start 主轴初始位置
    • flex-end 主轴另一侧尾部
    • center 侧轴挤在一起居中
    • stretch 设置子元素高度平分父元素高度
    • space-around 子项在侧轴平分剩余空间
    • space-between 子项在侧抽先分布在两头,再平分剩余空间
  • flex-flow:row wrap; 主轴方向和是否换行(换列) 简写
    • flex-direction 和flex-warp连写
flex布局子元素常见属性
  • flex:1; 子元素占的份数(比例)
    • 值取正整数,定义子元素分配剩余空间
    • 还可以取百分比! 相当于父级来说
  • align-self 控制某一个子项在侧轴的排列方式
    • 值 同align-items一样
  • order: -1; 控制某一个子项的排列顺序
    • 数值越小,排列越靠前,默认为0
rem适配布局
  • 通过修改html的font-size 来调整页面元素中的大小.

  • rem(root em) 是相对单位, 基准是相对于html元素的字体大小.

    • 根元素(html) 设置font-size=12px;非根元素设置width:2rem; 相当于24px; (12x2)
    • em则是相对于父元素的字体大小来表示子元素的px值.
  • 媒体查询 (设置屏幕不同尺寸时发生的变化)

    • @media screen and (min-width:320px) and (max-width:640px) {选择器{属性:值;} }
      • 查询类型: screen 用于电脑屏幕 手机等 all 用于所有设备 print 用于打印机和打印预览
      • 关键字: and 将多个多媒体特性连在一起 not 排除某个多媒体类型(可以省略) noly 指定某个多媒体类型(可以省略)
      • 媒体特性: width可见区域宽度 min-width 最小可见宽 max-width 最大可见宽
  • 引入资源 (了解)

    • 当样式比较复杂时,我们可以针对不同的媒体使用不同的stylesheet样式表.
    • 原理是通过link判断设备的尺寸,然后引用不同的css文件
  • Less(css扩展语言,css预处理器)

    1. 在css基础上 引入了变量,运算及函数等功能.
    2. 常见css预处理器 Sass Less Stylus
    3. 创建 .less文件转换为 .css文件引入html才能使用(运用插件)
    • Less变量 @变量名:值;
      • 让属性值=@变量名即可生效, color=@red;
      • 必须有@前缀 , 不能包含特殊字符 , 不能以数字开头 , 区分大小写
    • Less 编译
      • vocode Less 插件 里的 Easy Less插件用来把less文件编译为css文件
      • 保存了less文件就会自动生成css文件,非常好用!
    • Less 嵌套
      • 子元素的样式直接写到父元素里即可
      • 如果有伪类 交集 伪元素 选择器 我们的内层选择器的前面需要加&号(例: &:hover)
    • Less 运算
      • 任何数字.颜色 变量都可以加减乘除运算 (+) (-) (*) (/) 左右必须以空格隔开
      • width:200px - 50; 只有一个值有单位,结果取该单位
      • width80rem /50px; 两个值有不同单位,结果取第一个值的单位
      • width(200px + 50px) * 2 ; 先加减再乘除,可以用小括号包起来
  • rem+媒体查询+Less=rem布局(适配布局) 等比例缩放!

    1. 首先选一套屏幕标准尺寸
    2. 屏幕尺寸 / 划分的份数 =html的font-size (不同的屏幕尺寸的html文字大小不同,因为要除以同样的份数才能达到等比例缩放的效果)
    3. 页面元素的rem值= 页面元素的px值 / html的文字大小
Bootstrap(框架)响应式布局
  • 提供了标准化的html+css编码规范
  • 提供了一套简介,直观,强悍的组件,并且会不断更新迭代
  1. 创建Bootstrap文件夹,放入下载好的Bootstrap内的文件

  2. 创建html骨骼框架

    解决ie9以下浏览器对新增标签不知别和对css3媒体查询不识别的问题
    <!--[if lt IE 9]>
          <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
          <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
    
  3. 引入相关样式文件(Bootstrap里的css文件)

    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
    
  4. 书写内容

    1. 通过修改标签的类名可实现不同的样式来使用bootstrap

    2. 还可以在bootstrap原来的样式上 继续修改

    3. 查询bootstrap样式需要外网查询

    4. 若是效果图采取大于1170px的宽度, 我们将需要用媒体查询修改container的宽度(Bootstrap 里 container宽度 最大为 1170px)

      @media screen and (min-width: 1280px) { 
          .container { 
      	width: 1280px; 
           } 
         }
      
  • div.contarnei 容器(响应式)

    • 响应式布局的容器 固定宽度
    • 大屏>=1200px 固定为1170px
    • 中屏>=992px 宽度为970px
    • 小屏>=768px 宽度为750px
    • 超小屏(100%)
  • div.container-fluid类(流式布局容器)

    • 百分百宽度 适合单独做移动端开发 占据全部视口的容器
  • 栅格系统(系统自动分为最低配12列)

    • 通过一系列的row行与column列的组合来布局,row必须放在丛台内里面.
    • 要实现列的平均划分 需要给列添加类前缀,类前缀后面填需要划分的份额
      • .col-xs-12 超小屏<768px 100%
      • .col-sm-6 小屏>=768px 750px
      • .col-md-6 中屏>=992px 970px
      • .col-lg-6 大屏>=1200px 1170px
    • 列大小12 多余的另起一行
    • 每一列默认有左右15的padding, 子元素加一个row可以去掉这个padding 值
    • 可以同时为一列指定多个设备的类名,以便划分不同份数 例如 class=“col-md-4 col-sm-6”
    • 列嵌套
      • 每个列还可以划分12份,里面继续放入列.
    • 列偏移
      • .col-md-offset-*
      • 可以给需要偏移的盒子向左偏移上多少列份额的距离(效果是给盒子添加了一个左margin值)
    • 列排序(可以让同行的盒子向两侧平移移动达到排序的目的)
      • .col-md-pull-* 向左平移多少份的距离
      • .col-md-push-* 向右平移多少份的距离
  • bootstrap响应式工具 (利用媒体查询功能,展示或隐藏某些模块)

    • .hidden-xs 隐藏超小屏 其他屏可见 .visible-xs 超小屏可见 其他隐藏
    • hidden-sm 隐藏小屏 其他屏可见 .visible-sm 小屏可见 其他隐藏
    • hidden-md 隐藏中屏 其他屏可见 .visible-md 中屏可见 其他隐藏
    • hidden-lg 隐藏大屏 其他屏可见 .visible-lg 大屏可见 其他隐藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值