HTML5新增标签

HTML5针对以前的不足,新增了一些新的标签、表单以及表单属性等。

语义化标签

之前在做布局的使用,使用了大量的div,这些div都是没有语义的,我们不能很轻易的就判断出某个div大致是什么内容,所以在HTML5中新增了语义化标签来弥补这个缺陷,现在我们可以根据标签名去推断出其大致内容,方便代码的阅读,而且使用语义化标签也可以提高被搜索引擎检索的概率。

HTML5与CSS3知识点总结-LMLPHP

多媒体标签

HTML5原生支持音视频文件的播放,其中音频标签和视频标签的使用方式基本一致 。

<audio>标签支持三种音频格式,分别是MP3、Wav以及Ogg,其中MP3格式所有的浏览器都支持。

语法:
<audio src="文件地址" controls="controls"></audio>

<audio>标签常见属性👇

<video>标签支持三种视频格式,分别是MP4、WebM以及Ogg,其中MP4格式所有的浏览器都支持。

语法:
<video src="文件地址" controls="controls"></video>

其中<video>标签有很多属性,比较常见的有👇

input表单

在HTML5中,增加了一些新的input类型,使其语义化更加明显。

HTML5中不仅新增了一些input类型,还新增了一些表单属性👇

CSS3新增选择器

属性选择器

属性选择器可以在不用借助于类或者id选择器的情况下直接根据元素特定属性来选择元素,它的权重为10

<!-- 将具有value属性的按钮1中文字颜色修改为红色,按钮2因为不具有value属性,所以文字颜色没有改变 -->
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        input[value] {
            color: red;
        }
    </style>
</head>
<body>
    <input type="button" value="按钮1">
    <input type="button">
</body>

HTML5与CSS3知识点总结-LMLPHP

<!-- 将value属性值为 “按钮2” 的button的文字颜色修改为蓝色 -->
<head>
    <style>
        input[value="按钮2"] {
            color: blue;
        }
    </style>
</head>
<body>
    <input type="button" value="按钮1">
    <input type="button" value="按钮2">
</body>

HTML5与CSS3知识点总结-LMLPHP

结构伪类选择器

结构伪类选择器主要根据文档结构来选择元素,常用于根据父级元素选择里面的子元素

<head>
    <style>
        ul li:first-child {
            background-color: skyblue;
        }
        ul li:last-child {
            background-color: aquamarine;
        }
        ul li:nth-child(2) {
            background-color: blueviolet;
        }
    </style>
</head>
<body>
    <ul>
        <li>欢迎关注</li>
        <li>微信公众号:</li>
        <li>Robod</li>
    </ul>
</body>

HTML5与CSS3知识点总结-LMLPHP

这三个和上面三个使用起来类似,不过还是有一点区别的,nth-child是对父元素里面所有子元素排序选择(序号是固定的)先找到第n个孩子,然后看看是否和E匹配;而nth-of-type则是对父元素里面指定子元素进行排序选择,先去匹配E,然后再根据E找第n个子元素。

<head>
    <style>
        ul li:nth-child(1) {
            /* 先对ul里的所有子元素排序,找到序号为1的元素,发现是p标签而不是li,所以样式不生效 */
            background-color: skyblue;
        }
        div li:nth-of-type(1) {
            /* 先匹配对应的li元素,对li元素进行排序,排序后选择第一个li */
            background-color: skyblue;
        }
    </style>
</head>
<body>
    <ul>
        <p>微信公众号:Robod</p>     <!-- 序号是1 -->
        <li>欢迎关注</li>            <!-- 序号是2 -->
        <li>微信公众号:</li>
        <li>Robod</li>
    </ul>
    <div>
        <p>p</p>
        <li>li1</li>    <!-- 序号是1 -->
        <li>li2</li>    <!-- 序号是2 -->
    </div>
</body>

HTML5与CSS3知识点总结-LMLPHP

伪元素选择器

有的时候我们只需要一个简单的标签,如果用HTML做的话就会使代码结构变得复杂,这时候就可以用伪元素选择器,它可以帮助我们利用CSS创建新标签元素,从而简化HTML结构。伪元素选择器有两个,分别是::before(在元素内部的前面插入内容)和::after(在元素内部的后面添加内容),需要注意的是它们创建的元素是行内元素,而且在文档树里面是找不到的,这两个选择器必须要有content属性(可以没有值),伪元素选择器的权重是1

