黑马程序员技术交流社区
标题:
移动开发h5c3学习笔记.
[打印本页]
作者:
张起灵.
时间:
2019-4-10 00:26
标题:
移动开发h5c3学习笔记.
本帖最后由 张起灵. 于 2019-4-10 01:26 编辑
第一天:
电脑 pc端页面布局(html+css)
移动端页面布局(html5 + css3 )
手机
ipad
html5:
1)新增的语义化标签
(1)header 头部标签
<header><header/>
(2)nav 导航标签
<nav><nav/>
(3)article 内容标签
<article><article/>
(4)section 块级标签
<section><section/>
(5)aside侧边栏标签
<aside><aside/>
(6)footer 尾部标签
<footer><footer/>
2)音频标签
1)语法: <audio src="音频路径" controls="controls"></audio>
<audio controls="controls">
<source src="media/snow.mp3" type="audio/mpeg" />
<source src="media/snow.ogg" type="audio/ogg" />
</audio>
2)属性:
(1)autoplay="autoplay"
如果出现该属性,则音频在就绪后马上播放。
(2)controls="controls"
如果出现该属性,则向用户显示控件,比如播放按钮。
(3)loop="loop"
如果出现该属性,则每当音频结束时重新开始播放。
(4)preload="preload"
如果出现该属性,则音频在页面加载时进行加载,并预备播放。 如果使用 "autoplay",则忽略该属性。
(5)src="路径"
要播放的音频的 URL。
3)浏览器兼容性处理:
注:不同浏览器支持的格式不同,解决浏览器兼容问题
注:谷歌浏览器必须加静音属性,才能实现自动播放
4)游戏官网、宣传页面,加背景音乐
3)视频标签
1)语法:
(1) <video src="音频路径" controls="controls"></video>
(2) <video muted="muted" loop="loop" poster="media/pig.jpg" controls>
<source src="media/video.mp4" type="video/mp4" />
<source src="media/video.ogg" type="video/ogg" />
</video>
2)属性:
(1)autoplay=“autoplay”
视频就绪自动播放(谷歌浏览器需要添加muted来解决自动播放问题)
(2)controls=“controls”
向用户显示播放控件
(3)loop=“loop”
播放完是否继续播放该视频,循环播放
(4)muted=“muted”
静音播放
(5)preload=“auto”(预先加载视频)
preload=“none”(不预先加载视频)
规定是否预加载视频(如果有了autoplay 就忽略该属性)
(6)poster="文件路径"
加载等待的画面图片
3)浏览器兼容性处理:
注:不同浏览器支持的格式不同,解决浏览器兼容问题
注:谷歌浏览器必须加静音属性,才能实现自动播放
4)新增的input表单标签
语法:<input type="输入类型"> 输入类型:
(1)type="email"
限制用户输入必须为Email类型
(2)type="url"
限制用户输入必须为URL类型
(3)type="date"
限制用户输入必须为日期类型
(4)type="time"
限制用户输入必须为时间类型
(5)type="month"
限制用户输入必须为月类型
(6)type="week"
限制用户输入必须为周类型
(7)type="number"
限制用户输入必须为数字类型
(8)type="tel"
手机号码
(9)type="search"
搜索框
(10)type="color"
生成一个颜色选择表单
5)新增的表单属性
(1)required=“required”
表单拥有该属性表示其内容不能为空,必填
(2)placeholder="提示文字"
表单的提示信息,存在默认值将不显示
(3)autofocus=“autofocus”
输入光标自动聚焦到指定输入框
(4)autocomplete=”on “ (默认)打开
autocomplete =”off” 关闭
当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在字段中曾经已填写的选项
(5)disabled="disibled"
使按钮不能点击
(6)
multiple="
multiple
"
可以多选文件提交
css3:
1)属性选择器
根据属性名
根据属性值
语法:(1)div[att] 选择具有att属性的div元素
(2)div[class="val"] 选择具有class属性且属性值等于val的div元素
(3)div[class^="val"] 匹配具有class属性,且属性值为val开头div元素
(4)div[class$=''val''] 匹配具有class属性,且属性值为val结尾div元素
(5)div[class*=''val''] 匹配具有class属性,且属性值中含有val结尾div元素
2)结构伪类选择器
语法:
(1) ul li:first-child
选择ul里第一个li
(2)ul li:last-child
选择ul里最后一个li
(3)ul li:nth-child(6)
选择ul里第6个li
ul li:nth-child(even)
选择ul里偶数的li标签
ul li:nth-child(odd)
选择ul里奇数的li标签
ul li:nth-child(2n)
选择ul里2*n的li标签,也可以(3n)(4n).... n从0开始计算,2n相当于选择偶数
ul li:nth-child(n+5)
选择ul里从第5个开始后的所有li,包含第五个
ul li:nth-child(-n+5)
选择ul里第5个li前的所有li,包含第五个
注::nth-child(n) 选择父元素里的第n个孩子,不管是否是同一种类型
(4)div span:first-of-type
选择div里第一个span
(5)div span:last-of-type
选择div里最后一个span
(6)div span:nth-of-type(2)
选择div里第2个span,也可以(3)(4)......
3)伪元素选择器
语法:
(1)div::before {content:"内容"} 在div里的内容前添加一个内容
(2)div::after {content:"内容"}
在div里的内容后添加一个内容
注:1.必须有content属性,但可以为空内容
2.before和after会创建一个行内元素,可以通过display转为行内块
2D转换(变换)transform(移动,旋转,缩放)
(移动)语法:
(1)transform:translate(x,y)
连写
(2)transform:translateX(100px)
向x轴移动100px,X为大写
(3)transform:translateY(100px)
向y轴移动100px,Y为大写
注:1.X,Y为大写
2.translate类似定位,不会影响到其他元素的位置
3.transform:translateX(50%),表示向x轴移动自身宽度的一半
4.对行内标签没有效果
让盒子垂直居中,水平居中
(1)transform:translate(-50%,-50%)
注:同样要使用子绝父相
(旋转)语法:
(1)transform:rotate(度数deg); 顺时针
(2)transform:rotate(-度数deg); 逆时针
注:通常和过渡一起使用
模拟三角:
1.使用伪元素添加一个正方形盒子,给正方形只设置两个边框
2.定位到指定位置
3.旋转45度
转换中心点 transform-origin
语法:(1)transform-origin:left top;等
注:1.可以是方位名词
(2)transform-origin:x y;例:transform-origin:50px 50px;
注:2.可以是像素值
(3)transform-origin:0; 只写一个值的时候 第二个值默认为 50%;
2d缩放 scale
语法:转换的属性值为 scale(宽的倍数,高的倍数) ;
(1)transform-scale(2,2);或transform-scale(2);
注:修改了宽高为原来的2倍
(2)transform-scale(.5,.5);或transform-scale(.5);
注:缩小了1倍
2D旋转综合写法
语法:transform:translate()rotate(度数deg) scale(.5,.5);
注:1.顺序.位移,旋转,缩放
2.顺序不能变更,有位移及其他属性时,位移必须最前面
动画
语法: /* 我们想页面一打开,一个盒子就从左边走到右边 */
/* 1. 定义动画 */
@keyframes 名称 {
/* 开始状态 */
0% {
transform: translateX(0px);
}
/* 结束状态 */
100% {
transform: translateX(1000px);
}
}
div {
width: 200px;
height: 200px;
background-color: pink;
/* 2. 调用(使用)动画 */
/* 动画名称 */
animation-name: 名称;
/* 持续时间 */
animation-duration: 2s;
}
注:必须属性:动画名称,动画执行时间
常用属性:
1. 动画名
设置要使用的动画名 animation-name:xxx;
2. 持续时间
设置动画播放的持续时间 animation-duration:3s;
3. 速度曲线
和设置过渡的速度曲线一样 animation-timing-function:linear;
linear: 匀速
ease: 慢-快-慢 (逐渐慢下来) 默认值
ease-in: 慢-快。(加速)
ease-out: 快-慢。(减速)
ease-in-out: 慢-快-慢。(先加速后减速)
steps(2) 设置分几步完成动画效果
4. 延迟时间
animation-delay: 0s; 默认是0
5. 循环次数
设置动画播放的循环次数 animation-iteration-count: 2;
infinite 为无限循环
6. 循环方向
animation-direction:normal;
1. normal 默认值 ,正向运行
2. reverse 反向运行
3. alternate 正-反-正... (倒车)
4. alternate-reverse 反-正-反..
5. 以上与循环次数有关
7. 动画结束状态:
animation-fill-mode 设置动画在等待或者结束的时候的状态
forwards:动画结束后,元素样式停留在 100% 的样式
backwards: 在延迟等待的时间内,元素样式停留在 0% 的样式(默认)
both: 同时设置了 forwards和backwards两个属性值
注:有了无限播放就不要结束状态
8. 暂停和播放
animation-play-state 控制 播放 还是 暂停
running 播放
paused 暂停
注:一般鼠标悬停(hover)时使用此属性
动画简写
语法:animation:动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或结束的状态;
animation: name duration timing-function delay iteration-count direction fill-mode;
注:1.前两个属性必须写,暂停动画不在简写里
2.给同一个盒子加两个动画,中间用逗号隔开animation: name duration,name duration;
3D transform:translate3d
语法:
移动:1. transform:translate3d(x,y,z) 其中 x y z 分别指要移动的轴的方向的距离(简写)
2. translform:translateX(100px) 仅仅是移动在x轴上移动
3. translform:translateY(100px) 仅仅是移动在Y轴上移动
4. translform:translateZ(100px) 仅仅是移动在Z轴上移动 (一般用px为单位)
注:1.xyz不能省略,没有的用0表示
2.z轴是垂直屏幕的方向,到眼睛的方向是正值
旋转:1. transform:rotateX(45deg); 沿着x轴正方向旋转 45度
2. transform:rotateY(45deg) 沿着y轴正方向旋转 45deg
3. transform:rotateZ(45deg) 沿着Z轴正方向旋转 45deg
4. transform:rotate3d(x,y,z,deg) 沿着自定义轴旋转 deg为角度 了解即可
注:1.x轴旋转时正值为往后倒,负值往前倒。(耍单杠)
2.y轴旋转时正值为往右转,负值往左转。(钢管舞)
3.z轴旋转时正值为往右转,负值往左转。(抽奖转盘)
透视 perspertive:100px;
注:1.给需要呈现3d效果的父盒子添加这个值
2.使用3d时必须设置这个值
3d呈现 transform-style
transform-style: flat; 平面模式,不开启3维立体环境
transform-style: preserve-3d; 3维立体环境
注: 代码写给父级,但是影响的是子盒子
过渡transition
语法:1.transition-duration 定义过渡效果花费的时间。默认是 0。
2.transition-property 规定应用过渡的 CSS 属性的名称。
3.transition-timing-function 规定过渡效果的时间曲线。默认是 "ease"。
4.transition-delay 规定过渡效果何时开始。默认是 0。
简写:transition: 要过渡的属性 花费时间 运动曲线 何时开始;
例:transition: all (全部属性) 1s(运动完成所需时间) linear(匀速) 1s(延迟1秒运动);
常用:transition: all 1s;
属性值:运动曲线: linear: 匀速
ease: 慢-快-慢 (逐渐慢下来) 默认值
ease-in: 慢-快。(加速)
ease-out: 快-慢。(减速)
ease-in-out: 慢-快-慢。(先加速后减速)
旋转木马案例
注:1.先放6张图片在同一位置,每张图片沿y轴转60度,依次度数变大60度,并沿z轴前移300px。
css3兼容处理
- 谷歌 -webkit
- 火狐 -moz
- IE -ms
-欧朋-o-
注:如对 border-radius 进行兼容性处理
-webkit-border-radius: 30px 10px;
-moz-border-radius: 30px 10px;
-ms-border-radius: 30px 10px;
border-radius 一定要放在最后
border-radius: 30px 10px;
如果发现添加前缀也解决不了兼容性问题,那么就不要使用该css3属性
理想视口 ideal viewport
语法:<meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
属性:
1.背景缩放background-size
语法: background-size: 图片的宽度 图片的高度;
注:1.background-size: 500px; 只写一个参数 肯定是宽度 高度省略了 会等比例缩放
2.background-size: 50%; 里面的单位可以跟% 相对于父盒子来说的
3. background-size: cover; cover 等比例拉伸 要完全覆盖div盒子 可能有部分背景图片显示不全
4. background-size: contain; 高度和宽度等比例拉伸 当宽度 或者高度 铺满div盒子就不再进行拉伸了 可能有部分空白区域
CSS3盒子模型box-sizin
语法:box-sizing: border-box;
注:1.移动端使用,加到盒子的css中去
2.好处:padding和border不会撑大盒子
移动端特殊样式
/*CSS3盒子模型*/
box-sizing: border-box;
-webkit-box-sizing: border-box;
/*点击高亮我们需要清除清除 设置为transparent 完成透明*/
-webkit-tap-highlight-color: transparent;
/*在移动端浏览器默认的外观在iOS上加上这个属性才能给按钮和输入框自定义样式*/
-webkit-appearance: none;
/*禁用长按页面时的弹出菜单*/
img,a { -webkit-touch-callout: none; }
移动端常见布局
1. 流式布局(百分比布局)
语法:width:100%; 100%代表为浏览器显示的宽度
注:max-width 最大宽度 (max-height 最大高度)
min-width 最小宽度 (min-height 最小高度)
设置浏览器拉伸时最大和最小的显示宽度和高度,也就是让他不能无限放大或缩小
2. flex 弹性布局(强烈推荐)
less+rem+媒体查询布局
混合布局
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2