响应式布局

响应式布局:通过媒体查询,判断终端的分辨率,做出一个可以在不同终端正常展示的网页布局

优点:一个页面可以适配不同终端的显示
缺点:为了实现这一目的我们不得不利用媒体查询写很多冗余的代码,使整体网页的体积变大,应用在移动设备上就会带来严重的性能问题。
响应式布局常用于企业的官网、博客、新闻资讯类型网站,这些网站以浏览内容为主,没有复杂的交互。

1: 布局方式

a、固定宽度布局:为网页设置一个固定的宽度,通常以px做为长度单位,常见于PC端网页。

b、流式布局:为网页设置一个相对的宽度,通常以百分比做为长度单位。

c、栅格化布局:将网页宽度人为的划分成均等的长度,然后排版布局时则以这些均等的长度做为度量单位,通常利用百分比做为长度单位来划分成均等的长度。

d、响应式布局:通过检测设备信息,决定网页布局方式,即用户如果采用不同的设备访问同一个网页,有可能会看到不一样的内容,一般情况下是检测设备屏幕的宽度来实现。

2: 常见设备尺寸:

大屏幕: >= 1200px

中等屏幕(默认): >=992px < 1200px

平板(小屏): >=768px < 992px

手机(超小屏): <768px;

3: 媒体查询:https://www.runoob.com/cssref/css3-pr-mediaquery.html  用来设置不同屏幕宽度下的样式 

device-with:设备屏幕可见宽度

max-width:设备页面最大可见宽度

and后面跟的是条件,条件后面写的是max-width的时候,宽度从大往小写,条件写的是min-width的时候,

宽度从小往大写,建议从小往大写,min-width特点:向下覆盖,向上兼容。

min-width和min-device-width的区别,在min-width在pc和移动端都能相应,min-device-width只能在移动端相应

@media screen and (min-width: 300px) { 
    div{
         width: 100%;
    }
}

@media screen and (min-width: 600px) { 
   div{
         width: 50%;
    }

}

css样式中使用:

<link rel="stylesheet" media="screen and (max-device-width:800px)" href="a.css" />

<link rel="stylesheet" media="screen and (max-device-width:480px)" href="b.css" />

4: 根据该业务用到的css框架:

a: Bootstrap        https://www.bootcss.com/ 

b: element UI      https://element.eleme.cn/#/zh-CN

c: Framework7    对苹果手机友好 http://www.framework7.cn/  https://github.com/framework7io/framework7下载地址    https://www.zybuluo.com/kirkzwy/note/16048

d: Amaze UI       http://amazeui.org

5: Bootstrap  移动设备优先,基于less进行预处理,基于jq

可以直接下载码那个,里面包含所有的文件,css, js, fonts 在dist(区域)目录下

根据右侧的浏览器和设备的支持情况,引入相应的 Respond.js 和在head里面加入

<meta http-equiv="X-UA-Compatible" content="IE=edge">IE优先最新版
<meta name="renderer" content="webkit">双内核时,优先webkit

基本模板

<!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">
  <meta name="renderer" content="webkit">
  <title>Bootstrap</title>
  <link rel="stylesheet" href="./css/bootstrap.min.css">
  <!--[if lt IE 9]>
    <script src="./js/html5shiv.min.js"></script>
    <script src="./js/respond.min.js"></script>
  <![endif]-->
</head>
<body>

  <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
  <script src="./js/jquery.min.js"></script>
  <script src="./js/bootstrap.min.js"></script>
</body>
</html>

栅格系统:

  • 行(row)必须包含在 .container (固定宽度)或 .container-fluid (100% 宽度)中。
  • 列(col)必须包含在 行(row)内,只有列(col)可以作为行(row)”的直接子元素。
  • 栅格系统中的列是通过指定1到12的值来表示其跨越的范围。例如,三个等宽的列可以使用三个 .col-xs-4 来创建。