<!--语法:
	element::before{}
-->
<head>
    <style>
        div {
            position: relative;
            width: 300px;
            height: 200px;
            background-color: aquamarine;
        }
        div::before {
            content: '微信公众号';
        }
        div::after {
            position: absolute;
            font-size: 30px;
            content: "Robod";
            right: 10px;
        }
    </style>
</head>
<body>
    <div>
        :
    </div>
</body>

HTML5与CSS3知识点总结-LMLPHP

CSS3新特性

CSS3盒模型

之前我们在定义盒子大小的时候,指定了width属性,可是盒子实际的宽度并不是width,padding和border都会将盒子撑大,也就是实际的盒子宽度是width+padding+border,而现在可以用box-sizing来指定盒模型,box-sizing属性有以下两个值。

<head>
    <style>
        .box1 {
            width: 400px;
            height: 100px;
            border: 20px solid red;
            background-color: aqua;
            padding: 10px;
            box-sizing: content-box;
        }
        .box2 {
            width: 400px;
            height: 100px;
            border: 20px solid green;
            background-color: blanchedalmond;
            padding: 10px;
            box-sizing: border-box;
        }
    </style>
</head>
<body>
    <div class="box1">请小伙伴们给我的文章来个赞!</div>
    <div class="box2">欢迎关注微信公众号:Robod</div>
</body>

HTML5与CSS3知识点总结-LMLPHP

CSS3滤镜filter

filter属性将模糊或颜色偏移等图形效果应用于元素,通常用于调整图像,背景和边框的渲染。常用的几个函数如下:

calc()函数

calc()函数可以在声明CSS属性值时执行一些计算,例如:

width: calc(100% - 30px);		<!-- 表示比父盒子小30像素 -->

CSS3过渡

过渡动画是从一个状态渐渐的过渡到另外一个状态,通常和:hover一起搭配使用。

