移动端基础

视口

  • 布局视口 layout viewport
  • 视觉视口 visual viewport
  • 理想视口 ideal viewport

移动端布局理想视口:手机屏幕有多宽,布局视口就有多宽

添加meta视口标签

<meta name="viewport" content="width=device-width, initial-scale=1.0,minimum-scale=1.0,maxmum-scale=1.0,user-scalable=no">

pc端页面 1px=1个物理像素

但移动端不一定

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

背景缩放

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

长度px|百分比|cover|contain

只写一个参数 肯定是宽度 高度省略了 会等比例缩放

cover 等比例拉伸 要完全覆盖div盒子 可能有部分背景图片显示不全

contain 高度和宽度等比例拉伸 当宽度 或者高度 铺满div盒子就不再进行拉伸了 可能有部分空白区域

背景线性渐变

background:-webkit-linear-gradient(起始方向,颜色1,颜色2,……)
起始方向可以是 方位名词 或者 度数

背景渐变必须添加浏览器私有前缀

移动端开发选择

  • 移动端可以全部css3盒子模型

  • pc端如果完全需要兼容就用传统模式,不考虑兼容就选择css3盒子模型

单独制作移动端页面(主流)响应式页面兼容移动端(其次)
1.流式布局(百分比布局)通过判断屏幕宽度来改变样式以适应不同终端
2.flex弹性布局媒体查询
3.less+rem+媒体查询布局bootstrap
4.混合布局

CSS初始化推荐使用normalize.css

流式布局

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

min-width最小宽度

max-width最大宽度

二倍精灵图

  • 在firework里把精灵图宽高缩一半
  • 再测量坐标
  • background-size:精灵图宽度的一半 auto;

flex布局

采用flex布局的元素称为flex container 简称容器

它的所有子元素自动成为容器成员称为flex item 简称项目

任何一个容器都可以指定为flex布局

父盒子设为flex布局后,子元素的float,clear,和vertical-align属性将失效

flex布局原理:通过给父元素添加flex属性来控制子元素的位置和排列方式

常见父项属性

属性含义默认属性值属性值
flex-direction设置主轴方向默认主轴为x轴水平向右,侧轴为y轴垂直向下
flex-direction:row
row
row-reserve
column
column-reserve
justify-content设置主轴上子元素的排列方式默认justify-content:flex-startflex-start(从头部开始排列)
flex-end(从尾部开始排列)
center(在主轴居中对齐)
space-around(平分剩余空间)
space-between(先两边贴边再平分剩余空间)
flex-wrap设置子元素是否换行默认flex-wrap:nowrapnowrap不换行
wrap换行
align-items设置侧轴上子元素的排列方式(单行)默认align-items:stretchflex-start
flex-end
center
stretch(拉伸)
align-content设置侧轴上子元素的排列方式(多行)默认align-content:flex-startflex-start
flex-end
center
space-around
space-between
stretch
flex-flow复合属性,同时设置flex-direction和flex-wrap

单行找align-items

多行找align-content

子项常见属性

felx子项平分剩余空间所占份数 比如 flex:1 flex:20%
align-self子项自己在侧轴上的排列方式
order定义子元素的排列顺序(数字越小越靠前,默认0)

rem适配布局

使用媒体查询 根据不同的设备按比例设置html的字体大小

页面元素使用rem为单位

当html字体大小变化页面元素尺寸也会发生变化

从而达到等比例缩放的适配

rem单位

em相对于父元素 的字体大小来说的

rem 相对于html元素 字体大小来说的

页面元素的rem值=页面元素值/html font-size

媒体查询

media query

针对不同的媒体类型定义不同的样式

@media mediatype媒体类型 and|not|only关键字 (media feature媒体特性){
    
}
mediatype媒体类型关键字媒体特性
all:用于所有设备and 且width
print:用于打印机和打印预览not 非min-width
screen:用于电脑屏幕,平板电脑,智能手机only 指定特定的媒体类型max-width

引入资源

<link rel="stylesheet" href="my.css" media="mediatype and|not|only (media feature)">

针对不同的媒体使用不同的样式表

