万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改。作为新HTML语言,具有新的元素,属性和行为。
XHTML和HTML5区别:
新增语义化标签
:头部标签
:导航标签
:内容标签
:块级标签
:侧边栏标签
:尾部标签多媒体标签包含两个,具体如下:
使用它们可以很方便的在页面中嵌入视频,而不再去使用落后的flash和其他浏览器插件。
HTML5在不使用插件的情況下也可以原生的支持音频格式文件的播放,当然支持格式是有限的。
1. 音频格式
当前,
2.
<audio src="文件地址" controls="controls">audio>
多种格式:
<audio controls="controls">
<source src="happy.mp3" type="audio/mpeg">
<source src="happy.ogg" type="audio/ogg">
audio>
3.
<video src="文件地址" controls="controls">video>
多种格式:
<video controls="controls" width="300">
<source src="happy.ogg" type="video/ogg">
<source src="happy.mp4" type="video/mp4">
video>
2. 视频标签常见属性
注:Chrome浏览器吧自动播放功能给禁用了,解决方案是:给视频添加静音属性
3. 总结
<button>按钮button>
<button>按钮button>
<button disabled="disabled">按钮button>
<button disabled="disabled">按钮button>
button[disabled]{
cursor: pointer; // 选择具有disabled属性的button标签
}
注:类选择器、属性选择器、伪类选择器,权重为10
nth-chlid(n)
eq:
ul li:nth-child(5n){
// li元素中5的倍数
}
总结:nth-child(n) 选择父元素里面的第n个孩子,它不管里面的孩子是否为同一种类型。
-of-type
选择指定类型的元素
div span:first-of-type{
//选择div中的第一个span
}
div::before {
content:'我'
}
div::after{
content:'小猪佩奇'
}
<div>是div>
注意:
转换(transform)是CSS3中具有覆性的特征之一,可以实现元素的位移、旋转、缩放等效果。转换(transform)可以简单理解为变形
2D转换是改变标签在二维平面上的位置和形状的一种技术,先来学习二维坐标系
2D移动是2D转换里面的一种功能,可以改变元素在页面中的位置,类似定位。
1. 语法
transform: translate(x,y); // x就是x轴上移动的位置,y就是y轴上移动的位置,中间用逗号分隔
// 分开写
transform: translateX(n);
transform: translateY(n);
2. 重点
2D旋转指的是让元素在2维平面内顺时针旋转或者逆时针旋转。
transform:rotate(度数)
鼠标hover旋转一圈:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Documenttitle>
<style>
div{
width: 100px;
height: 100px;
background-color: pink;
transition: all 1s; /* 过渡写到本身上,谁做动画给谁加 */
}
div:hover{
transform: rotate(360deg)
}
style>
head>
<body>
<div>div>
body>
html>
我们可以设置元素转换的中心点
1. 语法
transform-origin:x y;
2. 重点
transform-origin: left bottom; // 以左下角旋转
缩放,顾名思义可以放大和缩小。只要给元素添加上了这个属性就能控制它放大还是缩小。
transform:scale(x,y);
案例之分页按钮:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Documenttitle>
<style>
li{
width: 30px;
height: 30px;
border: 1px solid pink;
text-align: center;
line-height: 30px;
list-style: none;
float: left;
margin: 10px;
border-radius: 50%;
transition: all 0.8s;
}
li:hover{
transform: scale(1.3)
}
style>
head>
<body>
<ul>
<li>1li>
<li>2li>
<li>3li>
<li>4li>
<li>5li>
<li>6li>
ul>
body>
html>
注意:
**动画(animation)**是CSS3中具有颠覆性的特征之一,可通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果。相比较过渡,动画可以实现更多变化,更多控制,连续自动播放等效果。
制作动画分为两步:
1. 用keyframes定义动画(类似定义类选择器)
@keyframes 动画名称 {
0%{
width:100px;
}
100%{
width:200px;
}
}
动画序列
2. 元素使用动画
div {
/* 调用动画 */
animation-name: 动画名称;
/* 持续时间 */
animation-duration:持续时间;
}
示例:页面刷新,div向右移动500px,花费时间2s。
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Documenttitle>
<style>
@keyframes move {
/* 开始状态 */
0% {
transform: translateX(0px)
}
/* 结束状态 */
100% {
transform: translateX(500px)
}
}
div {
width: 100px;
height: 100px;
background: red;
/* 调用动画 */
animation-name: move;
/* 持续时间 */
animation-duration: 2s;
}
style>
head>
<body>
<div>div>
body>
html>
示例:页面刷新,div以右下左上四个方向走一圈
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Documenttitle>
<style>
@keyframes move {
0% {
transform: translate(0,0)
}
25%{
transform: translate(500px,0)
}
50%{
transform: translate(500px,300px)
}
75%{
transform: translate(0,300px)
}
100% {
transform: translateX(0,0)
}
}
div {
width: 100px;
height: 100px;
background: red;
/* 调用动画 */
animation-name: move;
/* 持续时间 */
animation-duration: 10s;
}
style>
head>
<body>
<div>div>
body>
html>
animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束的状态;
animation-timing-function:规定动画的速度曲线,默认是ease
注:steps就是分几步来完成我们的动画,有了steps就不要再写ease或者linear了
我们生活的环境是3D的,照片就是3D物体在2D平面呈现的例子。
有什么特点?
三维坐标系其实就是指立体空间,立体空间是由3个轴共同组成的。
3D转换我们主要学习工作中最常用的3D位移和3D旋转
主要知识点
3D移动在2D移动的基础上多加了一个可以移动的方向,就是z轴方向。
/* 分别向xyz轴移动100px */
transform: translateX(100px) translateY(100px) translateZ(100px);
/* 或写成:*/
transform: translate3d(100px,100px,100px);
在2D平面产生近大远小视觉立体,但是只是效果二维的
透视指的是人眼到屏幕的距离
透视写在被观察元素的父盒子上面的
body{
/* 透视写在被观察元素的父盒子上面 */
/* 值越小,人眼离屏幕越近,盒子越大 */
perspective:200px;
}
translateZ是物体到屏幕的距离
transform: translateZ(100px):仅仅是在Z轴上移动。有了透视,就能看到 translateZ引起的变化了
使用时,以下面标签组合为例:
<body>
<div>div>
<div>div>
<div>div>
body>
一般父元素给固定的perspective(透视),改变子元素的translateZ,实现不同的3D效果。
3D旋转指可以让元素在三维平面内沿着x轴,y轴,z轴或者自定义轴进行旋转。
对于元素旋转的方向的判断我们需要先学习一个左手准则。以x轴为例:
transform: rotate3d(x,y,z,deg):沿着自定义轴旋转deg为角度(了解即可)。
xyz是表示旋转轴的失量,是标示你是否希望沿着该轴旋转,最后一个表示旋转的角度。
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Documenttitle>
<style>
body {
perspective: 500px;
}
.box {
position: relative;
width: 200px;
height: 200px;
margin: 100px auto;
transform-style: preserve-3d;
transition: all 1s;
}
.box:hover {
transform: rotateY(45deg);
}
.box div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: pink;
}
.box div:last-child {
background: hotpink;
transform: rotateX(60deg);
}
style>
head>
<body>
<div class="box">
<div>div>
<div>div>
div>
body>
html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Documenttitle>
<style>
.box{
width: 200px;
height: 200px;
position: relative;
margin: 100px auto;
transform-style: preserve-3d;
transition: all 1s;
}
.box:hover {
transform: rotateY(180deg);
}
.box div{
width: 100%;
height: 100%;
position: absolute;
border-radius: 50%;
text-align: center;
line-height: 200px;
color: #ffffff;
font-size: 32px;
}
.front{
background: pink;
z-index: 10;
}
.back{
background: hotpink;
transform: rotateY(180deg); /* 前后背靠背 */
}
style>
head>
<body>
<div class="box">
<div class="front">adiv>
<div class="back">bdiv>
div>
body>
html>
案例:旋转木马
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>rotate picturetitle>
<style>
body{
perspective: 800px;
}
section{
width: 200px;
height: 100px;
margin: 100px auto;
position: relative;
transform-style: preserve-3d;
animation: rotate 10s linear infinite;
background: yellow;
}
@keyframes rotate{
0% {
transform: rotateY(0)
}
100% {
transform: rotateY(360deg)
}
}
section div{
width: 100%;
height: 100%;
background: pink;
position: absolute;
top: 0;
left: 0;
}
section div:nth-child(1){
transform: translateZ(300px);
}
section div:nth-child(2){
transform: rotateY(60deg) translateZ(300px);
}
section div:nth-child(3){
transform: rotateY(120deg) translateZ(300px);
}
section div:nth-child(4){
transform: rotateY(180deg) translateZ(300px);
}
section div:nth-child(5){
transform: rotateY(240deg) translateZ(300px);
}
section div:nth-child(6){
transform: rotateY(300deg) translateZ(300px);
}
style>
head>
<body>
<section>
<div>div>
<div>div>
<div>div>
<div>div>
<div>div>
<div>div>
section>
body>
html>
浏览器私有前缀是为了兼容老版本的写法,比较新版本的浏览器无须添加。
1. 私有前缀
2. 提倡写法
-moz-border-radius:10px;
-webkit-border-radius:10px;
-o-border-radius:10px;
border-radius:10px;
参考B站pink老师视频教程:https://www.bilibili.com/video/BV1wJ411H7sa?p=1