/*语法:*/
transition:要过渡的属性 花费时间 运动曲线 何时开始
/*参数说明 */
1、属性:想要变化的css属性,宽度高度背景颜色内外边距都可以,如果想要所有的属性都变化过渡,写一个 all 即可
2、花费时间:单位是秒(必须写单位)比如0.5s
3、运动曲线:默认是ease(逐渐慢下来,可以省略),还可以是linear(匀速),ease-in(加速),ease-out(减速),ease-in-out(先加速后减速)
4、何时开始:单位是秒(必须写单位),可以设置延迟触发时间默认是0s(可以省略)
<head>
    <style>
        div {
            width: 50px;
            height: 50px;
            background-color: aqua;
            /* 如果要写多个属性,用逗号隔开即可 */
            /* transition: width 1s ease-in-out .5s,height 1s ease-in-out .5s; */
            /* 如果所有的属性都要过渡,写 all 即可 */
            transition: all 1s ease-in-out .5s;
        }
        div:hover {
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
</head>
<body>
    <div>微信公众号:Robod</div>
</body>

HTML5与CSS3知识点总结-LMLPHP

2D转换

移动translation

2D移动是2D转换里面的一种功能,可以改变元素在页面中的位置,类似定位。

/*第一个参数是x方向移动的距离,第二个参数是y方向移动的距离,可以是百分比,值可以为0但不能没有*/
transform: translate(20px,0);
/*也可以分开写,👆的一行等同于👇两行*/
transfrom: translateX(20px);
transform: translateY(30px);

translate的优点就是不会影响到其它元素的位置,如果单位不是px而是百分比的话,表示的就是自身元素的百分比,这种移动方式对行内标签是没有效果的。

<head>
    <style>
        div:first-child {
            width: 100px;
            height: 100px;
            background-color: red;
            transform: translate(50%,20px);
        }
        div:last-child {
            width: 100px;
            height: 100px;
            background-color: aquamarine;
        }
    </style>
</head>
<body>
    <div></div>
    <div></div>
</body>

HTML5与CSS3知识点总结-LMLPHP

旋转rotate

2D旋转指的是让元素在二维平面内顺时针或者逆时针旋转。

<!-- rotate中度数的单位是deg,顺时针是正数,逆时针是负数 -->
<!-- transfrom: rotate(度数); -->
<head>
    <style>
        img {
            transition: all 1s;
        }
        img:hover {
            transform: rotate(360deg);
        }
    </style>
</head>
<body>
    <img src="./images/robod.png" alt="">
</body>

HTML5与CSS3知识点总结-LMLPHP

现在是以元素的中心为旋转点进行旋转,这也是默认的旋转点,也可以通过transfrom-origin属性更改旋转点。

<!-- 两个参数分别是x方向和y方向的位置,可以是像素也可以是方位名词 -->
<!-- transfrom-origin: x y; -->
<head>
    <style>
        img {
            transform-origin: 50px bottom;
            transition: all 1s;
        }
        img:hover {
            transform: rotate(90deg);
        }
    </style>
</head>
<body>
    <img src="./images/robod.png" alt="">
</body>

HTML5与CSS3知识点总结-LMLPHP

缩放scale

缩放的意思就是可以放大和缩小,可以用scale来设置缩放,这种方式相较于直接修改宽高而言优势就是不影响其它盒子,和rotate一样,也可以通过transform-origin属性来修改缩放中心。

<!-- 第一个参数表示宽缩放为原来的m倍,第二个参数表示高缩放为原来的n倍,如果只填一个参数代表宽高同时缩放为原来的x倍
transform: scale(m,n);
transform: scale(x); -->
<head>
    <style>
        img {
            transition: all 1s;
            transform-origin: right bottom;
        }
        img:hover {
            transform: scale(.5);
        }
    </style>
</head>
<body>
    <img src="./images/robod.png" alt="">
    <p>微信公众号:Robod</p>
</body>

HTML5与CSS3知识点总结-LMLPHP

CSS3 动画

动画(animation)是CSS3中具有颠覆性的特征之一,可以通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果,相比较过渡,动画可以实现更多变化,更多控制,连续自动播放等效果。

动画的基本使用

  • 动画序列

    在学习动画之前,要先明确动画序列这个概念👇

  • 1、使用@keyframes定义动画

    @keyframes 自定义的动画名称 {
        0% {
            xxxxxx;
        }
        100% {
            xxxxxxx;
        }
    }
    
  • 2、元素使用动画

    给需要使用动画的元素添加animation-name(调用动画)以及animation-duration(持续时间)这两个属性。

    <head>
        <style>
            @keyframes robod_animation {
                0% {
                    transform: rotate(0) scale(1);
                }
                to {
                    transform: rotate(90deg) scale(0.5);
                }
            }
            img {
                animation-name: robod_animation;
                animation-duration: 2s;
            }
        </style>
    </head>
    <body>
        <img src="./images/robod.png" alt="">
    </body>
    

    HTML5与CSS3知识点总结-LMLPHP

常用动画属性

速度曲线

上面提到了一个animation-timing-funtion属性用来设置动画的速度曲线,该属性的值一共有6个:

前面几个都很好理解,这个步长的意思就是整个操作划分为多少步,然后一步一步执行,类似于那种一格一格的进度条的感觉,可以做一些有意思的动画。

<head>
    <style>
        @keyframes steeeep {
            from {
                width: 0;
            }
            to {
                width: 160px;
            }
        }
        div {
            width: 160px;
            overflow: hidden;
            white-space: nowrap;
            font-size: 10px;
            background-color: aqua;
            animation: steeeep 2s steps(15) backwards;
        }
    </style>
</head>
<body>
    <div>
        欢迎关注微信公众号:Robod
    </div>
</body>

HTML5与CSS3知识点总结-LMLPHP

3D转换

透视 perspective

在了解3D转换之前首要要明确一个概念——“透视”,电脑屏幕是二维的,我们没办法直接看到立体的东西,如果要想看到物体在Z轴上的变化,就得使用透视,透视又称视距,其实就是3D的东西投影在2D平面的效果,下图中的d就是透视,当物体不变时,透视越大,在屏幕上看到的就越小,透视越小,在屏幕上看到的就越大,所谓近大远小。透视的单位是px

HTML5与CSS3知识点总结-LMLPHP

3D移动 translate3d

3D移动和2D移动类似,只不过是多了个Z轴。

/*这三个参数分别代表在xyz轴要移动的距离,z轴一般以px为单位*/
transform: translate3d(x , y , z);
/*也可以分开写*/
translate: translateX(x);
translate: translateY(y);
translate: translateZ(z);

首先给需要移动的元素的父元素添加透视,在透视固定的情况下,改变translateZ的大小,就会改变元素在屏幕上的大小。

<head>
    <style>
        body {
            perspective: 500px;
        }
        div {
            width: 200px;
            height: 200px;
            background-color: aquamarine;
            margin: 0 auto;
            transform: translateZ(100px);
        }
    </style>
</head>
<body>
    <div></div>
</body>

HTML5与CSS3知识点总结-LMLPHP

3D旋转 rotate3d

3D旋转指可以让元素在三维平面内沿着x轴,y轴,z轴或者自定义轴进行旋转。

transform: rotateX(45deg);	/*沿x轴正方向旋转45度*/
transform: rotateY(45deg);	/*沿y轴正方向旋转45度*/
transform: rotateZ(45deg);	/*沿z轴正方向旋转45度*/
transform: rotate3d(1,1,0,45deg);	/*沿着x轴与y轴的对角线旋转45度*/

那么哪一个方向是旋转正方向呢?这里有一个技巧,就是左手准则,左手大拇指指向某一个轴的正方向,手指弯曲的方向就是旋转的正方向,反之就是反方向。

HTML5与CSS3知识点总结-LMLPHP

<head>
    <style>
        body {
            perspective: 500px;
        }
        img {
            transition: all 1s;
        }
        img:hover:first-child {
            transform: rotateX(45deg);
        }
        img:hover:nth-child(2) {
            transform: rotateY(45deg);
        }
        img:hover:nth-child(3) {
            transform: rotateZ(45deg);
        }
        img:hover:last-child {
            transform: rotate3d(1,1,0,45deg);
        }
    </style>
</head>
<body>
    <img src="./images/robod.png" alt="">
    <img src="./images/robod.png" alt="">
    <img src="./images/robod.png" alt="">
    <img src="./images/robod.png" alt="">
</body>

HTML5与CSS3知识点总结-LMLPHP

3D呈现 transform-style

3D呈现就是用来控制子元素是否开启三维立体环境,默认是transform-style: flat(不开启),如果想开启,可以修改为transform-style: preserve-3d。注意:代码是写给父元素的,但影响的子元素

<head>
    <style>
        body {
            perspective: 500px;
        }
        .box1 {
            width: 200px;
            height: 200px;
            transition: all 2s;
            transform-style: preserve-3d; /*和transform-style: flat*/
        }
        .box2 {
            width: 100%;
            height: 100%;
            background-color: aqua;
            transform: rotateX(45deg);
        }
        .box1:hover {
            transform: rotateY(45deg);
        }
    </style>
</head>
<body>
    <div class="box1">
        <div class="box2"></div>
    </div>
</body>

上面代码中的例子,先看一下transform-style: flat的效果:

HTML5与CSS3知识点总结-LMLPHP

当鼠标移到上面的时候,先是由本来的绕x轴旋转45度的状态转换为普通的平面图,再由平面图绕y轴进行旋转,这显然不是我们想要的效果。

再来看看transform-style: preserve-3d的效果👇

HTML5与CSS3知识点总结-LMLPHP

现在就是三维的转换效果了,直接由绕x轴旋转45度的状态直接再绕y轴旋转45度。

浏览器私有前缀

浏览器私有前缀是为了兼容老版本的写法,比较新的版本的浏览器无须忝加。

  • -moz-:代表 firefox浏览器的私有属性
  • -ms-:代表ie浏览器私有属性
  • -webkit-:代表 safari、chrome私有属性
  • -o-:代表Opera私有属性

比如圆角属性就可以这样写👇

-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;

总结

好了,这就是我这段时间学习HTML5和CSS3所总结出来的一些知识点,一方面是怕我自己以后忘了可以拿来复习使用,另一方面也是希望可以帮助到一起学习的小伙伴们!

HTML5与CSS3知识点总结-LMLPHP

01-27 14:30