H5和C3新特性

H5新特性

一、语义性标签

header:头部区域
nav: 导航区域
main: 主体区域
section:小区域
aside:侧边栏
article:正文
footer: 页尾区域

以上标签其实就是div,只不过比div更加具备语义化,是H5中专门用来表示网页布局结构的标签
是HTML5的规范出来以后才有的,那么就意味着会有兼容性问题,IE8和之前的浏览器不支持

二、音频和视频

1)audio 播放音乐或音频。IE9以下的版本不支持。

支持的格式 .mp3/.ogg/.wav
属性

src:文件路径
autoplay:自动播放
loop:循环
controls:控制条
muted:静音
preload:预加载(当使用autoplay时,preload自动失效)

2)video 加载视频。IE9以下的版本不支持。

a)支持的格式 .mp4/.ogg/.webm
b)属性

src:文件路径
autoplay:自动播放
loop:循环
controls:控制条
muted:静音
preload:预加载(当使用autoplay时,preload自动失效)
width:宽度
height:高度
poster:海报

三、增强型表单

1.表单组件

1)color:颜色
2)email:邮箱
3)tel:电话号码
4)url:网址
5)number:数字
6)range:范围
7)search:搜索
8)date:日期
9)datetime:日期时间
10)datetime-local:本一日期时间
11)year:年份
12)month:月份
13)time:时间

2.表单交互属性

1)form-action:修改action数据提交的地方
2)form-enctype:修改表单请求的类型
3)form-method:修改数据提交的方法
4)autocomplete:自动完成
用来帮助用户输入,每一次输入的内容,浏览器是否保存输入的值,以备将来使用。值有: on/off,默认为on。
为了保护敏感数据(如用户帐号、密码等),避免本地浏览器对它们不安全存储,一般需要关闭
5)autofocus:自动获焦
6)placeholder:输入提示
7)multiple:多选

四、Canvas绘图

H5原生技术,基于网页画布2D位图绘图技术,善于表现细腻颜色,可用于统计图表、页面游戏、地图应用、网页特效等。

使用Canvas的步骤:
     <canvas id="myCanvas" width="400" height="300"></canvas>

     Canvas自身是一个300*150的inline-block元素;注意:Canvas画布尺寸不能使用CSS设置——会对整个图像进行扭曲!

     使用H5 Canvas API进行绘图:(代码如下)
            <script>
                             var c=document.getElementById("myCanvas");
                              var ctx=c.getContext("2d");
                              ctx.fillStyle="#FF0000";
                              ctx.fillRect(0,0,150,75);
             </script>
属性:
         //绘制矩形
         ctx.fillStyle = '#000'                  填充颜色/渐变色对象
         ctx.strokeStyle = '#000'           描边颜色/渐变色对象
         ctx.lineWidth = 1                      描边线宽度
         ctx.fillRect(x, y, w, h):              填充矩形
         ctx.strokeRect(x, y, w, h):       描边矩形
         ctx.clearRect(x, y, w, h):          描边矩形
         //绘制文本
         ctx.font = '10px sans-serif'    
         ctx.textBaseline = 'alphabetic/top/bottom'
         ctx.fillStyle = '#000'                 
         ctx.strokeStyle = '#000'
         ctx.fillText(txt, x, y)                    填充文本
         ctx.strokeText(txt, x, y)             描边文本
         ctx.measureText(txt).width     测量文本基于当前字体设置的宽度
         //绘制路径——概念上类似于PS中的钢笔工具
         cx.beginPath()    开始一条路径,或重置当前的路径
         ctx.moveTo()    方法把路径移动到画布中的指定点,不创建线条
         ctx.lineTo()    方法添加一个新点,然后创建从该点到画布中最后指定点的线条(该方法并不会创建线条)
         ctx.arc()   
         ctx.rect()    
         ctx.ellipse()       画椭圆弧函数
         ctx.closePath()
         ctx.stroke()                                基于现有路径进行描边
         ctx.fill()                                       基于现有路径进行填充
         ctx.clip()                                     基于现有路径进行裁切
         //绘制图像
         ctx.drawImage(img, x, y)         绘制图像(原始尺寸)
         ctx.drawImage(img, x, y, w, h) 绘制图像(指定尺寸)
         //绘图上下文变形和状态保持
         ctx.rotate()                                 图像旋转
         ctx.translate()                            图像平移
         ctx.scale()                                   图像缩放
         ctx.save()                                    绘图上下文的保存
         ctx.restore()                               绘图上下文的恢复

