CSS响应式布局

CSS布局

https://www.bilibili.com/video/BV1ov411k7sm

http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

什么是媒体查询

概念:为不同尺寸的屏幕设定不同的css样式

示例:

  <style>
    .box {
      width: 200px;
      height: 200px;
    }
    @media screen and (min-device-width: 100px) and (max-device-width: 300px) {
      .box {
        background-color: red;
      }
    }
    @media screen and (min-device-width: 300px) and (max-device-width: 500px) {
      .box {
        background-color: green;
      }
    }
  </style>

屏幕尺寸在100px - 300px 背景颜色为red,300px-500px 背景颜色为green

@media常用参数

属性名称作用
width、height浏览器可视宽度、高度
device-width设备屏幕的宽度
device-height设备屏幕的高度
  <style>
    html, body {
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
    }
    .box {
      width: 100%;
      height: 200px;
    }
    .box div {
      float: left;
      height: 100px;
    }
    .box div:nth-child(1) {
      background-color: pink;
    }
    .box div:nth-child(2) {
      background-color: green;
    }
    .box div:nth-child(3) {
      background-color: yellow;
    }
    @media screen and (min-width: 100px) and (max-width: 200px) {
      .box div {
        width: 100%;
      }
    }
    @media screen and (min-width: 200px) and (max-width: 400px) {
      .box div {
        width: 50%;
      }
    }
    @media screen and (min-width: 400px) {
      .box div {
        width: 33.33%;
      }
    }
  </style>

媒体查询其他引入方式1

  <style media="(min-width: 100px) and (max-width: 200px)">
    .box div {
      width: 100%;
    }
  </style>
  <style media="(min-width: 200px) and (max-width: 400px)">
    .box div {
      width: 50%;
    }
  </style>
  <style media="(min-width: 400px)">
    .box div {
      width: 33.33%;
    }
  </style>

媒体查询其他引入方式2

  <link rel="stylesheet" href="./test.css">
  <link rel="stylesheet" href="./media1.css" media="(min-width: 100px) and (max-width: 200px)">
  <link rel="stylesheet" href="./media2.css" media="(min-width: 200px) and (max-width: 400px)">
  <link rel="stylesheet" href="./media3.css" media="(min-width: 400px)">

什么是flex

FlexiableBox即是弹性盒子,用来进行弹性布局,可以配合rem处理尺寸的适配问题

http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool

500

属性值作用
flex-direction
flex-wrap
flex-flow
justify-content
align-items
align-content

主轴方向与换行

flex-direction: 子元素在父元素盒子中的排列方式

属性值作用
row默认值,按从左到有的顺序显示
row-reverse与row相同,但是以相反的顺序
column垂直显示,按从上到下的顺序
column-reverse与column相同,但是以相反的顺序

503

flex-wrap:子元素在父元素盒子中是否换行

属性值作用
nowrap(默认)不换行(会自行压缩,即使子元素设置宽度)
wrap换行/换列
wrap-reverse换行/换列,但以相反的顺序

flex-flow:flex-direction和flex-wrap属性的简写方式,默认值 row nowrap

 flex-flow: <flex-direction> || <flex-wrap>;

剩余空间调整为间距

justify-content:定义子元素在父元素主轴上的对齐方式

属性作用
flex-start(默认值)左对齐
flex-end右对齐
center居中
space-between两端对齐,项目之间的间隔都相等
space-around每个子元素两侧的间隔相等。所以,子元素之间的间隔比其与边框的间隔大一倍。
space-evenly所有间隔匀称、平等

交叉轴的对齐方式

align-items:定义子元素在交叉轴上如何对齐

属性作用
flex-start交叉轴的起点对齐
flex-end交叉轴的终点对齐
center交叉轴的中点对齐
baseline子元素的第一行文字的基线对齐
stretch(默认值)如果子元素未设置高度或设为auto,将占满这个容器的高度

align-content:定义了多行的整体对齐方式。如果子元素只有一行,该元素不起作用

属性作用
flex-start
flex-end
center
stretch默认值
flex-between
flex-around

504

子元素的设置

属性值作用
order子元素的排列顺序。数值越小,排列越靠前,默认为0
flex-grow子元素的放大比例,默认为0,即存在剩余空间,也不放大
不为0时,即使有width,也会按照比例
flex-shrink子元素的缩小比例,默认为1,即如果空间不足,子元素将缩小
如果一个子元素为0,其他子元素为1,空间不足时,前者不缩小
flex-basis分配多余空间之前,子元素占据主轴的宽度
默认为auto,即子元素本身的宽度大小
flexflex-grow,flex-shrinkflex-basis的简写,默认值为0 1 auto。
auto (1 1 auto) none (0 0 auto) 1 (1 1 0%)
align-self单个子元素与其他元素对齐方式不一样
align-self: auto(默认值) | flex-start | flex-end | center | baseline | stretch; }

flex简写

属性作用
flex: auto;flex: 1 1 auto;
flex: none;flex: 0 0 auto;
flex: 1;flex: 1 1 0%;
flex: 20%; || flex: 200px;flex: 1 1 20%; || flex: 1 1 200px;
flex: 2 3;flex: 2 3 0%;
flex: 2 200px;flex: 2 1 200px;

rem

相对于根元素的字体大小的单位

使用媒体查询+rem或js,在不同宽度的视口下自动调整字体大小

自适应布局

  1. 根据设备类型跳转至移动端/PC端页面

      const userAgent = navigator.userAgent.toLowerCase();
      const deviceReg = /(ipod|ipad|iphone|android|coolpad|mmp|smartphone|midp|wap|xoom|symbian|j2me|blackberry|wince)/
      window.location.href = deviceReg.test(userAgent) ? 'mobile.html' : 'pc.html'
    
  2. 部分自适应,结合媒体查询

响应式布局

布局特点:确保一个页面在所有终端上,都能显示出令人满意的效果

1.百分比、媒体查询

2.rem 根据实际屏幕宽度做等比例换算

参考博文:

https://www.mdaima.com/news/105.html

https://blog.youkuaiyun.com/sinat_17775997/article/details/89087348

https://blog.youkuaiyun.com/weixin_42359436/article/details/81161787

关注公众号: 页面仔小杨 【实战干货、原创分享】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值