HTML5、CSS3学习笔记

HTML5、CSS3学习笔记

一、 HTML5 和 CSS3 提高

1. HTML5 的新特性

1.1 HTML5 新增的语义化标签

  • :头部标签

  • :内容标签

  • :定义文档某个区域

  • :尾部标签

    注意:

  • 这种语义化标准主要是针对搜索引擎的

  • 这些新标签页面中可以使用多次

  • 在 IE9 中,需要把这些元素转换为块级元素

  • 其实,我们移动端更喜欢使用这些标签

1.2 HTML5 新增的多媒体标签

HTML5 在不使用插件的情况下,也可以原生的支持音频格式文件的播放,当然,支持的格式是有限的。

1. 视频

当前

<video src="文件地址" controls="controls">video>
<video controls="controls" width="300">
	<source src="move.ogg" type="video/ogg" >
	<source src="move.mp4" type="video/mp4" >
	您的浏览器暂不支持 <video> 标签播放视频

属性 描述
autoplay autoplay 视频就绪自动播放(谷歌浏览器需要添加muted来解决自动播放问题)
controls controls 向用户显示播放控件
width pixels(像素) 设置播放器宽度
height pixels(像素) 设置播放器高度
loop loop 播放完是否继续播放该视频,循环播放
preload auto (预先加载视频) none(不应加载视频) 规定是否预加载视频(如果有了autoplay就忽略该属性)
src url 视频url地址
poster lmgurl 加载等待的画面图片
muted muted 静音播放
2. 音频

当前

<audio src="文件地址" controls="controls">audio>
< audio controls="controls" >
	<source src="happy.mp3" type="audio/mpeg" >
	<source src="happy.ogg" type="audio/ogg" >
	您的浏览器暂不支持 <audio> 标签。

属性 描述
autoplay autoplay 如果出现该属性,则音频在就绪后马上播放。
controls controls 如果出现该属性,则向用户显示控件,比如播放按钮。
loop loop 如果出现该属性,则每当音频结束时重新开始播放。
src url 要播放的音频的URL。

谷歌浏览器把音频和视频自动播放禁止了

1.3 HTML5 新增的 input 类型

属性值 说明
type=“number” 限制用户输入必须为数字类型
type=“tel” 手机号码
type="search” 搜索框

1.4 HTML5 新增的表单属性

属性 说明
required required 表单拥有该属性表示其内容不能为空,必填
placeholder 提示文本 表单的提示信息,存在默认值将不显示
autofocus autofocus 自动聚焦属性,页面加载完成自动聚焦到指定表单
autocomplete off / on 当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在字段中填写的选项。默认已经打开,如autocomplete="on”,关闭autocomplete ="off”需要放在表单内,同时加上 name属性,同时成功提交
multiple multiple 可以多选文件提交

可以通过以下设置方式修改placeholder里面的字体颜色:
input::placeholder {
color: pink;
}

2. CSS3 的新特性

注意:类选择器、属性选择器、伪类选择器,权重为 10。

2.1 属性选择器

属性选择器可以根据元素特定属性的来选择元素。 这样就可以不用借助于类或者id选择器。

选择符 简介
E[att] 选择具有att属性的E元素
E[att=“val”] 选择具有att属性且属性值等于val的E元素
E[att=“val”] 匹配具有att属性且值以val开头的E元素
E[att$=“val”] 匹配具有att属性且值以val结尾的E元素
E[att*=“val”] 匹配具有att属性且值中含有val的E元素

2.2 结构伪类选择器

结构伪类选择器主要根据文档结构来选择器元素, 常用于根据父级选择器里面的子元素

选择符 简介
E:first-child 匹配父元素中的第一个子元素E
E:last-child 匹配父元素中最后一个E元素
E:nth-child(n) 匹配父元素中的第n个子元素E
E:first-of-type 指定类型E的第一个
E:last-of-type 指定类型E的最后一个
E:nth-of-type(n) 指定类型E的第n个

nth-child(n):

  • n 可以是数字,关键字和公式
  • n 如果是数字,就是选择第 n 个子元素, 里面数字从1开始…
  • n 可以是关键字:even 偶数,odd 奇数
  • n 可以是公式:常见的公式如下 ( 如果n是公式,则从0开始计算,但是第 0 个元素或者超出了元素的个数会被忽略 )
公式 取值
2n 偶数
2n+1 奇数
5n 5 10 15…
n+5 从第5个开始(包含第五个)到最后
-n+5 前5个(包含第5个)…

