移动Web


移动Web

字体图标

字体图标

  • 展示的是图标,本质是字体
  • 可以灵活的修改样式
  • 体积小,渲染快

阿里图标网址

  • https://www.iconfont.cn

如果没有所需的字体图标

  • 与设计师沟通 得到SVG矢量图
  • 上传到网站,下载图标

2D转换

2D转换 transform 位移

transform: translate(100px,100px);
  • 第一个值代表x轴 可正 可负 对应translateX
  • 第二个值代表y轴 可正 可负 对应translateY
  • 可以写百分比

位移和定位的区别

  • 位移 移动的是元素本身的宽度或高度
  • 定位 移动的是父元素的宽度或高度
  • c1,c2 是根据父元素移动
  • c3 基本上是根据自身移动

居中的几种方式

  1. 给父元素设置 text-align:center

    设置高度=行高

    子元素设置vertical-align:middle

    注意:vertical-align:middle只能用于行内元素和行内块元素

  2. 给子元素定位 缺:必须设宽高

    left:50%

    top:50%

    margin-left:子元素宽度一半

    margin-top:子元素高度一半

  3. 给子元素定位 缺:必须设宽高

    left:0px;

    right:0px;

    top:0px;

    bottom:0px;

    margin:auto;

  4. 给子元素定位 不用设宽高

    position: absolute;

    top: 50%;

    left: 50%;

    transform: translate(-50%,-50%);

旋转 rotate

transform: rotate(90deg);
  • 正值 顺时针
  • 负值 逆时针
  • deg 度

旋转原点 origin

transform-origin: left top ;
  • 第一个值 X轴
  • 第二个值 Y轴
  • 只写一个值 另一个值默认 center
  • 可以%,px

复合属性写法

transform: translate(600px) rotate(1080deg);
  • 需要给旋转元素加过渡 否者rotate 直接旋转完

缩放 scale

transform: scale(1,2);
  • 值比1大 放大
  • 值比1小 缩小
  • 可以填一个值 等比例缩放
  • 第一个值宽的倍数 第二个值高度倍数

缩放和宽高的区别

  • 缩放是和内容一起缩放 宽高只改变宽高内容不变
  • 缩放沿着中心点缩放 宽高沿着上中位置变化

渐变 linear-gradient

background: linear-gradient(to top,red,green);
  • 方位值(一个或两个 top left),颜色 ,颜色
  • 用vh铺满视口 宽度默认

3D转换

移动translate

  • transform: translateX(50px);
  • transform: translateY(50px);
  • transform: translateZ(50px); z轴位置与视线方向相同
  • 取值可正负
  • % ,px

透视perspective

  • 默认情况下无法观察Z轴移动
  • 只有一个盒子的情况下有效
  • 给父级添加perspective属性
  • 取值一般在800-1200px
  • 为元素添加近大远小,近实远虚的视觉效果

rotate 空间转换

  • transform:rotateZ(); //沿Z轴旋转

  • transform:rotateX(); //沿X轴旋转

  • transform:rotateY(); //沿y轴旋转

    拓展

    transform: rotate3d(1,0,0,60deg);

    • 自定义旋转轴的位置
    • xyz选值 0不选中 1选中

3D空间

  • transform-style:preserve-3d; //给父元素添加
  • 设置元素让子元素处于3d空间

scale 空间缩放

  • transform: scaleX(倍数);

  • transform: scaleY(倍数);

  • transform: scaleZ(倍数);

  • 连写

    transform: scale3d(x,y,z);

动画 animation

添加动画

@keyframes 名字 {
    from {
    }
    to {
    }
}
  • 再给元素添加 animation:动画名称 时长

动画属性

/* 动画名称 */
animation-name: 名称;
/* 播放时长  1s=1000ms*/
animation-duration: 1s;
/* 动画延迟 */
animation-delay: 1s;
/* 动画停在那个状态
    backwards  开始一帧
    forwards   最后一帧 */
animation-fill-mode: backwards;
/* 播放次数 默认播放一次   infinite  */
animation-iteration-count: infinite;
/* 动画速度曲线  linear匀速*/
animation-timing-function: ease;
/* 反方向播放 */
animation-direction: alternate;
}
.box:hover {
/* 暂停动画 */
animation-play-state: paused;
}

连写属性

animation:动画名称 动画时长 速度曲线 延迟时间 重复次数 动画方向 执行完状态

  • 动画名称和时长必须负值
  • 不分先后顺序
  • 如果有两个时间值 第一个表示动画时长 第二个表示延迟时间

逐帧动画steps

animat-timing-function:steps(份数)
  • 将动画分成N份

多组动画

animation: dong 5s steps(12) infinite,
           yi 25s infinite linear;
  • animation :

    动画1,

    动画2;

移动端特点

移动端和PC端同异

  • PC屏幕大 ,网页固定版心
  • 手机屏幕小,网页宽度100%

分辨率

屏幕尺寸

  • 指的是屏幕对角线长度,一般用英寸表示

分辨率

  • 硬件分辨率(出厂设置)
  • 缩放调节的分辨率 (软件设置)

分辨率分类

  • 物理分辨率(固定的,不可改变)
  • 逻辑分辨率(由软件驱动决定的)网页制作参考的分辨率

视口

  • 默认情况下网页宽度和逻辑分辨率不同

  • 默认是980px

    解决方法:添加视口

    
    
    • viewport:视口
    • width=device-width 视口宽度=设备宽度
    • initial-scale=1.0 缩放1倍(不缩放)

二倍图

  • 为了高分辨率下图片不会失真

  • 测量二倍图

百分比布局

  • 也叫流式布局
  • 宽度自适应,高度固定

