HTML
- 学习web前端开发基础技术需要掌握:HTML、CSS、JavaScript语言。
HTML是网页内容的载体。内容就是网页制作者放在页面上想让用户浏览的信息,可以包含文字、图片、视频等。
CSS样式是表现。比如,标题字体、颜色变化、或为标题加入背景图片、边框等。所有这些用来改变内容外观的东西称之为表现。
JavaScript是用来实现网页上的特效效果。如:鼠标滑过弹出下拉菜单。或鼠标滑过表格的背景颜色改变。还有焦点新闻(新闻图片)的轮换。可以这么理解,有动画的,有交互的一般都是有JavaScript来实现的。
- 网页中每一个内容在浏览器中的显示,都是要存放到各种标签中。
标签的语法:
(1)标签由英文尖括号<和>括起来,如<html>就是一个标签。
(2)html中的标签一般都是成对出现的,分开始标签和结束标签。结束标签比开始标签多了一个/。
如:
<p></p>
<div></div>
<span></span>
(3)标签与标签之间是可以嵌套的,但先后顺序必须保持一致,如:
<div>
<p></p>
</div>
3.html文件基本结构:
<html>
<head>...</head>
<body>...</body> /* 在<body>和</body>标签之间的内容是网页的主要内容,如<h1>、<p>、<a>、<img>等网页内容标签,在这里的标签中的内容会在浏览器中显示出来。*/
</html>
/* <html></html>称为跟标签,所有的网页标签都在<html></html>中*/
/*<head>标签用于定义文档的头部,它是所有头部元素的容器。头部标签有<title>、<script>、<style>、<link>、<meta>等标签。*/
<head>
<title>...</title>
<meta>
<link>
<style>...</style>
<script>...</script>
</head>
- html的代码注释:
<!--注释内容 --> /*快捷键:Ctrl+/*/
语义化
即要明白每个标签的用途(在什么情况下使用此标签合理),比如:网页上的文章的标题可以用标题标签,网页上的各个栏目的栏目名称也可以使用标题标签。文章中内容的段落就得放在段落标签中,在文章中有强调的文本,就可以使用em标签强调等等。
优点:
(1)更容易被搜索引擎收录。
(2)更容易让屏幕阅读器读出网页内容。-
标签
(1)标题标签(6个,h1、h2、h3、h4、h5、h6)。(2)加入强调语气,使用<strong>和<em>标签:<strong>和<em>标签是为了强调一段话中的关键字时使用,它们的语义是强调。
(3)使用span标签为文字设置单独样式:<span>标签是没有语义的,它的作用就是为了设置单独的样式用的。
(4)<q>标签,短文本引用。
(5)<blockquote>标签,长文本引用:浏览器对<blockquote>标签的解析是缩进样式。
(6)使用<b r>标签分行显示文本:
xhtml1.0写法:<br />
html4.01写法:<br>
/*现在一般使用 xhtml1.0 的版本的写法(其它标签也是),这种版本比较规范。*/
(7)在网页中添加一些空格:在html代码中输入空格、回车都是死没有作用的,要想输入空格,必须加入 。
(8)<address>标签,为网页加入地址信息:
<address>联系地址信息</address>
(9)使用<code>标签加入一行代码:
<code>var i=i+300;</code>
(10)使用<pre>标签为你的网页加入大段代码:
<pre>语言代码段</pre>
/* <pre> 标签的主要作用:预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。
<pre> 标签不只是为显示计算机的源代码时用的,在需要在网页中预显示格式时都可以使用它,只是<pre>标签的一个常见应用就是用来展示计算机的源代码。*/
(11)使用ul-li标签,添加新闻信息列表:ul-li是没有前后顺序的信息列表,每项<li>前面是一个黑色的圆点。
<ul>
<li>信息</>
<li>信息</>
......
</ul>
(12)使用ol-li标签,添加图书销售排行榜:ol-li标签可用于制作有序列表。 <ol>在网页中显示的默认样式一般为:每项<li>前都自带一个序号,序号默认从1开始。
<ol>
<li>信息</li>
<li>信息</li>
......
</ol>
(13)div标签:
<div>…</div>
<div id="板块名称"></div> /*引入id属性,给div提供唯一的名称*/
/*div在排版中的作用:在网页制作过程过中,可以把一些独立的逻辑部分划分出来,放在一个<div>标签中,这个<div>标签的作用就相当于一个容器。*/
(14)table标签,认识网页上的表格:
创建表格的四个元素:tabel、tbody、tr、th、td
<table>…</table>:整个表格以<table>标记开始、</table>标记结束。
<tbody>…</tbody>:如果不加<thead><tbody><tfooter> , table表格加载完后才显示。加上这些表格结构, tbody包含行的内容下载完优先显示,不必等待表格结束后在显示,同时如果表格很长,用tbody分段,可以一部分一部分地显示。(通俗理解table 可以按结构一块块的显示,不在等整个表格加载完后显示。)
<tr>…</tr>:表格的一行,所以有几对tr 表格就有几行。
<td>…</td>:表格的一个单元格,一行中包含几对<td>...</td>,说明一行中就有几列。
<th>…</th>:表格的头部的一个单元格,表格表头。
table表格在没有添加css样式之前,在浏览器中显示是没有表格线的表头,也就是th标签中的文本默认为粗体并且居中显示 用css样式,给表格加边框:
<style type="text/css">
table tr td,th {
border: 1px solid #000;
}
</style>
(15)caption标签,为表格添加标题和摘要:
/*摘要的内容是不会在浏览器中显示出来的。它的作用是增加表格的可读性(语义化),使搜索引擎更好的读懂表格内容,还可以使屏幕阅读器更好的帮助特殊用户读取表格内容。*/
<table summary="表格简介文本"> /*摘要*/
/*标题*/
<table>
<caption>标题文本</caption>
<tr>
<td>...</td>
<td>...</td>
...
</tr>
...
</table>
(16)使用<a>标签,连接到另一个页面:
/*title属性的作用,鼠标滑过链接文字时会显示这个属性的文本内容。这个属性在实际网页开发中作用很大,主要方便搜索引擎了解链接地址的内容(语义化更友好)。*/
<a herf="目标网址" title="鼠标滑过显示的文本">链接显示的文本</a>
/* <a>标签在默认情况下,链接的网页是在当前浏览器窗口中打开,有时我们需要在新的浏览器窗口中打开。*/
<a href="目标网址" target="_blank">click here!</a>
(17)使用mailto在网页中链接email地址:
<a href="mailto:yy@imooc.com ?subject=观了不起的盖茨比有感。 &body=你好,对此评论有些想法。">对此影评有何感想,发送邮件给我</a>
(18)img标签,为网页插入图片:
<img src="图片地址" alt="下载失败时的替换文本" title = "提示文本">
<img src = "myimage.gif" alt = "My Image" title = "My Image" />
/*src:标识图像的位置;
alt:指定图像的描述性文本,当图像不可见时(下载不成功时),可看到该属性指定的文本;
title:提供在图像可见时对图像的描述(鼠标滑过图片时显示的文本);
图像可以是GIF,PNG,JPEG格式的图像文件。*/
(19)使用表单标签,与用户交互:
<form method="传送方式" action="服务器文件">
/*action :浏览者输入的数据被传送到的地方,比如一个PHP页面(save.php);
method : 数据传送的方式(get/post);
所有表单控件(文本框、文本域、按钮、单选框、复选框等)都必须放在 <form></form> 标签之间,否则用户输入的信息可提交不到服务器上;
method : post/get 的区别这一部分内容属于后端程序员考虑的问题。*/
- 表单控件,设置不同type
(1)文本输入框、密码输入框:
<input type="text/password" name="名称" value="文本">
/* type:当type="text"时,输入框为文本输入框; 当type="password"时, 输入框为密码输入框。
name:为文本框命名,以备后台程序ASP 、PHP使用。
value:为文本输入框设置默认值。(一般起到提示作用)。*/
(2)文本域,支持多行文本输入:
<textarea rows="行数" cols="列数">文本</textarea>
/*cols:多行输入域的列数;
rows:多行输入域的行数;
这两个属性可用css样式的width和height来代替:col用width,row用height。*/
(3)单选框、复选框:
<input type="radio/checkbox" value="值" name="名称" checked="checked">
/*type:当 type="radio" 时,控件为单选框;当 type="checkbox" 时,控件为复选框。
value:提交数据到服务器的值(后台程序PHP使用)。
name:为控件命名,以备后台程序 ASP、PHP 使用。
checked:当设置 checked="checked" 时,该选项被默认选中。
同一组的单选按钮,name 取值一定要一致,这样同一组的单选按钮才可以起到单选的作用。*/
(4)下拉列表框:
<form>
<option value="提交值">内容</option>
<option value="提交值">内容</option>
<option value="提交值" select="selected">内容</option>
...
</form>
/*value的值是表示向服务器提交的值,设置select="selected"属性表示该项被默认选中。*/
(5)下拉列表框进行多选:
<select multiple="multiple"></select>
/*下拉列表也可以进行多选操作,设置multiple="multiple"属性,就可以实现多选功能,在 windows 操作系统下,进行多选时按下Ctrl键同时进行单击(在 Mac下使用 Command +单击),可以选择多个选项。*/
(6)按钮:
/* 提交按钮*/
<input type="submit" value="提交">
/*提交按钮*/
<input type="reset" value="重置">
(7)form表单中的label标签:
/*label标签的作用是为鼠标用户改进了可用性,当用户单击选中该label标签时,浏览器就会自动将焦点转到和标签相关的表单控件上(就自动选中和该label标签相关连的表单控件上)*/
<label for="控制id名称">
CSS
认识css样式:CSS全称为“层叠样式表 (Cascading Style Sheets)”,它主要是用于定义HTML内容在浏览器内的显示样式,如文字大小、颜色、字体加粗等。
css 样式由选择符和声明组成,而声明又由属性和值组成:
选择符:又称选择器,指明网页中要应用样式规则的元素。
声明:在英文大括号“{}”中的的就是声明,属性和值之间用英文冒号“:”分隔。当有多条声明时,中间可以英文分号“;”分隔。内联式css样式,直接写在现有的HTML标签中,如:
<p style="color:red">这里文字是红色。</p>
- 嵌入式css样式,写在当前的文件中:
<head>
<style></style>
</head>
- 外部式css样式,写在单独的一个文件中
<link href="base.css" rel="stylesheet" type="text/css" />
三种方法的优先级
内联式 > 嵌入式 > 外部式,但是嵌入式>外部式有一个前提:嵌入式css样式的位置一定在外部式的后面。选择器:每一条css样式声明(定义)由两部分组成:
(1)标签选择器:
/*标签选择器其实就是html代码中的标签。如<html>、<body>、<h1>、<p>、<img>*/
标签 {
css样式代码;
}
(2)类选择器
.类选择器名称 {
css样式代码;
}
/*英文圆点开头、其中类选器名称可以任意起名(但不能起中文)。
使用方法:
第一步:使用合适的标签把要修饰的内容标记起来,如下:
<span>胆小如鼠</span>
第二步:使用class="类选择器名称"为标签设置一个类,如下:
<span class="stress">胆小如鼠</span>
第三步:设置类选器css样式,如下:
.stress{color:red;}*/
(3)ID选择器
#Id名称 {
css样式代码;
}
/* 为标签设置id="ID名称",而不是class="类名称"。
ID选择符的前面是井号(#)号,而不是英文圆点(.)*/
(4)子代选择器,即大于符号(>),用于选择指定标签元素的第一代子元素。
.first>span {
border: 1px solid red;
}
(5)后代选择器,即加入空格,用于选择指定标签元素下的后辈元素。
.first span {
color: red;
}
(6)通用选择器,使用一个(*)号指定,它的作用是匹配html中所有标签元素。
* {
css样式代码;
}
(8)伪类选择器,允许给html不存在的标签(标签的某种状态)设置样式。
(9)分组选择器,当你想为html中多个标签元素设置同一个样式时,可以使用分组选择符(,)。
h1,span {
color: red;
}
子代选择器和后代选择器的区别:
后代选择器与子代选择器的区别,子代选择器仅是指它的直接后代,作用于子元素的第一代后代。而后代选择器是作用于所有子后代元素。后代选择器通过空格来进行选择,而子代选择器是通过“>”进行选择。CSS的特点性
(1)继承性
css的某些样式是具有继承性的,继承是一种规则,它允许样式不仅用于某个特定html标签元素,而且应用于其后代。
有一些css样式是不具有继承性的。如border:1px solid red。
(2)特殊性
p {
color:red;
}
.first {
color:green;
}
<p class="first">三年级时,我还是一个<span>胆小如鼠</span>的小女孩。</p>
/*p和.first都匹配到了p标签上,但green是正确的颜色,因为浏览器是根据权值来判断使用哪种css样式的,权值高的就使用哪种css样式。*/
/* 权值的规则:标签的权值为1,类选择器的权值为10,ID选择器的权值最高为100。*/
p{color:red;} /*权值为1*/
p span{color:green;} /*权值为1+1=2*/
.warning{color:white;} /*权值为10*/
p span.warning{color:purple;} /*权值为1+1+10=12*/
#footer .note p{color:yellow;} /*权值为100+10+1=111*/
(3)层叠性
/*层叠就是在html文件中对于同一个元素可以有多个css样式存在,当有相同权重的样式存在时,会根据这些css样式的前后顺序来决定,处于最后面的css样式会被应用。*/
p {
color:red;
}
.first {
color:green;
}
<p class="first">三年级时,我还是一个<span>胆小如鼠</span>的小女孩。</p>
/* 最后 p 中的文本会设置为green,这个层叠很好理解,理解为后面的样式会覆盖前面的样式。*/
(4)重要性
/*使用!important为某些样式设置具有最高权值。*/
p {
color:red!important;
}
.first {
color:green;
}
<p class="first">三年级时,我还是一个<span>胆小如鼠</span>的小女孩。</p>
/*这时 p 段落中的文本会显示的red红色。*/
- 文字排版--字体、字号、颜色、粗体、斜体、下划线、删除线:
/*文字:*/
body {
font-family:"字体";
}
/* 字号:*/
body {
font-size: 12px;
}
/* 颜色:*/
body {
color: #666;
}
/*粗体:*/
body {
font-weight: bold;
}
/*斜体:*/
body {
font-style: italic;
}
/*下划线:*/
body {
text-decoration: underline;
}
/*删除线:*/
body {
text-decoration: line-through;
}
- 段落排版--缩进、行间距(行高)、中文字间距和字母间距、对齐:
/*缩进:*/
body {
text-indent: 2em;
}
/*行间距(行高):*/
body {
line-height: 1.5em;
}
/* 文字间隔(字母间隔):*/
h1 {
letter-spacing: 50px;
}
/*单词间距:*/
h1 {
word-spacing: 50px;
}
/*居中对齐(块级元素):*/
h1 {
text-align: center;
}
/*居左:*/
h1 {
text-align: left;
}
/*居又:*/
h1 {
text-align: right;
}
- 元素分类
在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素、内联元素(又叫行内元素)和内联块状元素。
常用的块级元素:<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>。
常用的行内元素:<a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>。
常用的内联块级元素:<img>、<input>。
(1)块级元素
块级元素特点:
每个块级元素都从新的一行开始,并且其后的元素也另起一行。(真霸道,一个块级元素独占一行)
元素的高度、宽度、行高以及顶和底边距都可设置。
元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。
(2)行内元素
内联元素特点:
和其他元素都在一行上;
元素的高度、宽度及顶部和底部边距不可设置;
元素的宽度就是它包含的文字或图片的宽度,不可改变。
(3)块级元素和行内元素的相互转换:
/*块级元素转成行内元素:*/
div {
display:inline;
}
/* 行内元素转成块级元素:*/
a {
display:block;
}
(4)内联行内元素:同时具备内联元素、块状元素的特点。
display:inline-block; /*将元素设置为内联块状元素*/
inline-block 元素特点:
和其他元素都在一行上;
元素的高度、宽度、行高以及顶和底边距都可设置。
- 盒模型-边框
盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细、样式和颜色(边框三个属性)。
div {
border: 1px solid red;
}
/*可以分别设置上下左右边框:*/
div{border-top:1px solid red;}
div{border-bottom:1px solid red;}
div{border-left:1px solid red;}
div{border-right:1px solid red;}
- 盒模型--宽度和高度
元素实际宽度(盒子宽度)=左边界(margin-left)+左边框(border-left)+左填充(padding-left)+内容宽度(width)+右填充(padding-right)+右边框(border-right)+右边界(nargin-right)。
元素实际高度(盒子高度)=上边界(margin-top)+上边框(border-top)+上填充(padding-top)+内容高度(height)+下填充(padding-bottom)+下边框(border-bottom)+下边界(nargin-bottom)。
- 盒模型--填充
元素内容与边框之间是可以设置距离的,称之为“填充”。填充也可分为上、右、下、左(顺时针)。
div {
padding: 20px 10px 15px 30px;
}
相当于:
div {
padding-top: 20px;
padding-right: 10px;
padding-bottom: 15px;
padding-left: 30px;
}
如果上、右、下、左的填充都为10px:
div {
padding:10px;
}
如果上下填充一样为10px,左右一样为20px:
div {
padding: 10px 20px;
}
- 盒模型--边界
元素与其它元素之间的距离可以使用边界(margin)来设置。边界也是可分为上、右、下、左。
div {
margin: 20px 10px 15px 30px;
}
相当于:
div {
margin-top: 20px;
margin-right: 10px;
margin-bottom: 15px;
margin-left:30;
}
上右下左的边界都为10px:
div {
margin: 10px;
}
上下边界一样为10px,左右一样为20px:
div {
margin: 10px 20px;
}
padding在边框里,margin在边框外。
- CSS布局模型:流动模型(Flow)、浮动模型(Float)、层模型(Layer)。
(1)流动模型,流动(Flow)是默认的网页布局模式,网页在默认状态下的 HTML 网页元素都是根据流动模型来分布网页内容的。
流动布局模型具有2个比较典型的特征:
第一点,块状元素都会在所处的包含元素内自上而下按顺序垂直延伸分布,因为在默认状态下,块状元素的宽度都为100%。实际上,块状元素都会以行的形式占据位置。
第二点,在流动模型下,内联元素都会在所处的包含元素内从左到右水平分布显示。
(2)浮动模型,即让两个块状元素并排显示
div{
width:200px;
height:200px;
border:2px red solid;
float:left; /*float:right*/
}
<div id="div1"></div>
<div id="div2"></div>
(3)层模型
层模型的三种形式:绝对定位(position: absolute)、相对定位(position: relative)、固定定位(position: fixed)。
层模型--绝对定位
如果想为元素设置层模型中的绝对定位,需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口。
如下面代码可以实现div元素相对于浏览器窗口向右移动100px,向下移动50px。
div{
width:200px;
height:200px;
border:2px red solid;
position:absolute;
left:100px;
top:50px;
}
<div id="div1"></div>
层模型--相对定位
如果想为元素设置层模型中的相对定位,需要设置position:relative(表示相对定位),它通过left、right、top、bottom属性确定元素在正常文档流中的偏移位置。相对定位完成的过程是首先按static(float)方式生成一个元素(并且元素像层一样浮动了起来),然后相对于以前的位置移动,移动的方向和幅度由left、right、top、bottom属性确定,偏移前的位置保留不动,不会影响其它元素的位置。
如下代码实现相对于以前位置向下移动50px,向右移动100px;
#div1{
width:200px;
height:200px;
border:2px red solid;
position:relative;
left:100px;
top:50px;
}
<div id="div1"></div>
层模型--固定定位
fixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图(屏幕内的网页窗口)本身。由于视图本身是固定的,它不会随浏览器窗口的滚动条滚动而变化,除非你在屏幕中移动浏览器窗口的屏幕位置,或改变浏览器窗口的显示大小,因此固定定位的元素会始终位于浏览器窗口内视图的某个位置,不会受文档流动影响,这与background-attachment:fixed;属性功能相同。
以下代码可以实现相对于浏览器视图向右移动100px,向下移动50px。并且拖动滚动条时位置固定不变。
#div1{
width:200px;
height:200px;
border:2px red solid;
position:fixed;
left:100px;
top:50px;
}
<p>文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。</p>
....
- relative和absolute组合使用:
使用position:absolute可以实现被设置元素相对于其它元素进行定位,需要使用position:relativ。
但是必须遵守下面规范:
1、参照定位的元素必须是相对定位元素的前辈元素:
<div id="box1"><!--参照定位的元素-->
<div id="box2">相对参照元素进行定位</div><!--相对定位元素-->
</div>
从上面代码可以看出box1是box2的父元素(父元素当然也是前辈元素了)。
2、参照定位的元素必须加入position:relative;
#box1{
width:200px;
height:200px;
position:relative;
}
3、定位元素加入position:absolute,便可以使用top、bottom、left、right来进行偏移定位了。
#box2{
position:absolute;
top:20px;
left:30px;
}
这样box2就可以相对于父元素box1定位了(这里注意参照物就可以不是浏览器了,而可以自由设置了)。
- 颜色值缩写:
颜色的css样式也是可以缩写的,当你设置的颜色是16进制的色彩值时,如果每两位的值相同,可以缩写一半。
p {
color: #336699;
}
可以缩写为:
p {
color: #369;
}
- 字体缩写:
body{
font-style:italic;
font-variant:small-caps;
font-weight:bold;
font-size:12px;
line-height:1.5em;
font-family:"宋体",sans-serif;
}
可缩写为:
body{
font:italic small-caps bold 12px/1.5em "宋体",sans-serif;
}
注意:
使用这一简写方式至少要指定 font-size 和 font-family 属性,其他的属性(如 font-weight、font-style、font-variant、line-height)如未指定将自动使用默认值。
在缩写时 font-size 与 line-height 中间要加入“/”斜杠。