使用语义化标签的好处是增强了代码的可阅读性,也方便了网站的seo(Search Engine Optimization,搜索引擎优化)。
h5表单分为三大部分来学习 输入标签、表单属性 和 表单事件
text password radio checkbox button file hidden submit reset image
email 邮箱
url 网址
search 搜索
tel 电话
日期等
number 数字输入框
range 范围
color 颜色
#000000
datalist 可输入表单
placeholder:占位符-提示信息
autofocus:自动获得焦点-一般页面中放1个
autocomplete 自动完成
autocomplete=on
关闭 autocomplete =off
multiple:可以多选文件提交
一起使用form属性,可以将输入标签放在表单的外面,还受到表单的管理
<form action="" id="ff" >
<input type="submit" value="提交">
form>
<input type="text" required form="ff" >
required:必填验证
novalidate:关闭验证
pattern:自定义验证-通过编写正则表达式自定义验证规则 一般和required同时使用
多媒体标签分为 音频 audio 和视频 video 两个标签 使用它们,我们可以很方便的在页面中嵌入音频和视频,而不再去使用落后的flash和其他浏览器插件了。
因为多媒体标签的 属性、方法、事件比较多,因此我们需要什么功能的时候,就需要去查找相关的文档进行学习使用。
使用
<audio src="小猪佩奇.mp3" autoplay> audio>
支持的格式
格式 | MIME-type |
---|---|
MP3 | audio/mpeg |
Ogg | audio/ogg |
Wav | audio/wav |
使用
<video src="小猪佩奇.mp4" autoplay controls >video>
支持的格式
格式 | MIME-type |
---|---|
MP4 | video/mp4 |
WebM | video/webm |
Ogg | video/ogg |
video常用属性、方法、事件
属性 | 方法 | 事件 |
---|---|---|
duration 视频播放时长 | play 播放 | canplay 视频加载完毕 准备播放 |
currentTime 当前播放进度 | pause 暂停 | timeupdate 播放时-持续触发 |
volume 音量大小 |
source标签
可以通过在多媒体标签内加入source标签,用来指定多个播放路径,当第一个source标签的路径出错时,自动会切换到第二个source标签
<video >
<source src="1.mp4">
<source src="2.mp4">
<source src="3.mp4">
video>
object-fit属性
当video标签视频内容宽度没有铺满video标签时,可以在css写上 该属性即可
video {
/* 让视频内容铺满整个video标签 */
object-fit: fill;
}
因为多媒体标签在不同的浏览器下是不一样的外观,我们有时候需要统一所有的样式,所以就需要我们自己使用**div + 多媒体 **的一些api实现 控制条工具 。
以下属性 是要直接写在标签上的 如 autoplay controls
<video src="小猪佩奇.mp4" autoplay controls >video>
属性 | 值 | 描述 |
---|---|---|
autoplay | autoplay | 如果出现该属性,则音频在就绪后马上播放。 |
controls | controls | 如果出现该属性,则向用户显示控件,比如播放按钮。 |
loop | loop | 如果出现该属性,则每当音频结束时重新开始播放。 |
muted | muted | 规定视频输出应该被静音。 |
preload | preload | 如果出现该属性,则音频在页面加载时进行加载,并预备播放。如果使用 “autoplay”,则忽略该属性。 |
src | url | 要播放的音频的 URL。 |
伪类选择符其实我们在基础班就已经学习过一些了,看看它们的大家族
因为有些常用 有些不常用。所以我们就只学习常用的即可
匹配父元素的第一个子元素E。
<style>
ul li:first-child{
background-color: red;
}
style>
<ul>
<li>列表项一li>
<li>列表项二li>
<li>列表项三li>
<li>列表项四li>
ul>
E:last-child 则是选择到了最后一个li标签
匹配到父元素的第n个元素 或者 是倒数第n个元素
相比 E:first-child
则要强大了不少,功能如下 (死记硬背是最好的)
匹配到父元素的第2个子元素
ul li:nth-child(2){}
匹配到父元素的倒数第2个子元素
ul li:nth-last-child(2){}
匹配到父元素的序号为奇数的子元素
ul li:nth-child(odd){}
odd 是关键字 奇数的意思(3个字母 )
匹配到父元素的序号为偶数的子元素
ul li:nth-child(even){}
even(4个字母 )
匹配到父元素的前3个子元素
ul li:nth-child(-n+3){}
选择器中的 n 是怎么变化的呢?
因为 n是从 0 ,1,2,3… 一直递增
所以 -n+3 就变成了
匹配到父元素的后3个子元素
ul li:nth-last-child(-n+3){}
这里只讲明 E:nth-child(n) 和 E:nth-of-type(n) 的区别 剩下的 E:first-of-type E:last-of-type E:nth-last-of-type(n) 同理做推导即可
<style>
ul li:nth-child(2){
/* 字体变成红色 */
color: red;
}
ul li:nth-of-type(2){
/* 背景变成绿色 */
background-color: green;
}
style>
<ul>
<li>列表项一li>
<p>乱来的p标签p>
<li>列表项二li>
<li>列表项三li>
<li>列表项四li>
ul>
也就是说
E:nth-child(n)
匹配父元素的第n个子元素E。E:nth-of-type(n)
匹配同类型中的第n个同级兄弟元素E。E:before
E::before
想要让伪元素有效,必须遵循以下注意事项
E ::before
这个写法是错误的content:""
;2d转换是改变标签在2维平面上的位置和形状的一种技术,先来学习2维坐标系
2d移动是2d转换里面的一种功能,可以改变元素在页面中的位置,类似 定位
使用2d移动的步骤:
transform
translate(x,y)
如 transform:translate(50px,50px)
; div{
transform: translate(50px,50px);
}
translate:(50%,50%);
2d旋转指的是让元素在2维平面内顺时针旋转或者逆时针旋转
div{
transform: rotate(0deg);
}
使用步骤:
2d旋转有以下特点
该属性可以修改元素旋转的时候的中心点
缩放,顾名思义,可以放大和缩小。 只要给元素添加上了这个属性就能控制它放大还是缩小
步骤:
div{
transform:scale(2,3);
}
linear: 匀速
ease: 慢-快-慢 默认值
ease-in: 慢-快。
ease-out: 快-慢。
ease-in-out: 慢-快-慢。
4.延迟时间
animation-delay: 0s;
5.循环次数
设置动画播放的循环次数 animation-iteration-count: 2; infinite 为无限循环
6.循环方向
animation-direction
如在动画中定义了 0%:红色 100%:黑色 那么 当属性值为
7.动画等待或者结束的状态
animation-fill-mode 设置动画在等待或者结束的时候的状态
8.暂停和播放
animation-play-state 控制 播放 还是 暂停
running 播放 paused 暂停
animation: name duration timing-function delay iteration-count direction fill-mode;
animation:
name duration timing-function delay iteration-count direction fill-mode,
animation: name duration timing-function delay iteration-count direction fill-mode;
元素在动画结束之后,会自动触发的事件 animationend
var div = document.querySelector("div");
div.addEventListener("animationend", function () {
console.log("div的动画结束之后,触发");
})
1.引入css文件
<head>
<link rel="stylesheet" href="animate.min.css">
head>
2.给元素添加对应的class
<h1 class="animated infinite bounce">快来看看我h1>
animated 必须添加的class
infinite 无限播放
bounce 弹跳动画的效果,可以查官网自己选择喜欢的
css3涉及到较多的新属性,某些低版本(如ie8以及以下)的浏览器对css3的支持程度不够,因此需要做以下处理
添加对应的浏览器的前缀 常见前缀如下
如对 border-radius 进行兼容性处理
-webkit-border-radius: 30px 10px;
-moz-border-radius: 30px 10px;
-ms-border-radius: 30px 10px;
// border-radius 一定要放在最后
border-radius: 30px 10px;
3维坐标系其实就是指立体空间,立体空间是由3个轴共同组成的
3d移动在2d移动的基础上多加了一个可以移动的方向,就是z轴方向
语法:
注意:
因为z轴是垂直屏幕,由里指向外面,所以 默认是看不到元素在z轴的方向上移动,想要看到,可以使用视距 属性设置
perspertive 就是用来设置 人 和 物体 的距离
人在看物体时,有个规律,如 远的物体看起来小 近的物体看起来大
想要看到 物体 在z轴上的移动
/* 父元素 */
body {
/* 视距 */
perspective: 1000px;
}
/* 目标 */
div {
width: 200px;
height: 200px;
background-color: aqua;
margin: 100px auto;
/* z轴的移动 */
transform: translateZ(0px);
}
translateZ的值和perspertive都要大于0 否则容易出现兼容性问题
3d旋转指可以让元素在3维平面内沿着 x轴,y轴,z轴或者自定义轴进行旋转 对于元素旋转的方向的判断
让元素沿着 x轴正方向旋转90度
/* 沿着x轴正方向旋转90度 deg为单位 */
transform: rotateX(90deg);
3d缩放 可以控制元素 在 x轴,y轴,z轴上的缩放,也可以理解为 宽,高,厚度的缩放。
视距可以设置 人 和 物体 之间的距离 也就是z轴方向的距离
而 视距原点 可以设置 人 站在x轴和y轴的位置。
结合3d立方体案例理解,控制子元素是否开启3维立体环境