向下覆盖,向上兼容,书写顺序应该

  • xs(超小屏幕 手机 (<768px)
  • sm(小屏幕 平板 (≥768px)
  • md(中等屏幕 桌面显示器 (≥992px)
  • lg(大屏幕 大桌面显示器 (≥1200px)

向下覆盖,向上兼容即:

  • 如果xs,sm,md,lg,设置的都是一样,直接写最小的就行,不用往大了写
  • 在元素上应用任何 .col-md-* 栅格类中等屏幕设备   .col-lg-* 不存在也没关系, md也能影响大屏幕设备。
  • <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"></div>  =  <div class="col-xs-12"></div>

例子:

<div class="container-fluid">
<div class="row">

  <div class="col-xs-12 col-sm-6 col-md-4 col-lg-3"></div>
  <div class="col-xs-12 col-sm-6 col-md-4 col-lg-3"></div>
  <div class="col-xs-12 col-sm-6 col-md-4 col-lg-3"></div>
  <div class="col-xs-12 col-sm-6 col-md-4 col-lg-3"></div>
</div>
</div>

offset:偏移  <div class="col-xs-1 col-xs-offset-2">第5列</div>
偏移的距离是以栅格列做为单位,直接把当前列和所有列往后推2列
直接影响后面的元素(内部是通过margin-left属性来实现的)

push(往后定位(当前列加2列处))  <div class="col-xs-1 col-xs-push-2">第5列</div>
pull(往后定位(当前列减2列处))    <div class="col-xs-1 col-xs-push-2">第5列</div>
它是通过定位来实现的,自身的位置会空出来,自己定位到当前列 +/-  n列上,和其它元素重叠,但不会影响其它元素的位置

显示隐藏:

  • .hidden-xs .hidden-sm .hidden-md .hidden-lg 
  • 没有向上兼容,向下覆盖的效果,所以所有的标签最好都要写 
  • .visible-*-*这个官方基本已经废弃,不要用

 6: css预处理脚本-less  https://less.bootcss.com/#

离线装less

 

 

3: 命令行编译:lessc path/xxx.less path/xxx.css

4: 用下面编译(方便):

  • 执行nmp install -g -less-plugin-clean-css
  • ctrl+shift+p打开命令面板
  • 输入install package 然后回车
  • 安装LESS,less,less2Css三个插件
  • alt+s快捷键即可实现编译

5:使用webstorm, HBuilder直接新建两个文件名一样的less文件和css文件,可以直接编译

HBuilder有问题,改插件配置处的{

  "extensions": "less",
  "key": "ctrl+s",
  "showInParentMenu": false,
  "onDidSaveExecution": true

}这几个值看一下

 

less文件里面可以引入其他的css文件:

@import "base.css";
@import "./css/fonts.css";

 

7: rem(如果按照20份进行划分)

@media screen and(device-width: 320px) {
  html{
    font-size: 16px;
  }
}
@media screen and(device-width: 360px) {
  html{
    font-size: 16px;
  }
}
@media screen and(device-width: 375px){
  html{
    font-size: 18.75px;
  }
}
@media screen and(device-width: 386px){
  html{
    font-size: 19.3px;
  }
}
@media screen and(device-width: 411px){
html{
    font-size: 25.5px;
  }
}
@media screen and(device-width: 414px){
html{
    font-size: 20.7px;
  }
}
@media screen and(device-width: 768px){
  html{
    font-size: 38.4px;
   }
}
@media screen and(device-width: 1024px){
  html{
    font-size: 51.2px;
  }
}

 如果我们拿的设计稿是640px宽的,less里面所有的尺寸都用rem来设置,

因为是分成20份,一份rem就是32px,所有设置的时候要除以32即有几份rem,然后再乘以rem

 

.item_title{
  width: 100%;
  height: 70/32rem;
  line-height: 70/32rem;
  font-size: 28/32rem;
  overflow: hidden;
  h3{
    float: left;
    color: #333333;
  }
  span{
    float: right;
    color: #888;
  }
}

 

 

 

 

 

posted @ 2020-04-13 17:47  花木兰r  阅读(373)  评论(0编辑  收藏  举报