第一天我们认识了web的结构,学习了HTML的框架和基础知识、常用标签等。
一、web标准构成:
主要包括结构(Structure)、表现(Presentation)和行为(Behavior)三个方面
①结构标准:结构用于对网页元素进行整理和分类,即HTML,最重要。
②表现标准:表现用于设置网页元素的版式、颜色、大小等外观样式,主要指的是CSS。
③行为标准:行为是指网页模型的定义及交互的编写,即Javascript。
二、HTML标签&属性:
1.基本结构:
HTML的全称为超文本标记语言,是一种标记语言。
后缀:.html
结构:
<html>
<head>
<title>index首页</title>
</head>
<body>
这是我的第一个页面
</body>
</html>
2.标签(标记)
①标签通常是成对出现的,但也有极少部分只有开始标签,没有结束标签,称作单标签或者空标签
②一个标签完整组成部分是分为3个部分 开始标签 结束标签 内容部分
<开始标签>内容部分</结束标签>
③标签是允许套的,但是要符合嵌套的标准
④每一个标签都具备其对应含义
通常,我们也会将标签称作为元素 、根元素 、head元素
3.属性
属性是额外的对标签进行描述的信息
①通常格式是:key=value 键值对的形式
②一个标签是可以拥有多个属性的, 多个属性之间通过空格分隔
③属性可以分为两大类:
全局属性:任何元素都具备的属性,叫做全局属性
- 常见的全局属性:
id class style hidden
局部属性(特定属性):只能某一些元素能够使用
4.常用的标签
标题标签:h1-h6(h1最大,从大到小)
段落标签:p标签 表示文档内容部分
斜体标签:i标签,标签内容重要;
表示语义强调的用em标签
粗体标签:b标签,还有strong标签表示强调重要内容
表示引用的标签:blockquote长引用
段引用:q标签 会自动加上引号
上标签:sup
下标签:sub
删除线:del
插入线:ins
空标签:
br:换行标签
hr:水平标签
注意:html中只能识别一个空格
实体字符:
大于:>; 小于:<;;版权符号©;
5.元素(标签)的分类
块元素(block element):
特点:
①块元素具有布局特点,一般常用页面的整体布局
②块元素独占(其父元素)页面的一行
③.块元素可以嵌套任何类型的元素(除p元素以外,p元素中不能嵌套任何的块元素)
④块元素可以设置宽、高 默认的宽度是其父元素的宽度
⑤块元素默认高度是由内容决定的
行内元素(inline element):
特点:
①正常情况下,行内元素是不会换行的
②行内元素会在一行排不下时进行换行
③行内元素不能设置宽、高 ,行内元素的宽和高都是由其内容决定的
④行内元素一般不会嵌套块级元素,大多数是嵌套文本或者其他的行内元素
行内块元素(inline-block element):
特点:
①行内块元素不会独占一行,在一行排列
②可以设置宽高(默认是内容的宽、高)
5.列表标签
1.在html中是可以创建列表的,列表有三种!
①有序列表:使用ol标签来创建的,列表中的每一项是通过li标签来代表
比如:
<ol>
<li>铅笔</li>
<li>钢笔</li>
<li>圆珠笔</li>
</ol>
②无序列表(相对说用的最多,重要)
使用ul标签来创建的,它是无序的,没有顺序标号
无序列表中的每一项也是通过li标签来代表的
比如:
<ul>
<li>土豆</li>
<li>茄子</li>
<li>番茄</li>
</ul>
③定义列表:使用dl标签来创建的
使用dt来表示定义的内容,小标题
使用dd来解释说明dt
比如:
<dl>
<dt>属性</dt>
<dd>xxxxx</dd>
<dt>标题</dt>
<dd>yyyy</dd>
</dl>
总结:
①ul和ol都是块级元素,通常作为布局容器使用
②ul和ol的子项应该是li元素
③li元素是块级元素,可以嵌套任何其他元素
6.超链接标签
属性:
①href :指定跳转的目标资源路径,
值可以是外部网站地址
值可以是内部页面的地址
②target:定义新网页的打开方式
_blank在一个新窗口中打开页面
_self(默认值)在当前窗口中打开该页面
a标签是一个行内标签
注意:a标签比较特殊,a标签中可以嵌套自身以外的任何元素。
作用
①可以访问到外部网络的资源
②可以访问本地网页资源
③可以作为锚点,在当前页面指定位置进行地位跳转
超链接就是让我们从一个网页跳转到其他页面,将各个单独的页面进行关联
html中使用a标签用来定义超链接
a标签的跳转方式
①通过href属性跳转到外部网络资源 百度网站
比如:
<a href="http://www.baidu.com">百度一下</a>
②通过href属性跳转到内部,本地的网页资源
比如:
<a href="kugou.html">酷狗音乐</a>
③通过超链接跳转到当前页面的指定位置
配合id属性,进行跳转,在指定元素的位置设置id值,通过href
比如:
<a href="#my_x">跳转到XXX</a>
<p>sss</p>
<p>ddd</p>
<p>xxx</p>
④特殊情况 占位 a标签不再重新刷新
通过Javas:;来进行占位使用,防止页面重刷
<a href="JavaScript:;"></a>
7.文件路径
相对路径:
从当前文件出发去寻找其他的资源,当前的位置为中心
./代表当前目录下的资源,如果访问同级目录资源./可以省略
../上一级目录的资源
../../上两级目录的资源
/ 从根目录下去寻找资源,该方式是相对路径
绝对路径:
与当前的文件是没有联系的,不是根据当面该文件所处的位置去访问对应的资源
8.img标签
用于渲染,图片资源的标签
属性
src:指定外部的图片资源路径,或者本地图片资源路径
alt:对图片额外信息的描述,方便SEO检索到该图片
当图片无法加载时,显示alt中信息,提示用于,该图片的大致内容
width:设置图片的宽度,单位px
height:设置图片的高度,单位px
注意:一般只设置宽度或者高度,两者选一即可,另一个属性让它自适应
img元素是行内块元素(替换元素),空标签
9.div和span标签
div标签是块级元素:
①具备块级元素的特征
②典型的块级元素,可以嵌套任何元素
③div没有任何的语义
④通常作为页面布局的容器使用
span标签是行内元素:
①具备行内元素的特征
②典型的行内元素,通常用于存放文本,其它的行内元素
③span没有任何的语义
④作为行内容器使用
二、CSS(层叠样式表)
主要用于设置网页整体的布局,以及元素的样式设置负责网页的美观
1.引入css的三种方式:
①行内样式(不推荐使用)
每一个元素都具备style属性,通过该属性可以设置元素的相关样式
缺点:复用性不高,样式更新麻烦
不符合网页的标准 因为html是属于结构性文件,负责的网页的结构
比如:
<div style="width: 100px;height: 100px; color: blue;"></div>
②内联样式
通过style标签,在html中设置当前网页所需的css样式内容
style标签不是用户所见的内容,通常放在head标签中
缺点:
复用性不高、还是存在模块没有分离,相互耦合,并不独立
比如:
<style>
.father{
width: 300px;
height: 300px;
background-color: red;
overflow: hidden;
margin: 0 auto;
outline: 1px solid black;
}
</style>
③外联样式(该方式是最优的选择)
将css的内容保存为一份独立的文件,该文件可以被任何的页面进行引用
在html中通过link标签去引入外部样式文件
比如:
<link rel="stylesheet" href="./reset.css">
<link rel="stylesheet" href="./kugou.css">
<link rel="stylesheet" href="./inconfont/iconfont.css">
2.CSS的基础语法
css两部分组成:
选择器和声明块
选择器1{
各式各样的的样式属性
key:value;
key:value;
key:value;
}
选择器2{
key:value;
key:value;
key:value;
}
要为元素设置某种样式,前提是找到、选择这个元素,然后才能对其设置样式属性
3.基础选择器
①元素选择器:
通过元素的名字去选择对应的元素 如:div span p ul
②id选择器 :
语法: #id值 ,每一个元素都具备id属性,id值是唯一的
比如:
<div id="box">
<style>
#id{
}
</style>
③类选择器:
语法 : .类名 ,每一个元素都具备class属性,类名是可以重复的
比如:
<div class="father">
.father{
width: 300px;
height: 300px;
}
④通配符选择器:
语法:* 选择页面中所有的元素
*{
}
4.复合选择器
①交集选择器:(顺序不能更改)
选择器1选择器2选择器3
被选中的元素需要满足所有的选择器条件,才会被选中
div .haha{
}
②并集选择器:
选择器1,选择器2,选择器3
被选中的元素只需要满足其中一个选择器条件,就会被选中
div,.haha{
}
5.关系选择器
①子代选择器:
选择器1(父)>选择器2(子)
选择选择器1里面包含的选择器2
②后代选择器:(权限更高)
选择器1 选择器2
③兄弟选择器:
选择器1+选择器2
选择某个元素后的第一个兄弟元素
选择器1~选择器2
选择某个元素后的所有兄弟元素
6.属性选择器
title属性:
全局属性,额外对该元素的描述信息
属性选择器语法:
①[属性名]只要拥有该属性的元素都会被选中
②[属性名=值]只要拥有该属性并且值是一样的
③[属性名^=值]拥有该属性,并且值是以某些字符开头的
④[属性名$=值]拥有该属性,并且是以某些字符结尾的
⑤[属性名*=值]拥有该属性,并且值里面包含特定的字符
7.伪类选择器:
伪类:不存在的类,假的
在css中可以将伪类分为两种:
①结构型伪类(html元素结构有关)
②动态伪类(用户交互有关)
伪类选择器的语法:
:伪类名
注意:通常情况下,伪类选择器不会单独使用,会和其他选择器配合使用,因为这样没意义
常见的结构伪类:
first-child 父元素下的第一个子元素
last-child 父元素最后一个子元素
nth-child 父元素下任意的顺序子元素
注意:以上三个伪类,顺序的排列不是某个类型之间的排列,是将父元素下的所有不同类型的子元素进行排列。
同类型之间进行排序:
:first-of-type
:last-of-type
:nth-of-type()
动态伪类(常用)
①link 表示未被访问过的超链接(只能用于a标签)
②visited 表示已经被访问过的超链接(只能用于a标签)
比如:
③active:表示被用户点击的元素(用于任何元素)
④hover:鼠标移入到某个元素(用于任何元素)
比如:
伪类元素选择器
表示页面中一些特殊的元素,这些元素并不是常规的标签元素或者元素中特别的位置等
伪元素通常使用::开头
::first-letter 表示第一个字母
::first-line 表示第一行的文字
::selection 表示被选中的内容信息
::before 元素最开的位置
::after 元素结束的位置
注意:以上两个伪元素单独使用没有任何效果
必须配合content属性使用(重要)
8.单位
长度单位
①px;
是网页中构建使用最频繁的单位,也是一个绝对单位
屏幕(显示器)实际上就是由一个一个的小点(像素点)构成的
不同屏幕的像素大小是不同的,有微小的差异的,像素越小的屏幕显示越清晰
同样的200px在不同设备下显示的效果可能会有微小的差异
②em:
是相对单位,相对于其父元素,在font-size中设置的字体大小为基准
如果父元素的font-size值16px,那么1em=16px
③rem:
是相对单位,相对于根元素font-size中设置的字体大小为基准
根元素 font-size 20px 那么1rem=20px
④vh和vw
vh和vw都是相对单位,相对于视口大小,屏幕设备可视区域,比如:视口宽度高度为1024*700则1vw表示视口宽度的1% 10.24;1vh表示视口高度的1% 7
比例单位
百分比%可以用于多种情况,不限于只是指定长度
颜色单位
1.颜色名,单词
在css中可以通过哟颜色单词来设置颜色
比如:red、pink、blue
2.RGB格式
RGB通过三种颜色的不同浓度来调配不同的颜色
rgb(255,255,255)范围值:0-255
3.RGBA格式
RGB的基础上增加一个透明值
A透明值 1完全不透明 0完全透明 0.5半透明
4.#十六进制
语法:#FFFFFF
三、盒模型
页面中所有的元素,其本质都是一个矩形盒子
页面的本质就是一个一个的矩形盒子组成的
写网页的布局就是把这些盒子摆放到正确的位置上
不管是哪一种盒模型,其都是由4部分组成:
内容区+边框+内边距(内容和边框的距离,内边距影响盒子大小)+外边距(盒子和盒子之间的距离,影响位置)
css将盒模型分为两类:
1.标准盒模型(w3c)
①内容区:由width属性和heigh属性决定
②边框:border 属性可以设置盒子的边框,边框会影响可见框的大小
设定边框需要指定3部分:边框大小、边框的样式、边框的颜色
如:
border-width 边框的大小
border-style 边框的样式
border-color 边框的颜色
border 简写属性:设置三个值 边框大小、边框的样式、边框的颜色
border:20px solid red;
border-top 上边框
border-right 右边框
border-left 左边框
border-bottom 下边框
③内边距(padding):padding属性设置盒子的内边距,内容区到边框之间的距离就是内边距,内边距有会影响盒子可见框的大小
每一个盒子具备4个方向的内边距
padding-top
padding-right
paddingr-left
paddingr-bottom
padding简写属性:paddig同时指定四个方向的padding
4个值:上 右 左 下
3个值:上 左右 下
2个值:上下 左右
1个值:上下左右
④外边距(margin):margin属性设置盒子与盒子之间的间隙,不属于盒子内部,它不会影响盒子可见框的大小,只会影响盒子实际占据位置
margin同padding用法一致
margin-top
margin-bottom
margin-left
margin-right
margin简写属性
注意:margin属性支持负数值
margin:0 auto;
可以通过该方式设置已知宽度的块元素,在父元素水平居中
总结:块元素的盒子,是具备margin border padding并且任何方向设置都有效,并且都会影响页面的布局
总结:行内元素的盒子,也是具备margin border padding 但是垂直方向属性,是不会影响页面布局的
正常情况下:盒模型可见框的大小=内容区+内边距+边框
2.IE盒模型(怪异模型)
正常情况下都是标准盒模型,但是可以通过css的属性 box-sizing更改盒模型的种类
IE盒模型下:盒子可见框的大小=widgth + height
四、默认样式的处理
默认样式:在不同的浏览器中,页面元素被别的浏览器默认的设置一些样式,通常在开发中,我们是不需要这些默认样式的。大部分的默认会影响开发,所以会采取一些手段将默认样式清除
1.方式一、手动自己清除(不推荐)
*{
margin:0;
padding:0;
}
2.方式二、引入专门的样式文件,进行清除
比较常用的两个清除默认样子的第三方css文件
Normalize.css 和 Reset.css
①Normalize.css:会清除默认样式,更多的是整理,或者统一各浏览器之间的默认样式不对等的问题
它保护有用的浏览器默认样式,而不是完全的去掉它,相对柔和
②Reset.css:
比较粗暴,一刀切,不管默认样式是否开发有利还是不利,它全部都给你清除!格式化
五、其他常用的css属性
①设置元素的不透明度0-1:
opacity:0;
②设置元素的阴影 4个值:
box-shadow:0 0 50px red;
③设置元素轮廓 使用规则和border一样 (不会改变盒子的大小,只是视觉效果):
outline:1px solid red;
④去掉列表前面的符号:
list-style:none;
⑤去掉超链接的下划线:
text-decoration:none;
color:red;
六、元素的转换
display:
1.值:
①block 将元素转换为块元素
②inline 将元素转换为行内元素
③inline-block 将元素转换为行内块元素
④none 元素无任何状态,通常使用该方式对元素进行隐藏(不存在)
注意:除了display:none;可以隐藏元素、显示元素,css还提供 一个属性: visibility:hidden;
2.display:none 和visibility:hidden 不同:
display:none是直接让元素消失,不再占据文档流中的位置,该属性会影响其他元素的布局
visibility:hidden 只是让元素隐藏,本身还是在文档流中占据者位置,并不会影响其他元素的布局
七、元素的浮动
1.float:
none 默认值,元素不浮动,正常状态
left:元素向左浮动
right:元素向右浮动
float属性,最开始设计并不是为了水平布局排列的,最开始只是为了实现文字环绕效果,但是在后续的使用过程中发现float可以使得块元素水平排列!但是也带来了很多的问题!
2.浮动元素的特点:
①元素一旦设置floa后,它将会脱离文档流,不再占据文档流中的位置,以至于后续的正常元素会自动向上移动,填满空隙。
②设置浮动以后,元素会向父元素的左侧或者右侧移动
③浮动元素默认情况下不会从父元素中移出,不会逃离父元素的掌控
④浮动元素向左或者向右移动时,不会超过它前边的浮动元素
⑤如果浮动元素的上边是一个没有浮动的正常块元素,则浮动元素会停止上移
⑥如果浮动元素的后面是一个正常没有浮动的块元素,则正常元素会自动上移
八、浮动带来的塌陷问题
1.浮动元素的高度塌陷:
在css正常布局中,一般情况不会给父元素设置具体的高度值。通常是由子元素以及内容将其撑开!实现父元素的高度问题。
注意:浮动元素,无法撑开父元素,从而会造成父元素的高度塌陷
解决:①给浮动元素的父元素设置具体的高度值(不推荐)
②给父元素开启一个BFC模式(BFC:不会影响上下文的局部块)
③通过overflow:hidden;可以开始BFC 该方式也是比较推荐,整体影响最小的一种方法(但此方法还不是最优及)
④给父元素设置浮动,同样能够开启BFC,防止父元素高度塌陷
⑤display:table;
2.元素的溢出
一般发生在祖先和后代元素之间,当子元素的宽度或者高度超过其父元素的宽度或者高度时!后代元素就会发生溢出!
如何解决溢出:
overflow:hidden; 如果发生溢出,将溢出的部分进行裁剪
注意:元素溢出的部分不会占据页面实际的位置,并不会影响其他元素的布局!
3.外边距折叠问题
外边距折叠,本质就是在共享一个外边距!只有垂直方向上才会发生外边距折叠,水平方向是不会产生外边距折叠问题
解决:
①给父元素加一个边框(不太推荐)
②给父元素加一个内边距(不太推荐)
③给父元素开启BFC(格式化的上下模块(比较推荐)
overflow:hidden;
总结:父子关系之间的外边距折叠是不利的,需要我们去解决
兄弟关系之间的外边距折叠是有利的,不需要我们去解决,如果值不同,采用最大值作为外边距间距
4.高度塌陷以及外边距折叠最终方案
然后在父元素类名中加入clearfix
九、定位
1.定位(position):
定位是一种更高级的布局手段
通过定位可以将元素摆放到页面的任意位置
通过css的属性 position 为元素设置定位
2.position:
可选值:
①static 默认值,元素是没有开启定位的,静止的
②relative 为元素开启相对定位
③absolute 为元素开启绝对定位
④fixed 为元素开启固定定位
⑤sticky 为元素开启粘滞定位
相对定位:元素相对于自身本身的位置!最开始占据文档流的位置来进行定位
绝对定位:元素相对于其最近的开启了定位的包含块元素为基准进行定位
偏移量:
通过css提供的方位属性,对开启定位的元素设置,偏移量
top left right bottom
注意:一般只需要设置俩个方位即可对元素进行定位,偏移量也支持负数值
3.relative(相对定位)
当元素的position属性值设置为relative则为该元素开启了相对定位
相对定位的元素具备以下特点:
①元素开启相对定位后,不设置偏移量元素是不会发生任何的位置变化
②相对定位是参照元素自身在文档流中的位置进行定位的
③相对定位会提升元素的层级关系
④相对定位的元素不会脱离文档流,元素的特性不会被改变,块还是块,行内还是行内
4.absolute(绝对定位)
当元素的position属性值设置为absolute ,则为该元素开启了绝对定位
绝对定位的特点:
①开启绝对定位后,如果不设置偏移量元素的位置不会发生改变
②开启绝对定位后,元素会脱离文档流,不再占据页面的实际位置,会影响其他正常元素的布局
③绝对定位会改变元素的性质,不再区分行,块,行内块的概念
④绝对定位会提高元素的层级
⑤绝对定位的元素是相当于最近的开启了定位的包含块来进行定位的
一般会为子元素设置绝对定位,给他的父元素设置相对定位(子绝父相)
包含块:正常情况下,包含块指的就是该元素的父元素(祖先元素)
5.固定定位
将元素的position属性设置为fixed则开启了元素的固定定位
固定定位也是一种绝对定位,所有固定定位的大部分特点与绝对定位是一样的
注意:唯一不同的是定位的参考基准不一样,并且固定定位的元素不会随网页的滚动条进行滚动
固定定位是相对于浏览器的视口进行定位的
6.粘滞定位
当元素的position属性设置为sticky则开启了 粘滞定位:
粘滞定位和相对定位的特点基本一致
注意:不同点是粘滞定位可以在元素到达某个点时将其固定
十、圆角属性
1.圆
border-radius:50% ;
2.z-index
设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。
①一般该属性是用于改变定位元素的层级,浮动元素是不能通过z-index改变层级的
②祖先元素的层级不管设置多大,都无法遮挡后代元素
3.target伪元素
指向的是被锚点跳转的元素
十一、表格(table)
在网页设计,很多时候也是需要表格显示内容
比如:课程表,成绩单
标准的一个表格分成三部分:(可省略)
头部:thead
主体 tbody
底部 tfoot
th表示头部的单元格
tr表示行
td表示正常的单元格
<table></table> 表格标签
<tr></tr>
<td></td>
如何合并单元格:
rowspan 纵向单元格合并
colspan 横向单元格合并
表格相关的样式属性:
border-spacing 指定表格边框之间的距离
border-collapse设置边框是否合并
注意:tr标签不是table的子元素,即便是在tbody省略的情况下。浏览器会自动加上tbody标签,且把tr放进里面
十二、表单:
form标签的属性:
action 填写数据最终提交到服务器地址
method 方法,提交 get post
表单相关的控件:
label 绑定控件,指导用户
input 决定输入控件的类型
type属性:
radio 单选框控件
checkbox 复选框控件
text 文本信息
password 密码框
button 按钮框
number 数值
select 下拉列表控件
option 下拉列表项
textarea 富文本框(多行文本)
十三、flex(弹性盒,伸缩盒)
1.弹性容器:
开启了flex属性的元素称为弹性容器
弹性容器的css属性:
2.1flex-direction 指定容器中元素的排列方式(更改主轴)
① row 默认值 弹性元素在容器中从左往右水平排列 主轴
②Colum 弹性元素在容器中从上往下垂直排列 主轴
2.2 flex-wrap 设置弹性元素是否在容器中自动换行
①nowrap 默认值 不会换行
②wrap 沿着侧轴换行
2.3 flex-row 是flex-direction和flex wrap的简写形式
2.4 justify-content 设置弹性元素在主轴上的排列方式
①flex-start 沿着主轴排列(默认值)
②flex-end 沿着主轴反向排列
③center 主轴水平居中排列
④space-around 分配空白区域
⑤space-between 分配空白区域
⑥space-evenly 分配空白区域
2.5 align-items 元素在侧轴上的对齐方式,排列方式
①stretch 默认值
②flex-start 沿着侧轴起点排列
③flex-end 沿着侧轴终点排列
④center 在侧轴上居中对齐
⑤baseline 基线对齐
2.6
align-content 分配侧轴元素之间的空白(注意:该属性一定是设置了flex-wrap:wrap;)
①center
② space-between
③ space-around
④flex-start
⑤flex-end
2.弹性元素(项目):
弹性元素就是该弹性盒下的直接的子元素
①order 定义项目的排列顺序,值越小,越靠前,默认值都是0
②flex 指定盒子的伸缩
③align-self 用来覆盖当前元素上的align-items,指定单个元素在侧轴上对齐的方式
注意:弹性元素也可以作为弹性容器
3.居中
1.都设为0
2.设置特定的值
3.弹性
justify-content:center;
align-content:center;
十四、过渡(transition )
1.transition-property:
指定要执行过渡的属性 属性1,属性2
该属性可以同时指定多个需要执行过渡的属性 多个属性之间逗号分割
通过all 关键字 指定所有能够产生过渡的属性
2.transition-duration:指定过渡持续的时间,默认值是0 瞬间发生
3.transition-timing-function:指定过渡效果的时许函数,运动轨迹
可选值:
ease 默认值 慢速开始 先加速再减速
linear 匀速运动
ease-in 加速运动
ease-o-t 减速运动
ease-in-out 先加速后减速
4.transition-delay:过渡开始的延迟时间,等待一段时间开始过渡效果
5.trsnsition简写属性
注意:采用简写属性时。一定要将过渡时间写在延迟时间前面!
十五、动画设置:
animation
如何设置动画效果:
1.必须设置一个关键帧,关键字设置了动画执行的每一个步骤,每一个画面
@keyframes 动画名{
from{
css样式属性
}
to{
css样式属性
}
注意:除了使用from 和 to 还可以将整个动画流程看成是100%进度
}
2.使用动画
为元素设置某个关键帧(名字)
animation-name 指定对当前元素生效的关键字名字
十六、三角形
总结感受:
在这段时间收获的知识颇多,最开始进入基础的时候能很快吸收,后面东西越来越多的时候就容易混乱,一到难的布局那块就开始吸收的慢,后来老师让我们做一个完整的网页,最开始做的时候速度及其慢,后面做多了,感觉越来越轻松了。所以我觉得学习web得多敲多练,孰能生巧,遇到自己不会的可以上网查阅资料。