HTML5和CSS3提高

379 阅读8分钟

又又又是复习知识点的一天,hello大家好,想必大家都对HTML,CSS都很熟悉。那么对于HTML5和CSS3新增的属性你是否又能立竿见影。当然这些属性越用越熟悉,但总会有你不经常用得到的,让我们一块回顾回顾吧 ...

HTML5的新特性

一、新增语义化标签

1.<header> 定义了文档的头部区域,在一个文档中可以定义多个

元素。它是块元素

<header>
   <p>这是文档的头部</p>
</header>

2.<footer> 定义文档页脚,它不只是页面的最底部,在文档中也可以定义多个。

<footer>
   <address>联系我们</address>
</footer>

3.<article> 定义页面独立的内容区域,标签定义的内容本身必须是有意义且必须独立于文档的其他部分,可用在的地方:博客文章,新闻,评论等。

<article>
    <h2>五一劳动节</h2>
    <div>
        今天是五一劳动节
    </div>
</article>

4.<aside> 定义页面的侧边栏内容

<aside>
  <ul>
    <li>腾讯</li>
    <li>阿里</li>
    <li>百度</li>
  </ul>
</aside>

5.<time> 定义时间或日期,time标签中的datetime属性定义的时间不会被显示,但可能被其他应用使用

<time datetime="2018-01-17">今天是我生日</time>

6.<ruby> 加注释,ruby标签有两个子元素,rt注释的内容,rp是该标签不显示时显示的文字

<ruby><rt>ren</rt>
  <rp>该标签无法显示</rp>
</ruby>

7.<details> 用于描述文档或者文档某一部分细节,summary是details元素的标题

<details>
  <summary>点击查看更多</summary>
  <p>这是点击后的内容</p>
</details>

8.<mark> 定义带有几号的文本,它会给你想要突出显示的文本加个背景色

<p>我最喜欢<mark>数学</mark></p>

9.<nav> 定义导航栏

<nav>
  <a href="http://www.baidu.com">百度</a>
  <a href="http://www.360.com">360</a>
<nav>

10.<progress> progress显示数据的进度,属性value指定当前值,max最大值,最小值0不用设置

<progress value="30" max="100"></progress>

11.<section> section一般有两个作用,1.定义文档中的节,和div类似。2.定义文章,这时一般带有标题

<section>
  <h1></h1>
  <p></p>
</section>

12.<video> 定义视频,属性src引入资源,controls视频的控制控件

<video src="" controls="controls">你的浏览器不支持video标签</video>

以防用户浏览的视频不支持某些格式的视频,可以为用户多准备些格式的视频,目前支持的视频格式video/ogg,video/mp4,video/webm其他格式需要转换

<video controls="controls">
  <source src="" type="video/ogg">
  <source src="" type="video/mp4">
  <source src="" type="video/webm">
  你的浏览器不支持video标签
</video>

13.<audio> 该标签可定义声音,及其他的音频文件,不加controls不显示音频的控制界面

<audio src="" controls="controls">你的浏览器不支持audio标签</audio>

<video controls="controls">
  <source src="xx.ogg" type="audio/ogg">
  <source src="xx.mp3" type="audio/mpeg">
  你的浏览器不支持audio标签
</video>

目前音频可用类型audio/ogg,audio/mpeg

14.<datalist> 提示可能的值,datalist及其选项不会被显示出来,它仅仅是合法输入值的列表使用input元素的list属性来邦定datalist,下面选项使用option定义

<input type="text" list="cars">
  <datalist id="cars">
      <option value="宝马"></option>
      <option value="奔驰"></option>
      <option value="奥迪"></option>
  </datalist>

14.<embed> 定义插入的内容,如插件,flash,标签中间不要加内容会显现出来

<embed src="swf/flash5924.swf" tyep="application/x-shockwave-flash"></embed>

15.<canvas> canvas画布只是个容器,你可以通过控制坐标在canvas上绘制图形,一般配合js可以实现非常复杂的动画效果

二、新增的input类型

search 搜索框 number tel(手机号)

三、新增的表单属性

提示信息,输入则不显示: placeholder="";

// 改变提示信息的字体颜色
input::placeholder{
    color:...;
}
  • multiple="multiple": 可以选择多个文件
  • autocomplete :  是否保存用户输入值默认为on,关闭提示选择off
  • autofocus :  指定表单获取输入焦点
  • list和datalist :  为输入框构造一个选择列表 ( list值为datalist标签的id )
  • required :  此项必填,不能为空带有必填字段的表单
  • Pattern: 正则验证  pattern="\d{1,5}“
  • formaction: 在submit里定义提交地址

CSS3新特性

一.新增选择器

1.属性选择器 [属性] 重点: 属性=某个值进行选择

 input[type="text"]{ }

权重为10

2.结构伪类选择器

  • 第一个/最后一个孩子 E:first/last-child{}
  • 第n个元素 E:nth-child(n)
  • E:nth-child(n):选择某个父元素的一个或者多个特定的子元素
  • n可以是数字,关键字和公式
  • n如果是数字,就是选择第n个子元素,里面数字从1开始
  • n可以是关键字:even偶数,odd奇数
  • n可以是公式:n 偶数:2n 奇数2n+1 5n 5···最后:n+5 前五个:-n+5
  1. E:nth-child(n): 会把所有的孩子都排列序号,执行的时候首先看:nth-child(1): 之后回去看 前面div
  2. E:nth-of-type 会把指定元素的孩子排列序号,执行的时候先看 div指定元素 之后再看第几个孩子 3.伪元素选择器(重点) -----权重是1
  • ::before 在元素内部的前面插入内容
  • ::after 在元素内部的后面插入内容