Flex布局

  • 是一种浏览器提倡的布局模型
  • 布局更简单,灵活
  • 避免脱标问题
  • 父元素添加 display:flex
  • 行内元素作为弹性盒子的子元素可以直接设置宽高

主轴对齐方式 justify-content

  • 主轴对齐方式 写在弹性容器

  • /* 默认值,起点开始依次排列*/
    justify-content: flex-start; 
    /* 从终点开始一次排列*/
    justify-content: flex-end; 
    /* 居中排列*/
    justify-content: center;    
    /* 两端是中间等距的一半 */
    justify-content: space-around;   
    /* 两端对齐 中间等距 */
    justify-content: space-between;   
    /* 两端等距 */
    justify-content: space-evenly;
    

侧轴对齐方式 align-items

  • 侧轴对齐方式

  • align-items (添加到弹性容器)

    /* 默认值  起点开始依次排列  不拉伸*/
    align-items: flex-start;
    /* 终点开始排列 */
    align-items: flex-end;
    /* 居中 */
    align-items: center;
    /* 默认值 盒子拉伸铺满容器 */
    align-items: stretch;
    
  • align-self (控制某个盒子添加到弹性盒子)

    /* 默认值  起点开始依次排列  不拉伸*/
    align-self: flex-start;
    /* 终点开始排列 */
    align-self: flex-end;
    /* 居中 */
    align-self: center;
    /* 默认值 盒子拉伸铺满容器 */
    align-self: stretch;
    

伸缩比 flex

  • flex:整数;
  • 只占用父元素剩余的尺寸

垂直排列 flex-direction

  • 修改主轴方向

  • display: flex;
    /* 主轴修改为垂直 */
    flex-direction: column;
    /* 默认值 水平 */
    flex-direction: row;
    /* 行从右到左 */
    flex-direction: row-reverse;
    /* 列从下向上 */
    flex-direction: column-reverse;
    
  • 主轴和侧轴互换位置

多行排列 flex-wrap

  • flex-wrap:wrap;
  • 一行排列多个 ,放不下换行

多行子元素侧轴对齐

/* 侧轴居中 */
align-content: center;
/* 拉伸 */
align-content: stretch;
/* 默认值 从侧轴开始位置对齐 */
align-content: flex-start;
/* 从侧轴结束位置对齐*/
align-content: flex-end;
/* 两端是中间等距的一半 */
align-content: space-around;
/* 两端对齐 中间等距 */
align-content: space-between;
/* 两端等距 */
align-content: space-evenly;

溢出部分显示省略号

单行

/*设置父元素宽度 不设置的话子元素过宽会挤压 边上的子元素*/
min-width: 0;
/*文字强制显示一行*/
white-space: nowrap;
/*文字溢出显示省略号*/
text-overflow: ellipsis;
/*溢出隐藏*/
overflow: hidden;

多行

/*溢出隐藏*/
overflow: hidden;
/*文字溢出显示省略号*/
text-overflow: ellipsis;
/*作为弹性伸缩盒子模型显示*/
display: -webkit-box;
/*设置第几行添加省略号*/
-webkit-line-clamp: 3;
/*从上到下垂直排列子元素*/
-webkit-box-orient: vertical;

移动端导航栏滑动

移动适配

长度单位

  • rem :目前多数企业在用
  • vw/vh :未来的解决方案

rem

  • 相对单位
  • 1rem=1HTML字号大小
  • rem单位的尺寸 = px单位数值/基准跟字号

rem和em区别

  • 1rem=1HTML字号大小 ,跟随根标签文字大小在变化
  • 1em=1盒子的字号大小

vw / vh

  • 相对于视口计算
  • 1vw = 1/100视口宽度
  • 1vh = 1/100视口高度
  • vw/vh 不能一块用

媒体查询

  • 根据设备的宽度,设置差异化样式

  • 常用写法

    max-width

    min-width

    @media (媒体特征) {
      选择器 {
        样式
      }
    }
    

外链CSS引入


flexible.js

  • 核心原理就是根据不同的视口宽度给网页中html根节点设置不同的font-size。
  • 把根标签的文字大小设置成当前屏幕的1/10
  • 1rem=1/10屏幕宽度

less语法

  • css不支持算法 可以通过less实现
  • less是一个css预处理器,less文件后缀
  • 使css具备一定的逻辑性,计算能力
  • 注意:网页不识别less,引入对应的css文件

less 语法

  • 单行注释

    // 注释内容

    Ctrl+/

  • 块注释

    /**/

    shift+alt+A

less 运算

  • 加,减,乘 直接写

  • 除法 需要添加小括号

  • width: 100 + 50px;
    height: 100 - 50px;
    width: 100 * 50px;
    height: (100 / 50px);
    

less 嵌套

.father {
    color: aqua;
    .son {
        color: #000;
        &:hover {
            color: red;
        }
    }
}
  • 可以生成后代选择器
  • & 不生成后代选择器,表示当前选择器 通常配合伪类或伪元素

less 容器

@red: red;
div {
    color: @red;
}
  • 文字文字颜色基本都是统一的
  • 方便更换

less 导入less文件

  • @import “文件路径” ;
  • 可以省略.less 后缀

less 导出css文件

  • 设置-搜索Easy less - 在setting.json中编辑

  • 添加

  • "less.compile": {
        "out": "../css/"
    }
    
  • 让less都有同样的导出路径

  • 第二种

  • 在要导出的less文件第一行添加

  • // out: ./路径/
    或
    // out: ./路径/名字.css
    

禁止导出

// out: false

Bootstrap

  • 引入css

    
    
  • 用插件,需要链入两个js,必须首先链入jquer.js,再链入bootstrap.js