五、WebStorage

                (1)window.sessionStorage:类数组对象,通过key=>value对存储字符串数据——会话级存储
                           特点:一次性储存,数据在浏览器关闭后自动删除
                           添加数据:sessionStorage['key'] = 'value'

                          修改数据:sessionStorage['key'] = 'newValue'

                           删除数据:delete sessionStorage['key']

                           获得数据:var  v = sessionStorage['key']

                    (2)window.localStorage:类数组对象,通过key=>value对存储字符串数据——本地/跨会话级/永久存储
                            长期存储数据,浏览器关闭后数据不丢失;
                            特点:数据永久存储,没有时间限制;大小限制5M(够用了);只存储字符串
                           添加数据:localStorage['key'] = 'value'

                           修改数据:localStorage['key'] = 'newValue'

                           删除数据:delete localStorage['key']

                           获得数据:var  v = localStorage['key']

六、地理定位 HTML5 Geolocation API 用于获得用户的地理位置。

鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。

 <body>
    <div>
        <div id="demo">
        </div>
    </div>
    <script>
        var x=document.getElementById("demo");
        function getLocation() {
                      if (navigator.geolocation) {
                            navigator.geolocation.getCurrentPosition(showPosition);
                              }
                      else{x.innerHTML="该浏览器不支持获取地理位置。";}
                  }
        function showPosition(position) {
                  x.innerHTML="Latitude: " + position.coords.latitude +  "<br>Longitude: " + position.coords.longitude;
                  }
        getLocation();
      </script>
</body>

七、拖拽

H5之前没有拖放API,可以使用“鼠标按下 + 鼠标移动”两个事件来模拟用户拖动事件。

H5之后专门提供了七个鼠标拖动相关事件句柄:实例代码如下

   <div draggable="true" ondragstart="drag(event)"></div>
    <!-- draggable="true" 可以拖拽 值为false是不可以拖动 -->
<script>
      function drag(event) {
        console.log(event);
    }
    drag(event)
</script>
         拖动的源对象(source)可能触发的事件:

                dragstart:拖动开始

                drag:拖动中

                dragend:拖动结束

         拖动的目标对象(target)可能触发的事件:

                dragenter:拖动进入

                dragover:拖动悬停

                drop:松手释放

                dragleave:拖动离开

       注意:拖放API事件句柄中所有的事件对象都有一个dataTransfer属性(数据运输对象),用于在源对象和目标对象间传递数据。

       源对象:event.dataTransfer.setData(key, value)

       目标对象:var value = event.dataTransfer.getData(key)

H5移除元素

纯表现的元素
<basefont> 默认字体,不设置字体,以此渲染
<font> 字体标签
<center> 水平居中
<u> 下划线
<big> 大字体
<strike> 中横线
<tt> 文本等宽
框架集
<frameset>
<noframes>
<frame>

CSS3新特性

##一、伪类选择器
     :nth-of-type :找到
    :first-child:找到第一个子元素,它在父元素中也必须是第一个子元素
    :last-child:找到最后一个子元素,它在父元素中也必须是最后一个子元素
    :nth-child:找到某个子元素

##二、文字阴影(text-shadow)
        参数1:水平偏移
        参数2:垂直偏移
        参数3:模糊度
        参数4:阴影颜色
        它的阴影大小是跟文字一样大的!不可以改阴影大小,除非改文字大小

三、边框: 圆角(border-radius)

四、盒子阴影 : box-shadow

        参数1:水平偏移位置
        参数2:垂直偏移位置
        参数3:模糊度,值越大越模糊
        参数4:阴影的宽度,哪怕宽度为0其实阴影也有宽度,只不过是跟盒子一样宽,这个宽度其实是设置阴影四周再加多少宽度
        参数5:阴影的颜色
        参数6:是否为内阴影,加一个inset就是内阴影,不加就是外阴影 inset也可以加在最前面,建议加最后
        多个阴影之间,用逗号隔开,先写的阴影,层级最高

五、盒子模型: box-sizing

box-sizing属性可以指定盒子模型种类,有两个值
content-box指定盒子模型为W3C(标准盒模型)
border-box为IE盒子模型(怪异盒模型)
区别
box-sizing: content-box;
盒子宽度=内容宽+padding+border
盒模型宽度=内容宽+padding+border+margin
box-sizing: border-box;
盒子宽度=内容宽(包含内容宽+padding+border)
盒模型宽度=内容宽+margin

