2023蓝旭工作室前端暑期培训(一)

前情回顾

内容回顾


博客链接

(1) 进入前端、VScode&插件安装、浏览器

(2) HTML常用标签、CSS基础

(3) CSS进阶

(4) JavaScript基础

(6) BOM

本节内容:HTML5、CSS3、cookie、web storage、弹性布局

1 HTML5

1.1 HTML5 简介

HTML5 是 Hyper Text Markup Language 5 的缩写,是对 HTML 标准的第五次修订。

HTML5 技术结合了 HTML4.01 的相关标准并革新,符合现代网络发展要求,在2014年10月由万维网联盟(W3C)完成标准制定。

HTML5 仍处于完善之中。然而,大部分现代浏览器已经具备了某些 HTML5 支持。

1.2 HTML5 新增标签

1.2.1 语义化标签

HTML5新增的语义化标签主要有:<article><section><nav><aside><header><footer><time> 等等。

标签描述
article定义页面独立的内容区域
section定义文档中的节(section、区段)
nav定义导航链接的部分
aside定义页面的侧边栏内容
header定义了文档的头部区域
footer定义 section 或 document 的页脚
time定义日期或时间

语义化标签

为什么要使用语义化标签?

  • 为了在没有CSS的情况下,页面也能呈现出很好地内容结构、代码结构
  • 方便搜索引擎能识别页面结构,有利于SEO(搜索引擎优化)
  • 方便其他设备解析(如移动设备、盲人阅读器等)

1.2.2 多媒体标签

audio 音频标签
属性描述
autoplayautoplay如果出现该属性,则音频在就绪后马上播放。
controlscontrols如果出现该属性,则向用户显示控件,比如播放按钮。
looploop如果出现该属性,则每当音频结束时重新开始播放。
mutedmuted规定视频输出应该被静音。
preloadpreload如果出现该属性,则音频在页面加载时进行加载,并预备播放。如果使用 “autoplay”,则忽略该属性。
srcurl要播放的音频的 URL。
<audio src="song.mp3" controls="controls" loop="loop" autoplay="autoplay"></audio>
video 视频标签
属性描述
autoplayautoplay如果出现该属性,则视频在就绪后马上播放。
controlscontrols如果出现该属性,则向用户显示控件,比如播放按钮。
heightpixels设置视频播放器的高度。
looploop如果出现该属性,则当媒介文件完成播放后再次开始播放。
mutedmuted规定视频的音频输出应该被静音。
posterURL规定视频下载时显示的图像,或者在用户点击播放按钮前显示的图像。
preloadpreload如果出现该属性,则视频在页面加载时进行加载,并预备播放。如果使用 “autoplay”,则忽略该属性。
srcurl要播放的视频的 URL。
widthpixels设置视频播放器的宽度。

1.2.3 canvas画布

canvas 用于在网页中绘制图像,注意:必须通过 JavaScript 来绘制

1.2.4 SVG

  • SVG 是一种使用XML技术描述二维图形的语言,SVG 是一种矢量图。
  • SVG 可在图像质量不下降的情况下被放大,与 JPEG 和 GIF 比起来,尺寸更小,且可压缩性更强。
  • SVG 文件可通过以下标签嵌入 HTML 文档:<embed><object>或者 <iframe>

1.3 新表单属性

HTML5 中 input 的 type 属性值新增有 url, email, date, time, datetime, month, week, number, range, search, tel, color

详细了解

  • date 类型
    date 类型的 input 元素以日历的形式方便用户输入。
    当该文本框获取焦点时,显示日历,可以在日历中选择日期进行输入。
    格式:年/月/日

  • time 类型
    time 类型的 input 元素是一种专门用来输入时间的文本框,并且在提交时会对输入时间的有效性进行检查。它的外观取决于浏览器。

  • datetime 类型
    datetime 类型的 input 元素是一种专门用来输入UTC日期和时间(标准时间,格林威治时间)的文本框,并且在提交时会对输入的日期和时间进行有效性检查。

    Internet Explorer、Firefox 或者 Chrome 不支持 <input type="datetime"> 元素,Safari 中部分支持。
    Opera 12 以及更早的版本中完全支持。【不建议使用】

  • *datetime-local 类型
    datetime-local 类型的 input 元素是一种专门用来输入本地日期和时间的文本框,并且在提交时会对输入的日期和时间进行有效检查。
    格式:年/月/日 --:–

  • number 类型
    在提交时会检查输入的内容是否为数字。它们具有 min、max 与 step 属性。 带有数值控制按钮,以控制其数值,使之不超过最大值于最小值,同时在点击该数值控制按钮时,其中的数值会按 step 属性进行增减,当然也可以直接在其中输入数字。

  • range 类型
    range 类型的 input 元素是一种只允许输入一段范围内数值的文本框,它具有 min 属性与 max 属性,可以设定最小值与最大值(默认为 0 与 100 ),它还具有 step 属性,可以制定每次拖动的维度,用滑动条的方式进行值的制定。

