HTML5 学习准备1

HTML标签是忽略大小写的,但是class的值是不忽略大小写的,比如你写个class="videoBar",那么css样式必须得写.videoBar,如果写成videobar那就不行。

html5:新标签、新属性
<header><nav>
footer section....

语义化 搜索引擎

新标签:有用,国外 ->自己去网上找
'没用':header、nav
相当有用:pc 都是flash
video
audio 播声音 mp3
canvas 画图
文档头:<!doctype html>
页面编码:<meta charset="utf-8">

HTML5新标签
常用:header、footer、section
不太常用:article、menu、nav、aside(侧边栏)、datalist、time...
视频、音频:video、audio

css3:新样式
圆角、渐变、动画、旋转、变形、阴影、蒙板

选择器:
document.querySelectorAll('css选择器'); 一组
兼容IE8+
document.querySelector();

自定义属性:
data-xxx
this.dataset.abc=12; 设置
this.dataset.index 获取

1.向后兼容
2.data-性能高 没看出来

如何测一段程序性能?
var s=new Date().getTime();
//测试的代码
alert(new Date().getTime()-s);

localStorage cookie
容量 5M 4K
过期 没有 有
网络 不走网络 走网络
兼容 不兼容IE6 兼容
共同点:
1. 不安全
2. 不能跨域
3. 不能跨浏览器

5. 交互、通信
ajax:
客户端 -> 服务器
实时性差
单向
传输速度慢
websocket:双向
客户端 <-> 服务器
实时性高
传输速度快

ajax->服务器传输10M 耗时 17s
websocket ->服务器传输10M 耗时 5s

移动端:
布局:
flex——不实用 【没法单独用】
rem——不错 【目前最好】
定宽——宽度乱了 【抛弃】

rem:相对html的字体大小
设计图——320px/20rem
1rem=16px
一切单位都是rem——不要出现px
JS的clientX之类——也得换算
事件
ontouchstart
ontouchmove
ontouchend

HTML5——标签、属性(input)、选择器
标签:header-头部、footer-底部、aside-侧边栏、article-文章、nav-导航、section-块
语义化
属性:placeholder、type="date,time,email,number..."、date-
date-:自定义属性
1.直接用
oDiv.dataset.xxx
oDiv.getAttribute('xxx')
2.向后兼容
<div data-index="1">
选择器:querySelector/querySelectorAll

移动——屏幕分辨率
rem——相对HTML字体大小的单位
好处:改一个地方,所有大小都变
html {font-size:20px;}
/*量200 -> 100 -> 5rem*/
#div1 {width:5rem;}

用JS调整rem的大小
标准rem/标准屏幕宽=实际rem/实际屏幕宽
20/320=实际rem/clientWidth
实际rem=clientWidth*20/320
实际rem=clientWidth*0.0625

onload、onresize
document.documentElement.style.fontSize=clientWidth*0.0625+'px'

弹性布局
父级:display:-webkit-box; display:flex;
子级:-webkit-box-flex:1 flex:1;

平分空间
1 2 1

 

 

一、

HTML5在JS方面新增的东西

document.querySelector(“css选择器”);

document .querySelectorAll(“css选择器”);

var aEle = document.querySelectorAll(“li input[type=text]”);

var obj = document.querySelector(“li input[type=text]”);

aEle[0].style.background = red;

obj.style.background = red;

兼容IE8+

 

二、

jquery对象就是对原生对象的封装,所以$得到的东西,instanceof Array虽然看起来是数组,但是它不是数组。就像我们通过document获得的对象,虽然看起来是数组,但是它不是数组!!!

jquery是原生的扩展,它的根就不是数组,所以jquery对象怎么也不会成为数组,除非它把这玩意儿拿出来,再重新弄一边

 

三、

transition:1s all ease;

时间:1s 500ms

all:属性(width、height等)

ease:运动形式

linear:线性

ease:缓冲

ease-in:加速

ease-out:减速

ease-in-out:先加速后减速

transition:1s width ease, 10s height ease;

#div1{ height:300px; width:300px;}

//transition可以同时使用多个,这些属性都是同时运动的