直接在link中判断设备尺寸然后引入css文件

维护css弊端

css 非程序式语言,没有变量,函数,scope作用域等概念

冗余度高

不方便维护,不利于复用

没有很好的计算能力

Less

是css扩展语言,在现有的css语法上为css加入程序式语言的特性

常见的css预处理器:less,sass,stylus

less变量
@变量名:值
变量名 以@开头
变量名 不能包含特殊字符
变量名 不能以数字开头
变量名 大小写敏感
less编译

less包含一套自定义的语法及一个解析器

用户根据这些语法定义自己的样式规则

这些规则会通过解析器编译生成对应的css文件

vscode插件easy less 把.less文件编译为.css文件

less嵌套
@width:10px;
div{
    p{
        width:@width + 10;
    }
}

a{
    &:hover{
        样式
    }
}
  • 内层选择器的前面没有**&符号**,则被解析为父选择器的后代
  • 如果有**&符号**,则被解析为父元素自身或父元素的伪类
less运算

任何数字,颜色或者变量都可以参与运算

less提供了**加+减-乘*除/**算术运算

  • 运算符中间左右有空格
  • 两个不同单位的值运算,运算结果的值为第一个值的单位
  • 两个值只有一个有单位,运算结果就取该单位

rem适配方案技术

技术方案一

less+媒体查询+rem

设计稿常见尺寸宽度

设备常见宽度
iphone 4.5640px
iphone 678750px
Andriod320px 360px 375px 384px 400px 414px 500px 720px

现在基本以750px为准

假设设计稿为750px,把整个屏幕分为15等份,一份就是50px,那html的font-size就为50px =1rem

页面元素rem值=页面元素值(px) / (屏幕宽度/划分的份数)

比如80px,80 rem / (750/15)

在index.css中导入common.css @import "common"

技术方案二

flexible.js+rem

淘宝团队出的简洁高效的移动端适配库

不需要再写在不同屏幕下的媒体查询,因为里面js做个处理

它的原理是:把当前屏幕划分为10等份,但在不同设备下,比例还是一致的

我们要做的就是确定好我们当前屏幕设备的html字体大小就行了

vscode插件cssrem可以把px转为rem,此插件默认的html字体大小为16需要改一下,比如改为750/10=75

响应式布局

响应式开发原理:就是根据 媒体查询 针对不同宽度的设备进行布局和样式的设置,从而达到适配不同设备的目的

设备划分尺寸区间尺寸划分
超小屏幕(手机)<768px设置宽度为100%
小屏设备(平板)>=768px~<992px设置宽度为750px
中等屏幕(桌面显示器)>=992px~<1200px设置宽度为970px
宽屏设备(大桌面显示器)>=1200px设置宽度为1170px

响应式布局容器:响应式需要一个父级作为布局容器来配合子级元素来实现变化效果

原理就是在不同屏幕下,通过媒体查询来改变这个布局容器的大小,再改变里面子元素的排列方式和大小,从而实现不同屏幕下看到不同的页面布局和样式变化

前端框架bootstrap

学好bootstrap框架的关键在于 知道它定义了哪些样式以及这些样式能实现什么样的效果

.container

.col-xs-

.col-sm-

.col-md-

.col-lg-

.col-md-offset-

.col-md-push-

.col-md-pull-

.hidden-xs超小屏隐藏,其他显示

.hidden-sm小屏隐藏,其他显示

.hidden-md中屏隐藏,其他显示

.hidden-lg大屏隐藏,其他显示

.visible-xs超小屏显示,其他隐藏

……

vw和vh

vw和vh是一个相对单位

vwviewport width 视口宽度单位1vw=1/100视口宽度
vhviewport height视口高度单位1vh=1/100视口高度

比如:当前屏幕视口是375px 那么1vw=3.75px

vw和vh总是针对当前视口来说的

我们本质是根据视口宽度来等比例缩放页面元素高度和宽度的,所以开发中使用vw就基本够用了,vh很少使用

vscode插件px2vw:安装完之后在扩展设置中改一下design width,比如设计稿为375px,就改为375,这样就能把px转为vw了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值