适应多端的方法

1、flex布局 各种属性及用法

参考阮一峰

容器的属性

(1)flex-direction 主轴的方向(即项目的排列方向)

● row(默认值):主轴为水平方向,起点在左端。
● row-reverse:主轴为水平方向,起点在右端。
● column:主轴为垂直方向,起点在上沿。
● column-reverse:主轴为垂直方向,起点在下沿。

(2)flex-wrap 如果一条轴线排不下,如何换行。

(1)nowrap(默认):不换行
(2)wrap:换行,第一行在上方
(3)wrap-reverse:换行,第一行在下方

(3) flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
(4) justify-content属性定义了项目在主轴上的对齐方式。

● flex-start(默认值):左对齐
● flex-end:右对齐
● center: 居中
● space-between:两端对齐,项目之间的间隔都相等。
● space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

(5) align-items属性定义项目在交叉轴上如何对齐。

● flex-start:交叉轴的起点对齐。
● flex-end:交叉轴的终点对齐。
● center:交叉轴的中点对齐。
● baseline: 项目的第一行文字的基线对齐。
● stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度

(6) align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

● flex-start:与交叉轴的起点对齐。
● flex-end:与交叉轴的终点对齐。
● center:与交叉轴的中点对齐。
● space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
● space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
● stretch(默认值):轴线占满整个交叉轴。

项目属性

(1) order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
(2) flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

(3) flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
负值对该属性无效。

(4) flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。
(5)flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

(6)align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

2、字体 rpx\em\rem

(1)px单位

  1. px是css中常见的单位
  2. px:pixel,像素,屏幕上显示的最小单位,用于网页设计,直观方便。

(2) rpx单位

  1. rpx是小程序常用的单位
  2. rpx和px的换算:1px=2rpx

(3) em单位

  1. em单位大小CSS 3中新增的一种相对长度单位,首先它会找自身有没有font-size,没有的话找父元素的字体大小(font-size),一直往上寻找,直到找到为止
<!DOCTYPE html>
<html lang="en">
<body>
  <div>
    <p></p>
  </div>
</body>
</html>
<style>
  div{
    font-size:12px;
  }
  p{
  /* div的字体大小×长度=12px*10em=120px */
  	font-size:20px;
    width:10em; //200px
    height:10em; 
  }
</style>
<!DOCTYPE html>
<html lang="en">
<body>
  <div>
    <p></p>
  </div>
</body>
</html>
<style>
  div{
    font-size:12px;
  }
  p{
  	/*p没有设置字体大小,找到的是div的字体大小 */
    width:10em; //120px
    height:10em; 
  }
</style>
  1. 无论是字体大小还是宽度高度用了em单位,那么其px大小等于往上找到的字体大小乘于自身的em大小。
  2. 比如html->div->p,p的大小如果div没有设置字体大小,那么就找html的字体大小,如果没有就获取html的默认字体大小。(默认字体根据浏览器的不同或有变化)
  3. 这样就实现了随着字体大小的变化,响应式地改变大小,适应屏幕大小

(4) rem单位

  1. rem是CSS 3中新增的一种相对长度单位。当使用rem单位时,`根节点< html>的字体大小(font-size) 决定了rem的尺寸。
  2. 与em单位相比,rem单位的优势在于,只通过修改< html>的文字大小,就可以改变整个页面中的元素大小,使用起来更加方便。
  3. 即使html没有设置字体大小,也不会获取父元素的字体大小,而是获取html的字体大小。
html {
 font-size: 14px;
}
div {
 font-size: 12px;
}
div > p {
 width: 10rem;    /* 结果为140px */
 height: 10rem;   /* 结果为140px */
}

(5) 小结

● 我们可以根据不同的需求分别使用不同的单位
● px是相对单位,像素级
● rpx是小程序用的比较多
● 说到响应式单位,一般指的rem和em

3、媒体查询 media queries

媒体查询即media queries,它可以针对不同的媒体类型定义不同的样式,从而实现响应式布局 ,也可以针对不同的分辨率设置不同的样式。当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。
例如:
1024分辨率以上:PC端
1024 ~ 768 : pad pro
768 ~ 450 : pad mini , mobile 横屏
450分辨率以下: mobile 竖屏

常见的媒体类型:
● all 用于所有设备
● print 用于打印机和打印预览。
● screen 用于电脑屏幕,平板电脑,智能手机等。
● speech 应用于屏幕阅读器等发声设备。
在media queries中,使用max / min来表示大于等于小于以此作为逻辑判断。
● 最小宽度:min-width,当媒体类型大于或是等于指定的宽度时,大括号内的样式生效;
● 最大宽度:max-width,当媒体类型小于或是等于指定的宽度时,大括号内的样式生效。

逻辑运算符:

  1. not:用来排除某种设备。比如,排除打印设备 @media not print;
  2. only:用以指定某特定媒体设备。对于支持 Media Queries 的移动设备来说,如果存在 only 关键字,移动设备的 Web 浏览器会忽略 only关键字并直接根据后面的表达式应用样式文件。对于不支持 Media Queries 的设备但能够读取 Media Type 类型的 Web浏览器,遇到 only 关键字时会忽略这个样式文件。
  3. all:适用于所有的设备类型;
  4. and:媒体查询中来连接多种媒体特性,一个媒体查询中可以包含0或多个表达式,表达式可以是0或多个关键字,以及一种媒体类型。

直接写在css样式中:

@media all and (min-width:500px){ }
@media all and (min-width:500px) and (max-width:800px){ }

link的使用:

   <link rel="stylesheet" href="./xxx.css" media="all and (min-width:600px)">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值