前端布局-流式布局

流式布局

  • 概述
    • 是页面中元素的宽度按照屏幕分辨率自动进行适配调整,也就是我们常说的适配,它可以保证当前屏幕分辨率发生改变的时候,页面中的元素大小也可以跟着改变,所以流式布局是移动端开发常用的一种布局。

    • 通过盒子的宽度设置成百分比来根据屏幕的宽度进行伸缩,不受固定像素的限制,内容向两侧填充

    • 流式布局方式是移动web开发使用比较常见的布局方式

    • 基本属性

      max-width 最大宽度
      min-width 最小宽度
      max-height 最大高度
      min-height 最小高度

视口

  • 就是浏览器显示页面内容的屏幕区域,视口可以分为布局视口,视觉视口和理想视口
  • 布局视口(layout viewport)
    * 一般移动设备都设置了一个布局视口,用于解决早期的pc端页面在手机上的显示问题
    * ios 和android基本上都将这个视口分辨率设置为980px,所以pc端上的很多页面都可以在手机端上呈现,只不过元素看上去很小,一般可以通过手动缩放网页查看
  • 视觉视口(visual viewport)
    * 字面意思,它是用户正在看到的网站的区域(注意:是网站的区域)
    * 我们可以通过缩放操作视觉视口,但是不会影响布局视口,布局视口依然保持原来的宽度
  • 理想视口(ideal viewport)
    * 为了使网站在移动端有最理想的浏览和阅读宽度而设定的
    * 理想视口对设备来讲是最适合的视口尺寸
    * 需要手动添加meta视口标签通知浏览器操作
    * meta视口标签的主要目的是
    • 布局视口的宽度,应该与理想视口的宽度保持一致,简单理解就是设备有多宽,我们的布局视口就有多宽

meta视口标签

  • 属性

    width 宽度设置的是 viewport宽度 (设置device-width来把浏览宽度设置为设备的宽度)
    initial-scale 初始缩放比 (大于0的数字) 页面打开时显示的大小
    maximum-scale 最大缩放比 (大于0的数字) 页面最大的缩放比例
    minimum-scale 最小缩放比 (大于0的数字) 页面最小的缩放比例
    user-scalable 用户是否可以缩放 (yes 或 no 1 或 0 )
  • 标椎的viewport设置

    • 视口宽度和设备保持一致
    • 视口的默认缩放比例是 1.0
    • 不允许用户自行缩放
    • 最大允许的缩放比例是 1.0
    • 最小允许的缩放比例是 1.0

二倍图

  • 二倍图就是比原来图片大两倍的图片,因为在手机端会把原始图片放大,而原来的图片放大后就变模糊了

  • 物理像素和物理像素比

  • 物理像素点是指屏幕显示的最小颗粒,是物理真实存在的,这是厂家在出厂时就把屏幕设定好的

  • 我们在开发的时候的 1px 不一定等于 物理像素的 1px

  • pc端页面 1px = 1个物理像素 ,但是移动端就不相同了

  • 1px等显示的物理像素点的个数 称为物理像素比

  • 比如 ip8 的物理像素是 1:2 (1是pc端 2是手机端)

  • 像素比的问题

  • 因为出现了像素比,会有以下问题

  • css中插入图片 50*50的图片,在手机端中会根据物理像素比放大,放大后图片就变模糊了

  • 在标椎的viewport设置中,使用倍图来提高图片质量,解决在高清设备中的模糊问题

  • 通常使用二倍图, 因为 ip6 7 8 的影响 现在还存在 3 或 4 倍图

  • 用倍图就需要缩放图片

background-size

  • 背景缩放
  • 格式

  • background-size: 背景图片宽度 背景图片高度;

  • 属性

    px 背景图片的缩放比例
    % 根据父盒子来缩放,50%是父盒子的一半
    cover 完全覆盖div盒子,但是背景元素可能会显示不全
    contain 高度和宽度等比例拉伸,当宽度或者高度铺满div盒子就不进行拉伸了,可能会有空白区域
    div{
       width 1000px;
       height 1000px;
       border:2px solid red;
       background:url(./2.jpg) no-repeat;
       /* background-size: 1000px ; */
       /* 1.只写一个参数,肯定是宽度了,高度就会等比例缩放 */
       /* 2.可以跟百分比  相对于父盒子来说的,也就是说,50%是父盒子的一半*/
       /* background-size: 50%; */
    
       /* 3、cover ,会完全覆盖div盒子,但是背景元素可能会显示不全*/
       /* background-size: cover; */
       /* 4.contain ,高度和宽度等比例拉伸,当宽度或者高度铺满div盒子就不在进行拉伸了,可能有空白区域*/
       background-size: contain;   
    }
    
    
     <div></div>

移动端页面样式

  • 单独制作移动页面(应该是主流)
  • 通常情况下,用户输入网址,通过判断设备跳转到pc端还是移动端
  • 制作响应式页面
  • 通过改变屏幕宽度,来改变样式
  • 缺点制作麻烦,要调节兼容性

移动端的一些样式

  • css初始化 normalize.css

  • 移动端初始化css

  • 保护了有价值的默认值

  • 修复了浏览器bug

  • 是模块化的

  • 有详细文档

  • npm install normalize.css 下载

  • css盒子模型 box-zizing

  • 传统模式宽度计算

  • 盒子宽度 = css中设置的width + border + padding

  • css3盒子模型

  • 盒子宽度 = css中设置的width里就包含了 border和padding

  • 也就是说 css3中的盒子模型 padding和border不会撑大盒子

  • 格式

  • box-sizing: border-box 盒子模型就变为css3盒子模型了

  • 属性

    border-box 没有border和padding撑大盒子(border和padding包含在width中了)
    content-box 默认值
    inherit 继承父元素的box-sizing属性的值
  • 清除高亮(a标签点击高亮)

  • -webkit-tap-highlight-color: transparent;

  • 清除按钮样式 (button按钮样式)

  • -webkit-appearance: none;

  • 禁用长按时弹出菜单

  • -webkit-touch-callout: none;


本博客所有文章是以学习为目的,如果有不对的地方可以一起交流沟通共同学习 邮箱:1248287831@qq.com!