前端html5+css3+移动端项目实战(基于黑马程序员视频的笔记)

161 阅读6分钟

一、CSS补充

1、字体图标

  • 字体图标展示的是图标,本质是字体

  • 处理简单、颜色单一的图片

  • 优点

    • 灵活地修改样式,如:尺寸、颜色
    • 体积小、渲染快、降低服务器请求次数
    • 几乎兼容所有主流浏览器
    • 使用方便:下载字体包,使用字体图标

使用:引入样式表,调用类名,必须同时调用iconfonticon-xxx图标对应的类名

2、平面转换

使用transform属性实现元素的位移、旋转、缩放等效果

① 位移

transform:translate(水平移动距离,垂直移动距离);  /* 像素或百分比 */
  • transform()只给一个值表示按x轴方向移动
  • 单独设置某个方向移动:transformX()或者transformY()
  • 使用left:50%;top:50%;transform:translate(-50%,-50%);实现盒子在父容器中定位居中

② 旋转

transform:rotate(角度);    /* 角度单位是deg,正顺负逆 */

③ 转换原点

transform:origin:原点水平位置 原点垂直位置;
  • 默认圆点是转换原点
  • 取值可取方位名词:left、top、right、bottom、center
  • 该属性添加给标签本身,不要加给hover

④ 多重转换

transform:translate() rotate();
  • rotate()会改变坐标轴向,位移方向会受影响,所以一般translate()写在前面,坐标轴向就不会受影响

⑤ 缩放

transform:scale(X轴缩放倍数,Y轴缩放倍数);
  • 一般只设置一个值,表示X和Y轴等比缩放
  • scale>1表示放大,<1表示缩小

3、渐变

渐变一般用来设置盒子的背景

background-image:linear-gradient(颜色1,颜色2);

常用的半透明渐变:

background-image:linear-gradient(
    transparent,
    rgba(0,0,0,.6)
);

4、空间转换

image.png

① 位移

transform:translate3d(x,y,z);
transform:translateX();
transform:translateY();
transform:translateZ();
/* 取值是像素或百分比 */

② 透视

perspective:像素;  /* 一般在800-1200 */

透视距离就是人的眼睛到屏幕的的距离

image.png

③ 旋转

transform:rotateZ();
transform:rotateY();   /* 正右边向屏幕内 */
transform:rotateX();   /* 正上边向屏幕内 */

image.png

④ 空间旋转

rotate3d(x,y,z,角度度数);
  • 设置自定义旋转轴的位置及旋转的角度
  • x,y,z取0-1之间的数字

⑤ 立体图形

transform-style:preserve-3d;
  • 使子元素处于真正的3D空间
  • 默认值flat,表示处于2D平面展现

⑥ 缩放

transform:scaleX(倍数);
transform:scaleY(倍数);
transform:scaleZ(倍数);
transform:scale3d(x,y,z);

5、动画

① 动画的基本使用

/* 定义动画 */
@keyframes ani_name{
    from{
        
    } to {
        
    }
}

/* 定义动画 */
@keyframes ani_name{
    /* 根据动画时长占比来分配不同状态 */
    0% {}
    10% {}
    50% {}
    100% {}
}

.box{    
    /* 使用动画 */
    animation:ani_name 2s;
}

② 动画属性

animation:动画名称 动画时长 速度曲线 延迟时间 重复次数 动画方向 执行完毕时状态;
  • 动画名称和时长必须赋值

  • 取值不分先后

  • 若有两个时间值,第一个表示动画市场,第二个表示延迟时间

  • step(n)将动画分为 n 步执行,即逐帧动画,一般配合精灵图使用

  • 重复次数设置为infinite表示无限循环

  • 动画方向alternate表示反向执行

  • 执行完毕时状态

    • backwards:默认值,动画停留在最初状态
    • forwards:动画停留在结束状态

image.png

  • 多组动画:animation:动画1 动画2 动画n;

实现走马灯:

image.png

二、移动网页

1、视口

通过添加meta属性适应移动端窗口