1.4 编辑元素内容

contenteditable 属性指定元素内容是否可编辑。

<element contenteditable="true|false">
//true指定元素可编辑
//false指定元素不可编辑
<div contenteditable="true">该片段可编辑</div>

注意

当元素中没有设置 contenteditable 属性时,元素将从父元素继承。
contenteditable 在编辑时如果手动的按了换行键,会添加一个 div 。这个不论定义被编辑属性的标签是什么,这里换行后都会添加一个 div 包起来。
当编辑的时候会触发 oninput 事件。(当 input 的 value 值发生变化时就会触发,不用等到失去焦点)

1.5 自定义属性

通过 data-自定义属性名来自行定义属性,来进行一些数据的存放。

<div id="div1" class="div1" data-id = "myId" data-class = "myClass" data-id-and-class = "Hello"></div>

使用 getAttribute 方法获取自定义属性的值

let div = document.getElementById("div1");
console.log(div.getAttribute("data-id"));
console.log(div.getAttribute("data-class"));
console.log(div.getAttribute("data-id-and-class"));

使用 setAttribute 方法设置自定义属性的值【可用于添加自定义属性】

div.setAttribute("date-name","lihua");

当然我们也可以通过直接定义属性名的方法定义自定义属性,这和使用 data-* 的自定义属性没有区别,只是属性名不一样。

<div id="div2" myName = "Hello"></div>
<script>
    var div = document.getElementById("div2");
    var myName = div.getAttribute("myName");
    console.log(myName);     //Hello
</script>

data-* 属性选择器

根据自定义的 data-* 属性选择相关的元素

// 选择所有具有 data-class 属性的元素
let div1 = document.querySelectorAll("[data-class]");

// 选择所有 data-class 属性值为 class 的元素
let div2 = document.querySelectorAll("[data-class='class']");

同样,我们可以将选择器用于 CSS 样式设置中

<style>
    div[data-class]{
        width: 100px;
        height: 100px;
        background: #8959a8;
        border: 1px solid #cccccc;
    }
    div[data-class="my"]{
        box-shadow: 0 0 5px 5px #CCCCCC;
    }
</style>
......
<div id="div1" data-class = "myClass"></div>
<div id="div2" data-class = "my" ></div>

1.6 数据存储 cookie

什么是cookie

cookie 是某些网站为了辨别用户身份,进行 Session 跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。一般由服务端产生,发送给客户端保存。

cookie处理过程

服务器向客户端发送 cookie
浏览器将 cookie 保存
每次 http 请求都会将 cookie 发送给服务器

cookie格式

cookie 是一段不超过 4KB 的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制 cookie 有效期、安全性、使用范围的可选属性组成。

  • Set-Cookie: “name=value;domain=.domain.com;path=/;expires=Sat, 11 Jun 2016 11:29:42 GMT;HttpOnly;secure”
  • Name/Value
    设置Cookie的名称及相对应的值,添加多个 name/value 就用封号隔开
  • domain
    可以访问此 cookie 的域名,如 domain 值为 b.com ,则以 b.com 结尾的域名都可以访问此 cookie
  • path
    设置在 domain 这个域下可以访问 cookie 的页面路径
  • expires
    失效时间
  • HttpOnly
    设置后不允许通过脚本读写cookie
  • secure
    安全标志,是否只能对https协议发送cookie