下面这样写,也可以做到同时支持多个属性

transition:1s all ease; height:100px; width:100px;

#div1{ height:300px; width:300px;}

display没有transition效果

 

四、

border-radius:10px 20px

左上/右下 右上/左下

border-radius:10px;

全部

border-radius:10px 20px 100px;

左上 右上/左下 右下

border-radius:10px 20px 100px 140px

单位还可以用百分比, pt等

 

五、text-shadow:水平阴影 垂直阴影 模糊半径 阴影颜色

text-shadow:100px 100px 10px red;

p{ text-shadow:1px 1px 1px red,3px 3px 2px blue,5px 5px 5px yellow;}

 

六、

box-shadow属性至多有6个参数设置,他们分别取值:

阴影类型:此参数是一个可选值,如果不设值,其默认的投影方式是外阴影;如果取其唯一值”inset”, 就是将外阴影变成内阴影,也就是说设置阴影类型为”inset”时,其投影就是内阴影;

X-offset:是指阴影水平偏移量,其值可以是正负值可以取正负值,如果值为正值,则阴影在对象的右边,反之其值为负值时,阴影在对象的左边。

Y-offset:是指阴影的垂直偏移量,其值也可以是正负值,如果为正值,阴影在对象的底部,反之其值为负值时,阴影在对象的顶部;

阴影的模糊半径:此参数可选,但其值只能是正值,如果其值为0时,表示阴影不具有模糊效果,其值越大阴影的边缘就月模糊;

阴影的扩展半径:此参数可选,其值可以是正负值,如果值为正,则整个阴影都将延展扩大,反之值为负值时,则缩小。

阴影颜色:此参数可选,如果不设定任何颜色时,浏览器会取默认色,但各浏览器默认色不一样,特别是在webkit内核下的safari和chrome浏览器将无色,也就是透明,建议不要省略此参数。

#div1{ width:200px; height:200px; background:red; box-shadow:100px 1px 50px #000;}

其中:100px代表x轴偏移半径,1px代表y轴偏移半径,50px代表模糊半径(不代表扩展半径)

#div1{ width:200px; height:200px; background:red; box-shadow:100px 1px 50px 20px #000;}

其中:100px代表x轴偏移半径,1px代表y轴偏移半径,50px代表模糊半径,20px代表扩展半径

 

七、

radial-gradient(

  [<position>,]?

  [[<shape>||<size>] | <shape-size>{2},]?

  <color-shape>[,<color-stop>]+)

position:

  <percentage>1、用百分比指定径向渐变圆心的横坐标。可以为负值

  <length>1、用长度值指定径向渐变圆心的横坐标值。可以为负值

  left:设置左边为径向渐变圆心的横坐标值

  center:设置中间为径向渐变圆心的横坐标值

  right:设置右边为径向渐变圆心的横坐标值

  <percentage>2、用百分比指定径向渐变圆心的纵坐标值。可以为负值

  <length>2、用长度值指定径向渐变圆心的纵坐标值。可以为负值

  top:设置上边为径向渐变圆心的纵坐标值

  center:设置中间为径向渐变岩心的纵坐标

  bottom:设置底部为径向渐变圆心的纵坐标

<shape>

    circle:指定圆形的径向渐变

    ellipse:指定椭圆形的径向渐变

<size>

    closest-side:指定径向渐变的长度为从圆心到离圆心最近的边

  closest-corner:指定径向渐变的半径长度为从圆心到离圆心最近的角

  farthest-side: 指定径向渐变的半径长度为从圆心到离圆心最远的边

  farthest-corner:指定径向渐变的半径长度为从圆心到离圆心最远的角

  contain:包含,指定径向渐变的半径长度为从圆心到离圆心最近的点。类同于closest-side

  cover:覆盖,指定径向渐变的半径长度为从圆心到离圆心最远的点。类同于farthest-corner