区别:

  1. nth-child 对父元素里面所有孩子排序选择(序号是固定的) 先找到第n个孩子,然后看看是否和E匹配
  2. nth-of-type 对父元素里面指定子元素进行排序选择。 先去匹配E ,然后再根据E 找第n个孩子

2.3 伪元素选择器

伪元素选择器可以帮助我们利用CSS创建新标签元素,而不需要HTML标签,从而简化HTML结构。

选择符 简介
::before 在元素内部的前面插入内容
::after 在元素内部的后面插入内容

注意:

  • before 和 after 创建一个元素,但是属于行内元素
  • 新创建的这个元素在文档树中是找不到的,所以我们称为伪元素
  • 语法: element::before {}
  • before 和 after 必须有 content 属性
  • before 在父元素内容的前面创建元素,after 在父元素内容的后面插入元素
  • 伪元素选择器和标签选择器一样,权重为 1
/* 当我们鼠标经过了 土豆这个盒子,就让里面before遮罩层显示出来 */
.tudou:hover::before {
     
	/* 而是显示元素 */
	display: block;
}

2.4 CSS3 盒子模型

CSS3 中可以通过 box-sizing 来指定盒模型,有2个值:即可指定为 content-box(默认)、 border-box,这样我们计算盒子大小的方式就发生了改变。

可以分成两种情况:

  1. box-sizing: content-box 盒子大小为 width + padding + border (以前默认的)
  2. box-sizing: border-box 盒子大小为 width

如果盒子模型我们改为了box-sizing: border-box , 那padding和border就不会撑大盒子了(前提padding和border不会超过width宽度)

2.5 CSS3 其他特性

CSS3滤镜filter:

filter: blur(5px); 
/*blur模糊处理 数值越大越模糊*/

CSS3 calc 函数:

width: calc(100% - 80px);
/*calc() 此CSS函数让你在声明CSS属性值时执行一些计算。*/

2.6 CSS3 过渡

我们现在经常和 :hover 一起 搭配使用,此时transition过渡是作用在 :hover 里。

谁做过渡给谁加 。

transition: 要过渡的属性 花费时间 运动曲线 何时开始;
  1. 属性 : 想要变化的 css 属性, 宽度高度 背景颜色 内外边距都可以 。如果想要所有的属性都变化过渡, 写一个all 就可以。
  2. 花费时间: 单位是 秒(必须写单位) 比如 0.5s
  3. 运动曲线: 默认是 ease (可以省略)
    • linear:匀速
    • ease:匀减速
    • ease-in:加速
    • ease-out:减速
    • ease-in-out:先加速后减速
  4. 何时开始 :单位是 秒(必须写单位)可以设置延迟触发时间 默认是 0s (可以省略)

2.7 CSS3 2D转换

2D 转换之移动 translate:

2D移动是2D转换里面的一种功能,可以改变元素在页面中的位置,类似定位。

transform: translate(x,y); 
或者分开写
transform: translateX(n);
transform: translateY(n);
  • 定义 2D 转换中的移动,沿着 X 和 Y 轴移动元素
  • translate最大的优点:不会影响到其他元素的位置
  • translate中的百分比单位是相对于自身元素的 translate:(50%,50%);
  • 对行内标签没有效果

2D 转换之旋转 rotate:

2D旋转指的是让元素在2维平面内顺时针旋转或者逆时针旋转。

transform:rotate(度数)
  • rotate里面跟度数, 单位是 deg 比如 rotate(45deg)
  • 角度为正时,顺时针,负时,为逆时针
  • 默认旋转的中心点是元素的中心点

2D 转换中心点 transform-origin:

transform-origin: x y;
  • 注意后面的参数 x 和 y 用空格隔开
  • x y 默认转换的中心点是元素的中心点 (50% 50%)
  • 还可以给x y 设置 像素 或者 方位名词 (top bottom left right center)

2D 转换之缩放scale:

transform: scale(x,y);
  • 注意其中的x和y用逗号分隔
  • transform:scale(1,1) :宽和高都放大一倍,相对于没有放大
  • transform:scale(2) :只写一个参数,第二个参数则和第一个参数一样,相当于 scale(2,2)
  • transform:scale(0.5,0.5):缩小
  • sacle缩放最大的优势:可以设置转换中心点缩放,默认以中心点缩放的,而且不影响其他盒子

注意:

  1. 同时使用多个转换,其格式为:transform: translate() rotate() scale() …等
  2. 其顺序会影转换的效果。(先旋转会改变坐标轴方向)

2.8 动画