<meta name="viewport" content="width=device-width, initial-scale=1.0">

2、flex布局

  • 是一种浏览器提倡的布局模型
  • 布局网页更简单、灵活
  • 避免浮动脱标的问题

父级元素添加dispaly:flex,子元素可以自动的挤压或拉伸

image.png

① 主轴对齐方式

justify-content

image.png

② 侧轴对齐方式

align-items:添加到弹性容器

align-self:添加到弹性盒子,可以单独控制某个盒子在侧轴的对齐方式

image.png

③ 弹性伸缩比

flex:整数

  • 只占用父盒子剩余尺寸

④ 修改主轴方向

flex-direction:;
  • row:行,水平,默认值
  • column:列,垂直
  • row-reverse:行,从右向左
  • column-reverse:列,从下向上

⑤ 弹性盒子换行

  • 弹性盒子默认不换行,会产生挤压
  • 可以添加flex:wrap;来实现换行效果

⑥ 行对齐方式

align-content:;
  • center
  • space-around
  • space-between

移动适配

  • rem:目前
  • vw/vh:未来

3、rem

实现屏幕宽度不同,网页元素尺寸不同

  • px是绝对单位,百分比布局只能宽度自适应,高度固定
  • rem是相对单位,是相对于HTML标签的字号计算结果
  • 1 rem = 1 HTML标签字号大小

手机屏幕大小分辨率不同,如何设置不同的HTML标签字号?

① 媒体查询

媒体查询能够检测视口的宽度,然后编写差异化的CSS样式

@media (媒体特性){
    选择器 {
        CSS属性
    }
}

/* 如 */
@media (width:375px){
    html {
        font-size:40px;
    }
}

设备宽度不同,HTML标签字号设置多少合适?

② rem选单位

  • 目前rem布局方案中,将网页等分成十份,HTML标签的字号为视口宽度的1/10

③ 确定具体标签rem值

??px除以十分之一视口宽度,即该标签的rem

④ flexible移动适配

详见JS

4、less

  • less是一个CSS预处理器,文件后缀是.less
  • 扩充了CSS语言,使CSS语言具备一定的逻辑性,计算能力(CSS不能直接计算)
  • 浏览器不识别less代码,要引入对应生成的CSS

① 运算

// 加减乘直接写表达式,除法需添加`()`或`.`
width:(100 / 20rem);
height:100 ./ 20rem;

② 嵌套

.father{
    width:100px;
    .son{
        color:pink;
        // & 表示当前选择器
        &:hover{
            color:green;
        }
    }
}
// 等价于下面的
.father{
    width:100px;
}
.father .son{
    color:pink;
}
.father .son:hover{
    color:green;
}

③ 变量

// 定义
@colora:pink;
// 使用
.box{
    color:@colora;
}

④ 导入

@import 'base.less'
@import 'index'   // less文件可以省略后缀名

⑤ 导出

插件导出: image.png

// 在less文件开头添加
// 单独导出
// out:路径/(文件名,可选)

// 禁止导出
// out:false

5、vw/vh

view widthview height

  • 是相对视口的尺寸计算的结果
  • 1 vw = 1/100 视口宽度
  • 1 vh = 1/100 视口高度
  • 不可以混用vwvh,在全面屏会出问题(因为vh很大)

三、响应式网页

1、媒体查询

@media (媒体特性){
    选择器{
        样式
    }
}
  • 媒体特性常用写法

    • 视口宽高:widthheight
    • 视口最大宽高:max-widthmax-height
    • 视口最小宽高:min-widthmin-height
    • 屏幕方向:orientation:portrait/landscape,即竖屏/横屏
  • CSS具有层叠性,min-width从小到大写,max-width从大到小写

  • 外链式引入

    <link rel="styleshert" href="" media="(min-width:900px)">
    

2、BootStrap

① 栅格系统

image.png

  • container:版心样式,自带左右各15px的padding
  • row:自带左右-15px的padding,可抵消container的padding
  • container-fluid:宽度100%,自带左右各15px的padding

② 看文档