六、背景:background-size background-origin background-clip

    参数1 URL:背景图片的路径,路径包不包引号都无所谓
    参数2:是否平铺,默认是repeat代表水平和垂直都平铺
                    no-repeat:代表不平铺,常用
                    repeat-x:水平方向平铺
                    repeat-y:垂直方向平铺
    参数3:background-origin    背景图片偏移位置
                    它需要写两个,第一个代表水平对齐,第二个代表垂直对齐
                    水平对齐:left,right,center
                    垂直对齐:top,bottom,center

                    如果希望水平和垂直都居中,可以只写一个center

                    除了写这几个单词外,还可以写偏移的像素位置
                    水平写负代表向左,写正代表向右
                    垂直写负代表向上,写正代表向下

                    除了写像素外,还可以写百分比,用的少
                    写正百分比代表向左和向上,给负代表向右和向下
                    写百分比跟像素的方向是相反的

      参数4:background-size    指定图片的大小,它一定要写在参数3的后面,而且要加一个/
                可以给具体的像素,也可以给盒子的百分比,第一个代表宽,第二个代表高
                还有特殊的两个值:
                            cover:它一定会让图片覆盖整个盒子,图片可能会超出
                            contain:它一定会让盒子包含住图片,图片不会超出
                图片一定不会变形,都是按比例缩放
      参数5:background-color   背景颜色
         注意,如果是多张背景图片,那么颜色一定要写在最后
        如果多张背景图片,用逗号隔开,另外,最先写的背景图片层级最高,越后面写的层级越低