1. 用keyframes 定义动画(类似定义类选择器)
@keyframes 动画名称 {
     
   0%{
     
        width:100px;
   }  
   100%{
     
        width:200px;
   }
}

动画序列:

  • 0% 是动画的开始,100% 是动画的完成。这样的规则就是动画序列。
  • 在 @keyframes 中规定某项 CSS 样式,就能创建由当前样式逐渐改为新样式的动画效果。
  • 动画是使元素从一种样式逐渐变化为另一种样式的效果。您可以改变任意多的样式任意多的次数。
  • 请用百分比来规定变化发生的时间,或用关键词 “from” 和 “to”,等同于 0% 和 100%。
2. 动画的基本使用
div {
     
	width: 200px;
	height: 200px;
	background-color: aqua;
	margin: 100px auto;
	/* 调用动画 */
	animation-name: 动画名称;
	/* 持续时间 */
	animation-duration: 持续时间;
}

常用属性:

属性 描述
@keyframes 规定动画。
animation 所有动画属性的简写属性,除了animation-play-state属性。
animation-name 规定@keyframes动画的名称。(必须的)
animation-duration 规定动画完成一个周期所花费的秒或毫秒,默认是0。(必须的)
animation-timing-function 规定动画的速度曲线,默认是“ease”。
animation-delay 规定动画何时开始,默认是0。
animation-iteration-count 规定动画被播放的次数,默认是1,还有infinite
animation-direction 规定动画是否在下一周期逆向播放,默认是“normal“,alternate逆播放
animation-play-state 规定动画是否正在运行或暂停。默认是"running",还有"paused"。
animation-fill-mode 规定动画结束后状态,保持forwards回到起始backwards

简写:

animation:动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束的状态;

animation: myfirst 5s linear 2s infinite alternate;
  • 暂停动画:animation-play-state: puased; 经常和鼠标经过等其他配合使用

  • 想要动画走回来 ,而不是直接跳回来:animation-direction : alternate

  • 盒子动画结束后,停在结束位置: animation-fill-mode : forwards

  • animation-timing-function:规定动画的速度曲线,默认是“ease”

    • linear:匀速
    • ease:匀减速
    • ease-in:加速
    • ease-out:减速
    • ease-in-out:先加速后减速
    • steps():指定了时间函数中的间隔数量(步长:一节一节走)

2.9 CSS3 3D 转换

x轴向右,y轴向下,z轴向外。

3D移动 translate3d:

transform: translate3d(x,y,z); 
/*xyz是不能省略的,如果没有就写0*/
/*或者分开写*/
transform: translateX(npx);
transform: translateY(npx);
transform: translateZ(npx);
/*没有加透视在z轴上的移动是看不到了,加了透视相当于增加一个参照面,z轴上的移动会反映成盒子大小*/
transform: translatex(100px) translateY(100px) translateZ(100px);

透视 perspective:

在2D平面产生近大远小视觉立体,但是只是效果二维的。

  • 透视的单位是像素(越小越大)
  • 透视写在被观察元素的父盒子上面的

3D旋转 rotate3d:

/*xyz是表示旋转轴的矢量,是标示是否希望沿着该轴旋转,最后一个标示旋转的角度。*/
transform: translate3d(x,y,z,deg); 
/*就是沿着x轴旋转 45deg*/
transform:rotate3d(1,0,0,45deg);
/*就是沿着对角线旋转 45deg*/
transform:rotate3d(1,1,0,45deg);

/*或者分开写(单位为45deg)*/
transform: translateX(n);
transform: translateY(n);
transform: translateZ(n);

左手准则(手背方向):

左手拇指为x正轴,则四指弯曲的方向为正角度旋转方向。

左手拇指为y正轴,则四指弯曲的方向为正角度旋转方向。

3D呈现 transfrom-style:

  • 控制子元素是否开启三维立体环境。
  • transform-style: flat 子元素不开启3d立体空间 默认的
  • transform-style: preserve-3d; 子元素开启立体空间
  • 代码写给父级,但是影响的是子盒子

一般案例需使用到transition、perspective、rotate3d/translate3d、transfrom-style这几种样式。

2.10 浏览器私有前缀

浏览器私有前缀是为了兼容老版本的写法,比较新版本的浏览器无须添加。

  • -moz-:代表 firefox 浏览器私有属性
  • -ms-:代表 ie 浏览器私有属性
  • -webkit-:代表 safari、chrome 私有属性
  • -o-:代表 Opera 私有属性

你可能感兴趣的:(前端三件套,html5,css3)