web前端程序员WEB前端程序开发

H5基础知识总结

2017-02-11  本文已影响3464人  福尔摩鸡

一、HTML5

1.1 认识HTML5

HTML5并不仅仅只是作为HTML标记语言的一个最新版本,更重要的是它制定了Web应用开发的一系列标准,成为第一个将Web做为应用开发平台的HTML语言。

我们日常讨论的H5其实是一个泛称,它指的是由HTML5 + CSS3 + Javascript等技术组合而成的一个应用开发平台。

相对于HTML的早期版本,HTML5在语法规范上做了比较大的调整,去除了许多冗余的内容,书写规则更加简洁、清晰。

1.2 DOCTYPE标签

1.2.1 DOCTYPE标签的作用

1.2.2 DOCTYPE标签的写法

1.2.3 Emmet语法创建文档结构

- html:5或!:HTML5文档类型
- html:xt:XHTML过渡型文档类型
- html:xs:XHTML严格型文档类型
- html:4t:HTML4过渡型文档类型
- html:4s:HTML4严格型文档类型

1.3 新的语义标签

传统的做法我们通过添加类名如class="header"class="footer",使HTML页面具有语义性的,但是不具有通用性(如class="header"也可能被写成class="head")。HTML5则是通过增加语义化标签的形式来解决这个问题,例如<header></header><footer></footer>等,这样就可以保证其具有通用性。

1.3.1 部分常用的语义标签

标签名 作用
nav 导航
header 页眉
footer 页脚
main 文档主要内容
article 文章
aside 侧边栏
section 区块
progress 进度条

使用HTML5中新的语义标签,内容更为直观,即使删除了注释,依旧能够看出该标签的作用,语义性更强。

尽量避免全局使用headerfooteraside等语义标签。

1.3.2 新语义标签的兼容性

虽然HTML5为我们提供了一些新的语义标签,但老版本的浏览器并不兼容这些内容,比如在IE浏览器版本小于等于IE8时,就不支持新语义标签。

解决方案

1.4 表单

1.4.1 input标签的新type属性

伴随着互联网富应用以及移动开发的兴起,传统的Web表单已经越来越不能满足开发的需求,所以HTML5Web表单方向也做了很大的改进,如拾色器、日期/时间组件等,使表单处理变的更加高效。

类型 使用示例 含义
email <input type="email"> 输入邮箱格式
tel <input type="tel"> 输入手机号码格式
url <input type="url"> 输入url格式
number <input type="number"> 输入数字格式
search <input type="search"> 搜索框(体现语义化)
range <input type="range"> 自由拖动滑块
color <input type="color"> 拾色器
time <input type="time"> 定义日期字段的时、分、秒
date <input type="date"> 定义日期字段(带有calendar控件)
datetime <input type="datetime"> 定义日期字段(带有calendar和time控件)
month <input type="month"> 定义日期字段的月
week <input type="week"> 定义日期字段的周

兼容性问题:

1.4.2 input表单验证

优点:HTML5自带的验证使用便捷,不需要额外的js框架。

缺点:兼容性问题,如果想要兼容所有浏览器,建议使用js验证框架

1.4.3 新表单元素

除了在input标签中增加了一些新的type属性以外,H5也推出了一些新的表单元素。由于浏览器的兼容问题,使用频率并不广,了解即可。

1.4.4 新表单属性

属性 用法 含义
placeholder <input type="text" placeholder="请输入用户名"> 占位符
autofocus <input type="text" autofocus> 自动获得焦点
multiple <input type="file" multiple> 多文件上传
autocomplete <input type="text" autocomplete="off"> 自动完成
form <input type="text" form="某表单ID">
novalidate <form novalidate></form> 关闭验证
required <input type="text" required> 必填项
pattern <input type="text" pattern="\d"> 自定义验证

1.5 多媒体

1.5.1 多媒体标签

1.5.2 音频 audio标签

1.5.3 视频 Video标签

Video标签用来播放视频,用法跟audio标签十分类似。

1.5.4 多媒体加强

1.6 两种进度条

HTML5之前如果我们想要使用进度条,可以通过一些前端框架,或者自己使用控件搭建出类似的外观。但是在HTML5中推出了两个进度条控件,两种进度条都能够用来显示进度,由于兼容性以及语义性的问题,在实际开发中需要结合实际情况决定是否使用它们或者是使用对应的前端框架。