<shape-size>

      <percentage>:用百分比指定径向简便的横向或纵向直径长度,并根据横向和纵向的直径来确定是圆或者椭圆。不允许负值

      <length>:用长度值指定径向渐变的横向或纵向直径长度,并根据横向和纵向的直接来确定是圆或椭圆。不允许负值。<color-stop

      <color>:指定颜色。

      <length>:用长度值指定起止色位置。不允许负值。

      <percentage>:用百分比指定起止色位置。

 

八、

线性渐变:

#div1{ width:300px; height:300px; background:-webkit-linear-gradient(top bottom, red 10%, blue 10%, yellow 50%);}

#div1{ width:300px; height:300px; background:-webkit-linear-gradient(180deg, red 20px, blue 10%, yellow 200px);}

#div1{ width:300px; height:300px; background:-webkit-linear-gradient(top bottom, red, blue, yellow);}

 

<linear-gradient> = linear-gradient([ [ <angle> | to <side-or-corner> ] ,]? <color-stop>[, <color-stop>]+)

<side-or-corner> = [left | right] || [top | bottom]

<color-stop> = <color> [ <length> | <percentage> ]?

下述值用来表示渐变的方向,可以使用角度或者关键字来设置:
<angle>:
用角度值指定渐变的方向(或角度)。
to left:
设置渐变为从右到左。相当于: 270deg
to right:
设置渐变从左到右。相当于: 90deg
to top:
设置渐变从下到上。相当于: 0deg
to bottom:
设置渐变从上到下。相当于: 180deg。这是默认值,等同于留空不写。
<color-stop> 用于指定渐变的起止颜色:
<color>:
指定颜色。
<length>:
用长度值指定起止色位置。不允许负值
<percentage>:
用百分比指定起止色位置(起止的意思就是,如果是两个颜色的话,那么第一个位置表示第一个颜色的开始渐变的位置,第二个位置表示第二个颜色结束渐变的位置)。
如果是三个颜色的话,前两个表示颜色开始渐变的位置,最后一个表示结束渐变的位置


1、
移动端几个小事件:
onmousedown ontouchstart
onmousemove ontouchmove
onmouseup ontouchend

2、
css3,从视觉角度变化了,但是本质没变,不会引起重排,性能极高!
*以后做效果的时候,尽量用css3样式

3、
removeEventListener: 不能解除匿名函数

4、
移动端写运动的时候,会有些卡,是因为没有组织默认事件。

卡->阻止默认事件

return false 碰见绑定(addEventListener) 就阻止不了默认事件了 -(得用)> ev.preventDefault();

发现小问题:手机上小 默认是980
<meta name="viewport" content="width=320, user-scalable=0, initial-scale=1.0">
320->device-width

touchstart ->ev.targetTouches[0]
touchmove -> ev.targetTouches[0]
touchend -> ev.changedTouches[0]

5、
box-sizing属性可以为三个值之一:content-box(default),border-box,padding-box。
content-box,border和padding不计算入width之内
padding-box,padding计算入width内
border-box,border和padding计算入width之内,其实就是怪异模式了~

6、
关于class:
obj.classList.add(sClass) 添加class
obj.classList.remove(sClass); 删除class
obj.classList.contains(sClass); 是否包含class
oDiv.classList.add('active');

1、css3 -- calc

2px + 3px

20% - 2px

2px * 5px

100px / 2

100px * 2

记住符号两边应该有空格,比如100px*2是不对的,应该是100px * 2; 2px+3px也是不对的,应该是2px + 3px;

 

2、盒子模型:

box-sizing:content-box(默认的)

width+padding+border (border、padding往外走)

box-sizing:border-box

border、padding往里走

给布局增加border、padding不受影响。

getStyle() obj.offsetWidth

 

3、display:inline, inline-block,block,box

box: 弹性盒子布局(弹性布局)

父元素:

display:-webkit-box

子元素:

-webkit-box-flex:1;

排列方式:加给父级

-webkit-box-orient:horizontal;

vertical 垂直方向

horizontal 水平方向

排列方向:

-webkit-box-direction:reverse;

垂直方向排列:

-webkit-box-align:center;

水平方向排列:

-webkit-box-pack:center;

注意:

1、弹性和浮动不能一起用

2、子级必须块元素

你可能感兴趣的:(HTML5 学习准备1)