JS 操作 cookie
document.cookie 可以获取到 cookie ,是一个字符串,在这基础上进行增删改查。
删除 cookie 将 expires 的值设置为过去的时间即可

1.7 Web Storage

由于 cookie 不适合大量数据的存储一般只有4KB的空间大小,且每次 http 请求都会携带 cookie 。对于一些仅需要在客户端上存储操作的数据,使用 WebStorage 操作更方便,存储量更大,并且不必每次都向服务端发送数据。

两种 storage:localStorage(存储空间一般为 20M) 和 sessionStorage(存储空间一般为 5M) ,二者以键值对形式存取数据,在浏览器中,二者存在于window对象里。

其中,localStorage 没有过期时间,需要手动清除,而 sessionStorage 的生命周期是在浏览器关闭之前。

JS 操作 Web Storage
保存数据:localStorage/sessionStorage.setItem(‘key’, ‘value’)
读取数据:localStorage/sessionStorage.getItem(‘key’)
删除数据:localStorage/sessionStorage.removeItem(‘key’)
清空数据:localStorage/sessionStorage.clear()
注意存取数据时,key 和 value 均为字符串,存储数据时需要将 value 字符串化,获取数据时需要将 value 格式化

1.8* 多线程

Web Woker

HTML5 新增加了一个 WebWorkerAPI ,用户可以创建多个在后台的线程,将耗费较长时间的处理交给后台面不影响用户界面和响应速度,这些处理不会因用户交互而运行中断。

1.9* 双向通信

Web Socket

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

1.10* 拖放API

Drag/Drop+js

1.11* 地理定位

获取当前定位:navigator.geolocation.getCurrentPosition(success, error, options)

2 CSS3

2.1 CSS3 简介

CSS3 是 CSS(层叠样式表)技术的升级版本,于 1999 年开始制订,2001 年 5 月 23 日 W3C 完成了 CSS3 的工作草案。

2.2 浏览器兼容性

由于 web 浏览器对于 css3 的兼容时间是不同的,而后每个浏览器厂商相继在兼容方式上加了前缀,但有一些属性没有加前缀的是,因为随着时间的推移全部的浏览器厂商都兼容了这些属性,所以通过协商去掉了前缀。

前缀写法
chorme/sifter ----> -webkit
IE ------> -ms
firefox -----> -moz
opera -----> -o

2.3 CSS3 新样式

指定背景图像的大小 background-size: length|percentage|cover|contain;
指定边框圆角 border-radius:1-4 length|%
指定边框图片 border-image:
指定元素的投影 box-shadow: h-shadow v-shadow blur spread color inset;

2.4 2D/3D 转换

2D转换
CSS3 转换可以对元素进行移动、缩放、转动、拉长或拉伸。

  • 平移 transform: translate(50px,100px); //沿x,y轴正方向移动的长度
  • 旋转 transform: rotate(30deg); //顺时针旋转的角度
  • 缩放 transform: scale(2,3); //宽为原来的2倍,高为原来的3倍
  • 倾斜 transform: skew(30deg,20deg); //在x,y轴倾斜的角度

3D转换
transform:基于平面的变换方法中,拓展出三个维度的变换方法
transform-origin:允许你改变被转换元素的位置。
transform-style:规定被嵌套元素如何在 3D 空间中显示。
perspective:规定 3D 元素的透视效果。
perspective-origin:规定 3D 元素的底部位置。
backface-visibility:定义元素在不面对屏幕时是否可见。

2.5 CSS3 新增选择器

新增属性选择器
elem[name^=‘item’] 匹配含有属性name并且属性值以item开头的elem
elem[name$=‘item’] 匹配含有属性name并且属性值以item结尾的elem
elem[name*=‘item’] 匹配含有属性name并且属性值包含item的elem