1.6.1 process

1.6.2 meter

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<meter class="class1" high="80" low="30" max="100" min="10" value="21" ></meter>
<br/>
<meter class="class2" high="80" low="30" max="100" min="10" value="60"></meter>
<br/>
<meter class="class3" high="80" low="30" max="100" min="10" value="90" ></meter>
<br/>
<meter class="class4" high="80" low="30" max="100" min="10" value="100" optimum="10" ></meter>
<br/>
</body>
</html>

1.7 DOM扩展

jQuery中我们可以通过选择器快速获取元素,在HTML5中也提供了一些类似的方法。

1.7.1 获取元素

1.7.2 类名操作 classList

这个元素返回的是dom元素的class列表,这个属性本身是只读的,但是我们可以通过几个方法去操作元素的class

Node指一个有效的DOM节点,是一个通称。

1.7.3 自定义属性 data-

1.8 新增API

1.8.1 网络连接状态

1.8.2 全屏

HTML5规范允许用户自定义网页上任一元素全屏显示。

1.8.3 文件读取

使用js对象FileReader,配合File对象可以指定读取本地文件,可以读取选取的文件,也可以读取DataTransfor

1.8.4 文件拖拽

HTML5的规范中,我们可以通过为元素增加draggable="true"来设置此元素是否可以进行拖拽操作,其中图片、链接默认是开启的。

1.8.5 地理定位

1.8.6 Web存储

随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,传统方式我们以document.cookie来进行存储的,但是由于其存储大小只有4k左右,并且解析也相当的复杂,给开发带来诸多不便,HTML5规范则提出解决方案。

二、CSS3

2.1 CSS3简介

CSS3是CSS2的“进化”版本,在CSS2基础上,增强或新增了许多特性, 弥补了CSS2的众多不足之处,使得Web开发变得更为高效和便捷。但是由于浏览器的兼容性问题,所以并不是所有的浏览器都能够使用,为了保证显示效果,我们在使用某些属性的时候需要添加额外的前缀。

Trident内核(IE):          // 前缀为 -ms
Gecko内核(FireFox):       // 前缀为 -moz
Presto内核(Opera):        // 前缀为 -o
Webkit内核(Chrome,Safari):// 前缀为 -webkit

2.2 CSS3选择器

CSS3中给了我们更多的选择器让我们来获取元素,极大程度提高了查找元素的精度以及准确性,并且绝大多数的选择器语法与jQuery中兼容。

2.2.1 属性选择器

属性选择器的作用就是,根据标签的属性去筛选对应的元素,属性选择器从CSS2推出,在CSS3中增加了几个新的属性。

以属性名 attr 为例:
E[attr]:            包含att属性
E[attr="val"]:      属性值为val
E[attr^="val"]:     属性值以val开头
E[attr$="val"]:     属性值以val结尾
E[attr*="val"]:     属性中包含val
E[attr~="val"]:     属性值使用空格进行分割,有一个为val
E[attr|="val"]:     属性以‘-’分割,其中有val值(如果属性只有val,那么也会被选中)

2.2.2 兄弟选择器

2.2.3 伪类选择器

2.2.4 伪元素选择器

2.3 颜色

新增了RGBAHSLA模式,其中的A 表示透明度通道,即可以设置颜色值的透明度,跟opacity相比,它们不具有继承性,不会影响子元素的透明度。

2.4 字体阴影 text-shadow

取值:

  1. 第1个长度值用来设置对象的阴影水平偏移值,可以为负值 。
  2. 第2个长度值用来设置对象的阴影垂直偏移值,可以为负值 。
  3. 如果提供了第3个长度值则用来设置对象的阴影模糊值,不允许负值。
  4. 设置对象的阴影的颜色。
  5. 可以通过,来分隔不同的阴影,从而为字体设置多个阴影。
text-shadow: 10px 10px 5px red;
text-shadow: 1px 1px #fff,-1px -1px #000;

2.5 盒子模型 box-sizing

CSS3中可以通过box-sizing来指定盒模型,即可指定为content-box或是border-box,这样我们计算盒子大小的方式就发生了改变。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>盒子模型</title>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: green;
        }
        .first {
            border: 10px solid red;
            padding: 20px;
            margin:20px;
            box-sizing: content-box;
        }
        .second{
            border: 10px solid red;
            padding: 20px;
            margin:20px;
            box-sizing: border-box;
        }

    </style>