七、渐变: linear-gradient , radial-gradient

        background:linear-gradient(to right, yellow, purple)
         background:radial-gradient(circle 100px at 0% 50%, yellow, #009966, purple);
        把渐变色不是当背景颜色,而是当背景图片,所以要给background属性
        参数1:渐变的方向
                to right: 从左到右
                to top: 从下到上
                to bottom: 从上到下
                to left: 从右到左
                to right top: 从左下到右上
                to right bottom: 从左上到右下
                to left top: 从右下到左上
                to left bottom: 从右上到左下
                除了可以写上面的方向,也可以传入角度,0deg是从下面开始,角度越大,就越顺时针旋转方向
        参数2:第一个颜色 可以写一个百分比,意思是代表在哪个位置结束
        参数3:第二个颜色 写可以写一个百分比,代表在哪个位置开始
        如果要指定第二个颜色在哪结束,那么就需要再写一个这样的颜色,然后写一个百分比就代表它在哪个位置结束了,至少2个颜色,最多有n个颜色.

八、过渡 : transition 可实现动画

         transition:让元素变化的时候有动画效果(过渡效果) */
    参数1:参与过渡的属性,一般写all,代表所有属性都参与过渡,也可以写其他的,写什么就代表什么属性参与过渡
    参数2:过渡的持续时间,记得要加单位s代表多少秒
    参数3:代表延迟几秒执行(延迟时间)
    参数4:运动曲线 linear匀速  steps(n):分n个步骤
    transition加在hover里代表只有悬停时才有过渡效果,写在默认样式里代表悬停和移出恢复时都有过渡效果
    transition: all 2s .5s linear;

    过渡其实是一个复合属性,由多个属性连写的
    transition-property: 参与过渡的属性,写all之类的
    transition-duration: 过渡的持续时间
    transition-delay: 过渡的延迟时间
     transition-timing-function: 运动曲线

九、自定义动画 animate @keyfrom

        div {
        width: 100px;
        height: 100px;
        background: pink;
        /* margin: 20px auto; */
        /* 使用动画 */
        animation: width 1s linear infinite alternate ;

    }
    /* 定义动画 */
    /* @keyframes width {
        0% {
            width: 100px;
        }
        100% {
            width: 300px;
        } */

十、媒体查询 多栏布局 @media screen and (width:800px) {…}

        响应式布局 按设备宽度自适应布局
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./css/567.css" media="screen and (max-width:567px)">
<link rel="stylesheet" href="./css/568.css" media="screen and (min-width:568px)">
<link rel="stylesheet" href="./css/768.css" media="screen and (min-width:768px)">
<link rel="stylesheet" href="./css/992.css" media="screen and (min-width:992px)">
<link rel="stylesheet" href="./css/1200.css" media="screen and (min-width:1200px)">
<style>
    *{
        margin: 0;
        padding: 0;
    }
    .container{
        width: 100%;
        height: 300px;
        border: 1px solid #000;
    }
</style>
</head>
<body>
<div class="container">
</div>
</body>

十一、2D转换;transform: translate(x,y) rotate(x,y) skew(x,y) scale(x,y)

       div {
        width: 200px;
        height: 200px;
        background: pink;
        /* transform: translate(10px,20px); */
        /* 变形:移动(x轴,y轴) 不影响其他元素和布局*/
        /* transform: translateX(100px); */
        /* X轴方向移动 不影响其他元素和布局*/
        /* transform: translateY(100px); */
        /* Y轴方向移动 不影响其他元素和布局 */
    }
    div:hover{
        transform: rotate(1600deg);  /*旋转*/
    }
    /*变形复合写法*/
    div:hover{
        transform: translateX(400px) rotate(360deg) scale(.5);
    }

十二、3D转换:transform: translate3d(x,y) rotate3d(x,y) scale3d(x,y)

 <style>
    body{
        perspective: 200px;
        /* 透视:视距d 眼睛到屏幕的距离 距离越小图像越大  距离越大图像越小 
            透视必须加给观察元素的父级*/
    }
    div{
        width: 200px;
        height: 200px;
        background: pink;
        transform: translate3d(400px,100px,100px);
        /* 变形:移动3d(x轴,y轴,z轴) 中间用逗号隔开 如果其中一个值没有就写0,z轴用px单位 z轴正值越大看到的图像越大 */
    }
        img{
        display: block;
        margin: 100px auto;
        transition:all 3s linear;
    }
    img:hover{
        transform: rotateX(360deg);
        /* 延X轴旋转 */
        transform: rotateY(360deg);
         /* 延Y轴旋转 */
         transform: rotateZ(360deg);
         /* 延Z轴旋转 */
         transform: rotate3d(1,0,0,45deg);
         /* 综合写法:X轴 ,Y轴,Z轴,旋转度数 自定义了解即可*/
      }

</style>

十三、字体图标 font-face 代码如下

      <style>
    @font-face {
        font-family: 'icomoon';
        src: url('fonts/icomoon.eot?85t4ic');
        src: url('fonts/icomoon.eot?85t4ic#iefix') format('embedded-opentype'),
            url('fonts/icomoon.ttf?85t4ic') format('truetype'),
            url('fonts/icomoon.woff?85t4ic') format('woff'),
            url('fonts/icomoon.svg?85t4ic#icomoon') format('svg');
        font-weight: normal;
        font-style: normal;
        font-display: block;
    }

    div {
        position: relative;
        width: 200px;
        height: 50px;
        border: 1px solid #000;
        margin: 20px auto;
    }
    div::after{
        position: absolute;
        top: 15px;
        left: 20px;
        font-family: 'icomoon';
        content: "\e900";
    }
    div::before {
        position: absolute;
        top: 15px;
        right: 20px;
        font-family: 'icomoon';
        content: "\e912";
    }
</style>

十四、弹性布局flex

      div{
        width: 300px;
        height: 300px;
        border: 1px solid #000;
        display: flex;
        flex-direction: row;
        /*弹性盒方向:主轴方向X轴  */
        flex-direction: column;
        /* 弹性盒方向:主轴Y轴方向 */
        flex-direction: row-reverse;
        /* 弹性盒方向:主轴方向X轴 倒叙 */
        flex-direction: column-reverse;
         /* 弹性盒方向:主轴Y轴方向 倒叙*/
             flex-wrap: nowrap;
        /* 弹性盒换行:不换行 默认的 */
        flex-wrap: wrap;
        /* 弹性盒换行:换行 */
    //设置主轴方向子元素排列顺序
          justify-content: flex-start;
        /* 从左到右排列 默认的 */
        justify-content: flex-end;
        /* 从尾部开始排列 不影响子元素排列顺序 */
        justify-content: center;
        /* 从主轴居中对齐 */
        justify-content: space-around;
        /* 平分主轴剩余空间 */
        justify-content: space-between;
        /* 两边对齐,中间评分剩余空间 */
        justify-content: space-evenly;
        /* 间距相同 */
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容

  • 字体属性 粗细font-weight设置文字是否加粗显示 。 有两种类型 :单词类型、数字类型单词类型 | 属性...
    ly_0cd0阅读 746评论 0 2
  • H5的新特性 1.语义化标签 有利于SEO,有助于爬虫抓取更多的有效信息,爬虫是依赖于标签来确定上下文和各个关键字...
    王芃皓阅读 755评论 0 0
  • h5新特性 用于绘画的 canvas 元素用于媒介回放的 video 和 audio 元素对本地离线存储的更好的支...
    焦迈奇阅读 271评论 0 0
  • H5新特性 拖拽释放(Drap and drop) API ondrop 拖放是一种常见的特性,即抓取对象以后拖到...
    李小白呀阅读 805评论 0 1
  • H5新特性——十个,后续将慢慢补上 1、新增的语义化标签2、增强型表单3、音频和视频 4、Canvas绘图5、SV...
    飞鸿踏雪ni阅读 438评论 0 0