需要在网页中书写特殊的符号时,就要使用html中的实体(转义字符)。实体的语法:&实体的名字;
meta主要是用于设置网页中的一些元数据,元数据不是给用户看的。
charset:指定网页的字符集
name:指定的数据的名称
content:指定的数据的内容
这个表示该页面会在3秒后跳转到百度页面(用得少
<meta http-equiv="refresh" content="3;url=http://www.baidu.com">
在网页中html专门用来负责网页的结构,所以在使用html标签时,应该关注的是标签的语义,而不是它的样式。
块元素:在网页中一般通过块元素对页面进行布局;行内元素:主要用来包裹文字。一般情况下,会在块元素中放行内元素,但不会在行内元素中放块元素。块元素基本上什么都能放,但p元素中不能放任何的块元素。(浏览器在解析网页时,会自动对网页中不符合规范的内容进行修正)
布局标签(结构化标签)
共有三种列表形式:
超链接可以让我们从一个页面跳转到另一个页面,或者是当前页面的其他位置。
使用a来定义超链接,超链接也是一个行内元素,在a标签中可以嵌套除它自身外的元素。
href:指定跳转的目标路径。它的值可以是一个外部网站的地址,也可以写内部页面的地址。
<a href="http://www.baidu.com">超链接a>
当我们需要跳转一个服务器内部的页面时,一般都会使用相对路径。相对路径都会使用./或…/开头。
target:用来指定超链接打开的位置。
在开发中可以将#作为超链接的路径的占位符使用,可以使用javascript:;来作为href的属性,点击什么都不会发生。
图片标签用于向当前页面中引入一个外部图片,使用img标签来引入外部图片,img标签是一个自结束标签。img这种元素属于替换元素(基于块和行内元素之间,具有两种元素的特点)
图片的格式:
内联框架:用于向当前页面中引入一个其他的页面。
audio:用来向页面中引入一个外部的音频文件。
除了通过src来指定外部文件的路径以外,还可以通过source来指定文件。
video:用来向网页引入视频。使用方式基本与audio一样。
网页分为三个部分:结构(html)、表现(css)、行为(js)。
css:层叠样式表,用来设置网页中元素的样式。
使用css来修改元素的样式:
第一种方式(内联样式、行内样式):在标签内通过style来设置元素的样式。缺点:样式只能对一个标签生效,如果希望影响到多个元素必须要在每个元素中复制一遍,并且当样式发生变化时,维护很麻烦。ps:开发时绝对不要使用内联样式。
"color: green; font-size: 50px;">夏天结束了
第二种(内部样式表):将样式编写到head中的style标签里,然后通过css的选择器来选中元素并为其设置各种样式。好处:可以同时为多个标签设置样式,并且修改时很方便,也更加方便对样式进行复用。缺点:只能对一个网页起作用,不能跨页面进行复用。
第三种(外部样式表):可以将css样式编写到一个外部的css中,在head里通过link标签来引入外部的css文件。想要使用就引用,使样式可以在不同页面之间进行复用。将央视编写到外部css文件中,可以使用到浏览器的缓存机制,从而加快网页的加载机制,提高用户体验。(最佳实践)
"stylesheet" href="style.css">
ps:注意区分html和css的注释。html是,css是/**/。
css的基本语法:
元素选择器:
id选择器:
class是一个标签的属性,它和id类似,不同的是class可以重复使用,就可以通过class属性来对元素分组,可以同时为一个元素指定多个class属性,多个class使用空格隔开。
class(类)选择器:
通配选择器:
交集选择器:
选择器分组(并集选择器):
关系的分类:
子元素选择器:
后代元素选择器:
兄弟选择器:
伪类(不存在的类,特殊的类):用来描述一个元素的特殊状态。比如:第一个子元素、被点击的元素、鼠标移入的元素…
伪类一般情况下都是:开头
以下三个伪类都是根据所有的子元素进行排序。
以下三个伪类的功能和上面三个相似,不同点:它们是在同类型元素中进行排序。
:first-of-type
:last-of-type
:nth-of-type
否定伪类:将符合条件的元素从选择器中去除。
超链接的状态:1.访问过;2.访问过。
这两个只能a使用。
元素都可以用的:
伪元素:表示页面中一些特殊的并不真实存在的元素(特殊位置)
伪元素使用::开头
样式的继承:为一个元素设置的样式同时也会应用到它的后代元素上。
继承是发生在祖先后代之间的。继承的设计是为了开发,利用继承可以将通用的样式设置到祖先元素,这样只需要设置一次即可让所有的元素都具有该样式。
ps:**并不是所有的样式都会被继承。**例如:背景相关的、布局相关等的这些样式都不会被继承。
样式的冲突:当我们通过不同的选择器,选中相同的元素,并且为相同的样式设置不同的值时,此时就发生了样式的冲突。
发生样式冲突,应用哪个样式由选择器的权重(优先级)决定。
选择器的权重:
可以在某一个样式的后面添加!important,则此时该样式会获取到最高的优先级,甚至超过内联样式。ps:开发时慎用。
长度单位:
颜色单位:
网页是一个多层的结构,通过css分别给每一层设置样式,用户只能看见最顶一层,在这些层中最底下的一层称为文档流。文档流是网页的基础,我们所创建的元素默认都是在文档流中进行排列。对于元素主要有两个状态:在文档流中;不在文档流中(脱离)。
元素在文档流中的特点:
css将页面中的所有元素都设置成了一个矩形的盒子,将元素设置成盒子后,对页面的布局就变成将不同的盒子摆放到不同的位置。
每个盒子都由以下几个部分组成:
一个盒子的可见框的大小,由内容区、内边距、边框共同决定。
content:元素中的所有的子元素和文本内容都是在内容区中排列。
border:属于盒子的边缘,边框里边属于盒子内部,出了边框都是盒子的外部。边框的大小会影响整个盒子的大小。
padding(内边距):内容区和边框之间的距离
margin(外边距):不会影响可见框的大小,会影响盒子实际占用空间
元素在其父元素中水平方向的位置由以下几个属性共同决定:margin-left、border-left、padding-left、width、padding-right、border-right、margin-right。一个元素在其父元素中,水平布局必须满足以下的等式:margin-left+border-left+padding-left+width+padding-right+border-right+margin-right=其父元素内容区的宽度。如果相加结果使等式不成立,则称为过度约束,等式会自动调整。调整的情况:
如果七个值中没有auto的情况,浏览器会自动调整margin-right值使得等式成立。
如果七个值中有三个值(width、margin-left、margin-right)和设置为auto:
默认情况下父元素的高度被元素撑开。
子元素是在父元素的内容区中排列的。如果子元素的大小超过了父元素,则子元素会从父元素中溢出。使用overflow属性来设置父元素如何处理溢出的子元素。(也有overflow-x,overflow-y,单独设置水平、垂直的滚动条
垂直外边距的折叠:相邻的垂直方向外边距会发生重叠现象。
行内元素不支持设置width和height。
可以设置padding,垂直方向的padding不会影响页面的布局。
可以设置border,垂直方向的border不会影响布局。
可以设置margin,垂直方向的margin不会影响布局。
display:用来设置元素显示的类型。
visibility:用来设置元素的显示状态。
通常情况下,浏览器会为元素设置一些默认样式。默认样式的存在会影响到页面的布局,通常情况下,我们必须要去除浏览器的默认样式。(pc端的页面)
对于复杂页面一个一个去处理,对于简单的页面可以统一去除margin、padding。
*{
margin:0;
padding:0;
}
可以直接引入别人写的css。重置样式表:专门用来对浏览器的样式进行重置的。
默认情况下,盒子可见框的大小由内容区、内边框和边框共同决定。
box-sizing:用来设置盒子尺寸的计算方式(设置width和height的作用)
outline:用来设置元素的轮廓线,用法和border一样。与border不同的是:轮廓不会影响到可见框的大小。
box-shadow:用来设置元素的阴影效果,也不会影响到页面布局。
border-radius:用来设置圆角。圆角设置的是圆的半径大小,半径越大弧度更大。
border-radius: 50%; 将元素设置成一个圆形。
通过浮动可以使一个元素向其父元素的左侧或右侧移动,使用float来设置元素的浮动。
ps:
浮动的特点:
简单总结:浮动目前来讲它的主要作用是让页面中的元素可以水平排列,通过浮动可以制作一些水平方向的布局。
浮动元素不会盖住文字,文字会自动环绕在浮动元素的周围,所以我们可以利用浮动来设置文字环绕图片的效果。
元素设置浮动以后会从文档流中脱离,从文档流脱离后元素的一些特点也会发生变化。脱离文档流的特点:
高度塌陷的问题:在浮动布局中,父元素的高度是被子元素撑开的。当子元素浮动后,其会完全脱离文档流,子元素从文档流中脱离,将会无法撑起父元素的高度,导致父元素的高度丢失。父元素高度丢失以后,其下的元素会自动上移,导致页面的布局混乱。
BFC(块级格式化环境):是一个css的一个隐含的属性,可以为一个元素开启BFC,开启BFC该元素会变成一个独立的布局区域。元素开启BFC后的特点:
可以通过一些特殊方式来开启元素的BFC(多多少少都有副作用:
如果我们不希望某个元素因为其他元素浮动的影响而改变位置,可以通过clear属性来清除浮动元素对当前元素所产生的影响。
clear:清除浮动元素对当前元素所产生的影响。
原理:设置清楚浮动以后,浏览器会自动为元素添加一个上外边距,以使其位置不受其他元素的影响。
/*在盒子后面添加一个伪元素来撑起父元素的高度*/
.bax::after{
content:'';
display:block;
clear:both;
}
解决外边距重叠和高度塌陷的问题:
.clearfix::before,
.clearfix::after{
content:'';
display:table; /*解决外边距重叠*/
clear:both; /*解决高度塌陷*/
}
定位:是一种更加高级的布局手段。通过定位可以将元素摆放到页面的任意位置,使用position来设置定位。
相对定位:当元素的position设置成relative则表示开启了元素的相对定位。
相对定位的特点:
偏移量(offset):当元素开启定位之后,可以通过偏移量来设置元素的位置。
当元素的position设置为absolute时,则开启了元素的绝对定位。
绝对定位的特点:
包含块:
当开启绝对定位之后:
水平方向的布局等式就需要添加left和right两个值,此时规则和之前一样只是多添加两个值。当发生过度约束:
垂直方向布局的等式也必须满足:top+margin-top/bottom+padding-top/bottom+border-top/bottom+height=包含块的高度。
当元素的position设置为fixed时,则开启了元素的固定定位。固定定位也是一种绝对定位,所以大部分的特点和绝对定位一样。唯一不同的是固定定位永远参照浏览器的视口进行定位。固定定位的元素不会随网页的滚动而滚动。
当元素的position设置为sticky时,则开启了元素的粘滞定位。
粘滞定位和相对定位的特点基本一致,不同的是粘滞定位可以在元素到达某个位置时将其固定。
兼容性不好,老版本的一些浏览器不支持。
对于开启了定位元素,可以通过z-index属性来指定元素的层级。
行高指的是文字占有的实际高度,可以通过line-height来设置行高。
字体框就是字体存在的格子,设置font-size实际上就是在设置字体框的高度。
行高会在字体框的上下平均分配,可以将行高设置成和高度一样的值,就可以使得单行文字在一个元素中垂直居中。
font可以设置字体相关的所有属性。语法:
font-weight:字重 字体的加粗
font-style:字体的风格。
text-align:文本的水平对齐。
vertical-align:设置元素垂直对齐。
text-decoration:设置文本修饰。
white-space:设置网页如何处理空白。
在网页中我们需要使用表格来表示一些格式化数据,通过table标签来创建一个表格。在table中使用tr表示表格中的一行,有几个tr就有几行。在tr中使用td表示一个单元格,有几个td就有几个单元格。
colspan:横向的合并单元格。
rowspan:纵向的合并单元格。
可以将一个表格分为三个部分:thead、tbody、tfoot。th:表示头部的单元格。
border-spacing:指定边框之间的距离。
border-collapse:设置边框的合并。
如果表格中没有使用tbody而是直接使用tr,那么浏览器会自动创建一个tbody,并且将tr全都放到tbody中,tr不是table的子元素。
默认情况下,元素在td中是垂直居中的,可以通过vertical-align来设置。
将元素设置为单元格 td:display: table-cell;(可以用vertical-align: middle;来将元素放在中间)
网页中的表单:用于将本地的数据提交给远程的服务器,使用form标签来创建一个表单。
<form action="">
文本框<input type="text" name="username">
<br><br>
密码框<input type="password" name="password">
<br><br>
单选按钮<input type="radio" name="hello" value="a">
<input type="radio" name="hello" value="b">
<br><br>
多选框<input type="checkbox" name="test" value="1">
<input type="checkbox" name="test" value="2">
<input type="checkbox" name="test" value="3" checked>
<br><br>
<select name="hi" id="">
<option value="i">选项1option>
<option selected value="ii">选项2option>
<option value="iii">选项3option>
select>
<br><br>
<input type="submit" value="注册">
form>
<form action="">
<input type="submit">
<input type="text" name="username" autocomplete="off">
<input type="text" name="a" value="hi" readonly>
<input type="reset">
<input type="button" value="按钮">
<button type="submit">提交button>
<button type="reset">重置button>
<button type="button">按钮button>
<input type="email">
form>