前端(十一)

241 阅读6分钟

一html5

接下来 我们要学习html5、css3 的知识。html5不仅仅只是做为HTML标记语言的一个最新版本,更重要的是它制定了Web应用开发的一系列标准,增加了很多语义标签,本质上新语义标签与<div><span>没有区别,只是其具有表意性。

input增加了很多type的类型:邮件、日期等类型。

增加了提示输入框(和select有点像,不过select是选择框)

<input type="text" list="myData">
<datalist id="myData">
    <option>本科</option>
    <option>研究生</option>
    <option>不明</option>
</datalist>

增加了输入事件:当输入时候调用方法,当验证错误时候的方法。

  • oninput():用户输入内容时触发,可用于输入字数统计。

  • oninvalid():验证不通过时触发。比如,如果验证不通过时,想弹出一段提示文字,就可以用到它。

增加了多媒体播放,在HTML5之前,在网页上播放音频/视频的通用方法是利用Flash来播放。并且移动设备的浏览器并不支持Flash插件。现在html5给我们提供了:

音频

<audio src="music/yinyue.mp3" autoplay controls> </audio>

视频

<video src="video/movie.mp4" controls autoplay></video>

新增加DOM操作方式:获取节点方式增加了:

  • document.querySelector("selector") 通过CSS选择器获取符合条件的第一个元素。

  • document.querySelectorAll("selector") 通过CSS选择器获取符合条件的所有元素,以类数组形式存在。

修改class方式增加了:

  • Node.classList.add("class") 添加class

  • Node.classList.remove("class") 移除class

  • Node.classList.toggle("class") 切换class,有则移除,无则添加

  • Node.classList.contains("class") 检测是否存在class

js 里可以通过 box1.index=100; box1.title 来自定义属性和获取属性。

H5可以直接在标签里添加自定义属性,但必须以 data- 开头

二css3伪元素

元素:<p>内容</p>称为元素。那么什么是伪元素呢?就是在当前元素的左边或右边增加一个类似的元素。如:

左边添加一个元素,元素的内容是smyhvae

 div::before{       
     content:"smyhvae";    
     color:red;       
     background-color: pink;          
     width: 100px;       
     height: 50px;        
     display: inline-block;           
  }
右边添加一个元素,元素的内容是永不止步

div::after{    
        content:"永不止步";         
        color:yellowgreen;     
   }

注意:伪元素结合content去设置,伪元素是行内元素,需要转换成块元素才能设置宽高。

类似于选择器的功能:

  • E::first-letter 设置元素 E 里面的第一个字符的样式。

  • E::first-line 设置元素 E 里面的第一行的样式。

三css3新属性

3.1颜色相关的

RGBA、HSLA可应用于所有使用颜色的地方。

RGBA 即:Red、Green、Blue、Alpha  

R、G、B 的取值范围是:0~255

background-color: rgba(0, 0, 255, 0.3);

HSLA  即

  • H 色调,取值范围 0~360。0或360表示红色、120表示绿色、240表示蓝色。

  • S 饱和度,取值范围 0%~100%。值越大,越鲜艳。

  • L 亮度,取值范围 0%~100%。亮度最大时为白色,最小时为黑色。

  • A 透明度,取值范围 0~1。

background-color: hsla(240,50%,50%,0.4);

关于设置透明度的其他方式:

  • opacity: 0.3; 会将整个盒子及子盒子设置透明度。也就是说,当盒子设置半透明的时候,会影响里面的子盒子。
  • background: transparent; 可以单独设置透明度,但设置的是完全透明(不可调节透明度)。

3.2文本相关的

text-shadow:设置文本的阴影

格式举例:

text-shadow: 20px 27px 22px pink;

参数解释:水平位移 垂直位移 模糊程度 阴影颜色。

3.3盒子模型

CSS3 对盒模型做出了新的定义,即允许开发人员指定盒子宽度和高度的计算方式

这就需要用到 box-sizing属性。它的属性值可以是:content-boxborder-box。解释如下。

外加模式:(css的默认方式)

box-sizing: content-box;

解释:此时设置的 width 和 height 是内容区域的宽高。盒子的实际宽度 = 设置的 width + padding + border。此时改变 padding 和 border 的大小,也不会改变内容的宽高,而是盒子的总宽高发生变化。

内减模式:【需要注意】

box-sizing: border-box;

解释:此时设置的 width 和 height 是盒子的总宽高。盒子的实际宽度 = 设置的 width。此时改变 padding 和 border 的大小,会改变内容的宽高,盒子的总宽高不变。

3.4边框相关的

边框圆角:border-radius 属性 。可以让图片变成圆形效果。

边框阴影:box-shadow 属性。 box-shadow: 水平偏移 垂直偏移 模糊程度 阴影大小 阴影颜色

边框图片: border-image: url("images/border.png") 27/20px round;

3.5背景相关的

设置背景图片的尺寸:

/* 宽、高的具体数值 */
background-size: 500px 500px;

/* 宽高的百分比 */
background-size: 50% 50%;   // 如果两个属性值相同,可以简写成:background-size: 50%;

background-size: 100% auto;  //这个属性可以自己试验一下。

/* cover:会自动调整缩放比例,保证图片始终填充满背景区域,如有溢出部分则会被隐藏。 */
background-size: cover;

/* contain:会自动调整缩放比例,保证图片始终完整显示在背景区域。  */
background-size: contain;

控制背景显示:

/* 从 padding-box 内边距开始显示背景图 */
background-origin: padding-box;           //默认值

/* 从 border-box 边框开始显示背景图  */
background-origin: border-box;

/* 从 content-box 内容区域开始显示背景图  */
background-origin: content-box;

背景裁剪:

background-clip: content-box; 超出的部分,将裁剪掉。属性值可以是:

  • border-box 超出 border-box 的部分,将裁剪掉

  • padding-box 超出 padding-box 的部分,将裁剪掉

  • content-box 超出 content-box 的部分,将裁剪掉

3.6动画相关的

过渡动画:

transition: 让哪些属性进行过度 过渡的持续时间 运动曲线 延迟时间;

转换动画:

缩放:transform: scale(x, y);x:表示水平方向的缩放倍数。y:表示垂直方向的缩放倍数。

位移: transform: translate(水平位移, 垂直位移);

transform: translateX(100px);    //沿着 X 轴移动

transform: translateY(360px);    //沿着 Y 轴移动

transform: translateZ(360px);    //沿着 Z 轴移动
旋转:transform: rotate(角度); 改变旋转原点:transform-origin: 水平坐标 垂直坐标;
transform: rotateX(360deg);    //绕 X 轴旋转360度

transform: rotateY(360deg);    //绕 Y 轴旋转360度

transform: rotateZ(360deg);    //绕 Z 轴旋转360度

3D动画

transform-style: preserve-3d;     //让 子盒子 位于三维空间里

transform-style: flat;            //让子盒子位于此元素所在的平面内(子盒子被扁平化)

复杂的动画

1、定义动画的步骤

(1)通过@keyframes定义动画;

(2)将这段动画通过百分比,分割成多个节点;然后各节点中分别定义各属性;

(3)在指定元素里,通过 animation 属性调用动画。