新增结构伪类选择器
E:first-child 匹配父元素中第一个E,且这个E为父元素的第一个元素。IE7就可以支持
E:last-child 匹配父元素中最后一个E元素,且这个E元素为父元素的最后一个元素
E:nth-child(n) 用于匹配索引值为n的子元素。索引值从1开始
E:only-child 这个伪类一般用的比较少,比如上述代码匹配的是div下的有且仅有一个的p,也就是说,如果div内有多个p,将不匹配。
E:nth-last-child(n) 从最后一个开始算索引。
E:first-of-type 匹配同级兄弟元素中的第一个E元素
E:last-of-type 匹配同级兄弟元素中的最后一个E元素
E:nth-of-type(n) 匹配同类型中的第n个同级兄弟元素E
E:only-of-type 匹配属于同类型中唯一兄弟元素的E
E:nth-last-of-type(n) 匹配同类型中的倒数第n个同级兄弟元素
E:root 匹配文档的根元素(html)
E:empty{} 匹配没有任何子元素(包括包含文本)的元素E

2.6 动画

关键帧规则(@keyframes)

@keyframes animateName{
	from{/* css样式 */}
	to{/* css样式 */}
}
@keyframes animateName{
    0%  {/* css样式 */} /* 可用 from 代替 */
    25% {/* css样式 */}
    50% {/* css样式 */}
    75% {/* css样式 */}
    100%{/* css样式 */} /* 可用 to 代替 */
}
animation: animation-name animation-duration animation-timing-function animation-delay animation-iteration-count animation-direction animation-fill-mode animation-play-state;
  • animation-name
    动画名,指定动画的名称

  • animation-duration
    定义动画的持续时间,默认为 0s
    若不配置 animation-duration 则默认请况下是没有动画效果的
    即便使用 animation-name 锁定了动画名称,由于动画持续时间为 0s,所以没有效果

  • animation-timing-function

    定义时间函数,通过这个选项,可配置动画随时间的运动速率和轨迹

    描述
    linear动画从头到尾的速度是相同的
    ease默认值 动画以低速开始,然后加快,在结束前变慢
    ease-in动画以低速开始
    ease-out动画以低速结束
    ease-in-out动画以低速开始和结束
    cubic-bezier(n,n,n,n)贝塞尔曲线(自定义数值),可到相关网站可视化设置
  • animation-delay
    设置动画延迟时间,单位为秒

  • animation-iteration-count
    设置动画执行的次数,默认值为 1 (只执行一次)
    可设置值为正整数或者 infinite (执行无限次)

  • animation-direction
    设置动画执行方向

    描述
    normal默认值 动画按正常播放
    reverse动画反向播放
    alternate动画正向交替执行(正向->反向)Loop
    alternate-reverse动画反向交替执行(反向->正向)Loop
    inherit从父元素继承该属性
  • animation-fill-mode
    设置动画的填充模式

    描述
    none默认值 动画在动画执行前后,不会应用任何样式到目标元素
    forwards在动画结束后(由 animation-iteration-count 决定),目标元素将保持应用最后帧动画
    backwards在动画结束后(由 animation-iteration-count 决定),目标元素将保持应用起始帧动画
  • animation-play-state
    设置动画的执行状态,通常通过JavaScript动态控制
    默认值为 running,可以设为 paused (暂停),动画将停止执行。

2.7* 多列布局

CSS3 可以将文本内容设计成像报纸一样的多列布局

3 Flex 弹性布局

3.1 弹性布局介绍

布局的传统解决方案,基于盒子模型,依赖 display 属性 + position 属性 + float 属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。

2009 年,W3C 提出了一种新的方案---- Flex 布局(弹性布局),可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。

Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。

任何一个容器都可以指定为Flex布局。

.box{
    display:flex;
}
/* 行内元素也可以使用flex布局 */
.inline-box{
    display: inline-flex;
}
/* Webkit内核的浏览器,必须加上-webkit前缀 */
.box{
    display: -webkit-flex; /* Safari */
	display: flex;
}

注意,设为 Flex 布局以后,子元素的 float 、 clear 和 vertical-align 属性将失效。

3.2 弹性布局基本概念

采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。
它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。

容器默认存在两根轴:主轴(main axis)和交叉轴/辅轴(cross axis)。

主轴的开始位置(与边框的交叉点)叫做 main start ,结束位置叫做 main end;
交叉轴的开始位置叫做 cross start ,结束位置叫做 cross end 。

项目默认沿主轴排列。单个项目占据的主轴空间叫做 main size ,占据的交叉轴空间叫做 cross size 。

3.3 容器的属性

3.3.1 flex-direction

flex-direction 属性决定了主轴的方向,即项目排列的方向。