</head>
<body>
<div class="first">first盒子</div>
<div class="second">second盒子</div>
</body>
</html>

2.6 边框

2.6.1 边框圆角 border-radius

赋值方法:

border-radius:20px;                 /*设置四周的圆角*/
border-radius: 50px 10px;           /*上左下右,上右下左*/
border-radius: 50px 30px 10px;      /*上左,上右下左,下右*/
border-radius: 50px 40px 30px 20px; /*上左,上右,下右,下左*/
border-radius: 50px/100px;          /*上下的圆角/左右的圆角*/
border-top-left-radius: 40px;       /*上左*/
border-top-right-radius: 10px;      /*上右*/
border-bottom-left-radius: 20px;    /*下左*/
border-bottom-right-radius: 50px;   /*下右*/

2.6.2 边框阴影 box-shadow

赋值方法:

box-shadow: 5px 5px 20px pink;          /*x偏移值,y偏移值,影子四周模糊程度,影子颜色*/
box-shadow: inset 0px 0px 100px yellow; /*添加了inset以后,影子会往内部伸展,其他的都是一样的*/
box-shadow: 5px 5px yellow,-5px -5px blue,10px 10px green; /*多个影子需要使用逗号分隔*/

注:设置边框阴影不会改变盒子的大小,不会影响其兄弟元素的布局。可以设置多重边框阴影,实现更好的效果,增强立体感,符合渐进增强,实际开发中可以大胆使用。

2.6.3 边框图片 border-image

border-image为复合属性:

border-image: url("img/border-image.png") 17 / 17px / 17px round;

2.7 背景

背景属性在CSS3中也得到很大程度的增强,比如背景图片尺寸、背景裁切区域、背景定位参照点、多重背景等。

2.8 渐变

渐变是CSS3当中比较丰富多彩的一个特性,通过渐变我们可以实现许多炫丽的效果,有效的减少图片的使用数量,并且具有很强的适应性和可扩展性。

2.8.1 线性渐变

线性渐变linear-gradient,指沿着某条直线朝一个方向产生渐变效果。

/*语法组合方式 可以添加多个颜色*/
background-image: linear-gradient(方向,开始颜色 开始位置 ,颜色2 开始位置,颜色3 开始位置.....);

/* 具体代码  */
/* 朝着 右上角 从红色到黄色*/
background-image: linear-gradient(to top left,red,yellow);

/* 朝着 顺时针45度 从红色到黄色*/
background-image: linear-gradient(45deg,red,yellow);

/* 朝着 顺时针45度 红色,黄色,绿色*/
background-image: linear-gradient(45deg,red,yellow,green);

/* 朝着 顺时针45度 红色到 10px结束 黄色从 20px开始 */
background-image: linear-gradient(45deg,red 10px,yellow 20px);

/* 朝着 顺时针45度 红色到10%结束 黄色从 20%开始 */
background-image: linear-gradient(45deg,red 10%,yellow 20%);

/* 注意:如果上一个颜色的结束 与 下一个颜色的开始相等,那么不会出现过渡 */
background-image: linear-gradient(45deg,red 10%,yellow 10%);

2.8.2 径向渐变

径向渐变radial-gradient,指从一个中心点开始沿着四周产生渐变效果。

/* 圆形渐变写法 */
background:radial-gradient(半径  ,颜色1,颜色2等等);

/* 椭圆渐变写法 */
background:radial-gradient(横向半径,竖向半径  ,颜色1,颜色2等等);

/* 设置位置 */
background:radial-gradient(横向半径,竖向半径  at 位置,颜色1,颜色2等等);

/*具体代码*/
/*半径100px 红色 绿色*/
background:radial-gradient(100px,red,green);

/*横向半径100px 竖向半径200px 红色 绿色*/
background:radial-gradient(100px 200px,red,green);

/*横向半径100px  红色10px 绿色 20px*/
background:radial-gradient(100px 200px,red 10px,green 20px);

/*横向半径100px  红色10% 绿色20%*/
background:radial-gradient(100px 200px,red 10%,green 10%);

/*横向半径100px  红色10% 绿色20% 在100px 100px位置*/
background:radial-gradient(100px 200px at 100px 100px,red 10%,green 10%);

/*注意:如果上一个颜色的结束,跟下一个颜色的开始相等,那么不会出现过渡*/
background-image: radial-gradient(100px,red 10%,yellow 10%);