语法规范:

 element::before{ content}

二、盒子模型border-box

 box-sizingcontent-box;默认值
 box-sizingborder-box;不会撑大盒子
 //页面内外边距初始化
 *{
    padding0margin0box-sizingborder-box;
 }

三、其他新特性

  1. CSS滤镜filter:filter:函数(); 例如:blur模糊处理 数值越大越模糊
  2. CSS3 calc函数:width:calc(100% - 80px) + - * /
  3. CSS3过渡 (重点)

常用属性:

  • transition-property:属性名称
  • transition-duration: 间隔时间
  • transition-timing-function: 动画曲线
  • transition-delay: 延迟

简写:transition:要过渡的属性 花费时间(s) 运动曲线(ease) 何时开始;

口诀:谁做过渡给谁加 多个属性都变化 属性写all

四、CSS3 2D转换

转换(transform)具有颠覆性的特性,实现元素位移(translate),旋转(rotate),缩放(scale)等效果

1.二维坐标系 横向为x 纵向为y

2.移动---类似定位 translate

语法:transform:translate(x,y); 或者分开写 transform:translateX(n) transform:translateY(n)

特性:

  1. 最大的优点 :不会影响其他元素的位置
  2. 参数可以用% 是盒子自身宽度高度来对比的
  3. 让盒子实现水平和垂直居中 先绝对定位 然后transform:translate(-50%,-50%)
  4. 对行内标签没有效果 3.旋转 rotate

语法:transform:rotate(度数:deg)

特性:

  1. 度数单位是deg
  2. 角度为正时,顺时针,角度为负时,逆时针
  3. 中心的是元素中心点 4.转换中心点 transform-origin 语法: transform-origin:x y;

特性:

  1. 注意用空格隔开
  2. 默认是(50% 50%)
  3. xy 像素/方位名词 5.缩放scale

语法:transform:scale(x,y);

特性:

  1. xy是数字,不跟单位。1是一倍 2是2倍 缩小:小于一
  2. 等比例缩放:transform:scale(2);
  3. 最大优势:不会影响其他盒子,而且可以设置中心点 6.综合写法 transform:translate() rotate() scale();
  • 有顺序问题(先旋转会改变坐标轴的方向)
  • 同时有位移和其他属性的时候,要把位移放在最前面

五、CSS3 动画 animation

1.动画的基本使用

1.先定义动画 2.再使用动画

   //用keyframes 定义动画(类似定义类选择器) 
   @keyframes move {
        /* 开始状态 */
        0% {
            transform: translateX(0px);
        }
        /* 结束状态 */
        100% {
            transform: translateX(1000px);
        }
    }
  //元素使用动画
  /* 动画名称 */a
  animation-name: move;
  /* 持续时间 */
  animation-duration: 1s;

注意:

  1. 可以做多个状态 keyframes关键帧
  2. 里面的百分比要是整数
  3. 里面的百分比是总的时间的划分 2.动画常用属性
  • animation-name:动画名称
  • animation-duration: 间隔时间
  • animation-timing-function: 动画曲线
  • animation-delay: 延迟
  • animation-iteration-count:n | infinite;动画播放次数
  • animation-direction: normal | alternate;
  1. normal: 正常播放动画
  2. alternate: 轮流反向播放动画,奇数次正向播放,偶数次反向播放
  • animation-fill-mode:
  1. none 表示 等待期和完成期,元素样式都为初始状态样式,不受动画定义(@keyframes)的影响。
  2. both 表示 等待期样式为第一帧样式,完成期保持最后一帧样式。
  3. backwards 表示等待期为第一帧样式,完成期跳转为初始样式
  4. forwards 表示等待期保持初始样式,完成期间保持最后一帧样式。 3.动画简写属性 animation:动画名称 持续时间 运动曲线(匀速linear) 何时开始 播放次数 是否反方向 动画起始或者结束的状态

4.速度曲线细节 animation-timing-function:默认是ease/linear/steps()(指定了时间函数中的间隔数量 步长)

六、CSS3D转换

1.三维坐标系:

  • x轴:水平向右 注意:x右边是正值,左边是负值
  • y轴:垂直向下 注意:y下面是正值,上面是负值
  • z轴:垂直屏幕 注意:往外面是正值,往里面是负值 2.3D位移:translate3d(x,y,z) 不能省略 没有写0 z单位是px

3.3D旋转:rotate3d(x,y,z)---左手法则 transfrom:rotateX(45deg) 沿着正方向旋转

4.透视:perspective(写到父盒子上面)

  1. d:视距
  2. z:z轴 物体距离屏幕的距离 z轴越大(正值) 看到的物体越大 5.3D呈现:transfrom-style(重要的)
  • 控制子元素是否开启三维立体环境
  • transfrom-style:flat 子元素不开启3d立体空间,默认的
  • transfrom-style:preserve-3d:子元素开启3d立体空间
  • 代码写给父级,但是影响的是子盒子 好了,今天就到这里,感觉学到亿点的小伙伴点个赞支持支持,不足有欠缺的地方欢迎评论区纠正,下期再见!