描述
row从左到右按行进行布局
row-reverse从右到左按行进行布局
column从上到下按列进行布局
column-reverse从下到上按列进行布局

3.3.2 flex-wrap

默认情况下,flex 容器中的所有项目都排列在一条轴线上

flex-wrap 属性决定一行内项目过多(一条轴线排不下)时,项目排列是否可以换行。

描述
nowrap不设置折行 默认值
wrap剩余空间如果不够就折行 第一行在上方
wrap-reverse反向折行 第一行在下方

3.3.3 flex-flow

flex-flow : flex-direction flex-wrap ;

3.3.4 justify-content

justify-content 属性决定项目在主轴方向上的对齐方式。

属性
flex-start向主轴的 start 方向对齐 默认值
center居中对齐
flex-end向主轴的 end 方向对齐
space-between两端对齐,项目之间的间隔都相等
space-around拉手对齐,每个项目两侧的间隔相等

3.3.5 align-items

align-items 属性决定项目在辅轴方向上的对齐方式。

描述
flex-start向辅轴的 start 方向对齐
center居中对齐
flex-end向辅轴的 end 方向对齐
baseline项目的第一行文字的基线对齐
stretch默认值 若项目未设置高度或设为auto,拉伸当前项目在辅轴方向上的长度,完整占据弹性容器的辅轴长度

3.3.6 align-content

align-coontent 属性决定多行项目在容器中的整体对齐方式,即在 flex-wrap:wrap/wrap-reverse 情况下的对齐方式,相当于多行项目的辅轴对齐方式,对单行单列项目不起做用

描述
flex-start向辅轴的 start 方向对齐
center居中对齐
flex-end向辅轴的 end 方向对齐
space-between两端对齐,项目之间的间隔都相等
space-around拉手对齐,每个项目两侧的间隔相等
stretch默认值 拉伸当前项目在辅轴上的高度,完整占据弹性容器的辅轴长度

3.4 项目的属性

3.4.1 order

order 属性决定项目在容器中的排列顺序,数值越小,排名越靠前,默认值为 0。

注意:浏览器解析代码时排在前面的会先解析,因此可把代码顺序和排列顺序分开,使主要内容先被解析。

3.4.2 flex-grow

flex-grow 属性决定项目被拉大的比例,按比例分配项目空间。

默认值为 0 (项目不占用剩余空间),可将值修改为自然数 n (项目据空间若干份中的n份)。

举例
如果所有项目的 flex-grow 属性都为1,则它们将等分剩余空间(如果有的话)。
如果一个项目的 flex-grow 属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

注意:不要定义 width、height。

3.4.3 flex-shrink

flex-shrink 属性决定弹性容器缩小时,项目被压缩的比例。

默认值为1,表示弹性项目默认等比例压缩,0则表示不压缩。
取值值可以任意,按比例分配被压缩的长度,并进行压缩。负值对该属性无效

举例
如果所有项目的 flex-shrink 属性都为1,当空间不足时,都将等比例缩小。
如果一个项目的 flex-shrink 属性为0,其他项目都为1,则空间不足时,前者不缩小。

3.4.4 flex-basis

flex-basis 属性决定在奉陪多余空间之前,项目在主轴上的默认尺寸,可设置为 auto ,其优先级高于 width、height 属性。
浏览器根据这个属性,计算主轴是否有多余空间。

默认值为 auto,即项目的本来大小。

可以设为跟 width或height 属性一样的值(比如 350px ),则项目将占据固定空间。

3.4.5 flex

flex : flex-grow flex-shrink flex-basis ;

该属性有两个快捷值:auto ( 1 1 auto ) 和 none ( 0 0 auto )。

建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

3.4.6 align-self

align-self 属性决定单个项目在辅轴上的对齐方式,可覆盖 align-items 属性。

描述
auto默认值 继承父元素的 align-items 属性,如果没有父元素,则等同于 stretch
flex-start向辅轴的 start 方向对齐
center居中对齐
flex-end向辅轴的 end 方向对齐
space-between两端对齐,项目之间的间隔都相等
space-around拉手对齐,每个项目两侧的间隔相等
stretch拉伸当前项目在辅轴上的高度,完整占据弹性容器的辅轴长度
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值