2.9 过渡

过渡transition�是CSS3中具有颠覆性的特征之一,可以实现元素不同状态间的平滑过渡(补间动画),经常用来制作动画效果。

属性 含义
transition-property 设置过渡属性
transition-duration 设置过渡时间
transition-timing-function 设置过渡速度
transition-delay 设置过渡延时

2.10 2D转换

转换是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、变形、缩放,甚至支持矩阵方式,配合过渡和动画知识,可以取代大量之前只能靠Flash才可以实现的效果。

2.10.1 移动 translate

2.10.2 缩放 scale

2.10.3 旋转 rotate

2.10.4 倾斜 skew

2.10.5 组合写法

tranform:translate(10px,10px) rotate(180deg) scale(1.5,1.5);    /* 多个值 通过空格分隔*/

2.10.6 transform-origint

可以调整元素转换的原点。

/*x:50px y:中心 作为原点*/
transform-origin:50px;

/*x:50px y:50px 作为原点*/
transform-origin:50px 50px;

/*x:10% y:20% 作为原点*/
transform-origin:10% 20%;

/* 传入单词 
可选:top,left,right,center,bottom
*/
/* 左上 作为原点 */
transform-origin:right top;
/* 中心作为原点 */
transform-origin:center center;

2.11 3D转换

3D转换对应的属性依旧是transform,只是多了一个Z轴而已,Z轴的方向是垂直于屏幕,其中正方向指向我们的面部。

2.11.1 3D旋转

/* x方向旋转180°*/
transform:rotateX(180deg)
/* y方向旋转180°*/
transform:rotateY(180deg)
/* z方向旋转180°*/
transform:rotateZ(180deg)

2.11.2 透视 perspective

perspective(透视,视角)这个属性能让图像具有立体感,呈现近大远小的效果。

2.11.3 视角方向 perspective-origin

默认我们是直直的看着屏幕,通过该属性可以修改查看屏幕的角度。

2.11.4 3D呈现 transform-style

设置内嵌的元素在 3D 空间如何呈现,这些子元素必须为转换原素。3D元素构建是指某个图形是由多个元素构成的,可以给这些元素的父元素设置transform-style: preserve-3d来使其变成一个真正的3D图形,即让浏览器开启3D渲染。

2.11.5 backface-visibility

设置元素背面是否可见。

2.12 动画

动画是CSS3中具有颠覆性的特征之一,可通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果。

2.12.1 过渡的局限性

2.12.2 必要元素

/*动画名为:sevenColor
    开始背景为红色
    中途背景为橘色
    结束为黄色
*/
@keyframes changeColor{
            0%{background-color:red;}
            50%{background-color:orange;}
            100%{background-color:yellow;}
}    

/*动画名为:changeColor
   效果跟上面的一样,只是使用关键字
   from 开始
   to 结束
*/
@keyframes sevenColor{
            from{background-color:red;}
            50%{background-color:orange;}
            to{background-color:yellow;}
}   

/*动画名为:someProperty
   效果跟上面的一样,只是使用关键字
    添加了多个属性
*/
@keyframes someProperty{
            from{
                background-color:red;
                width:100px;
            }
            50%{
                background-color:orange;
                transform:rotate(100deg);
            }
            to{
                background-color:yellow;
                height:200px;
            }
}   

2.12.3 动画属性

animation-name: sevenColor;                 /*动画名*/
animation-duration: 1s;                     /*持续时间*/
animation-delay: 1s;                        /*延迟时间*/
animation-fill-mode: forwards;              /*动画播放完毕时的状态 (还原,结束值)*/
animation-iteration-count: infinite;        /*动画次数(具体次数,或者无限次)*/
animation-timing-function: ease-in;         /*动画的播放过渡类型*/
animation-play-state: running;              /*动画状态 running 或者pause*/
animation-direction: alternate;             /*动画的方向 正向 方向 正方,反向交替 方向,正向交替*/

animation: animationName 1s infinite  ease-in forwards 1s;  /*复合写法*/

2.13 伸缩布局

CSS3在布局方面做了非常大的改进,使得我们对块级元素的布局排列变得十分灵活,适应性非常强,其强大的伸缩性,在响应式开中可以发挥极大的作用。

三、补充

3.1 开发者工具

3.2 帮助文档

上一篇 下一篇

猜你喜欢

热点阅读