一 目前主流web架构
C/S结构:本地有app客户端,云端有服务器
- 这个在浏览器功能不强大时广泛采用,在手机端情况类似
- 这个方式的优点:
- 功能强大,自由定制,不受浏览器限制
- 响应快
- 本地资源支持多
- 这个方式的缺点:
- 需要下载,增加用户负担
- 更新需要用户配合
- 软件安全性不好,容易被破解
B/S结构:本地只有浏览器, 云端服务器
- 现在PC端主流采用的模式
- 优缺点与上面的C/S结构相反
- 在手机端的表现是h5、微信小程序、其他平台软件的小程序,目前占优的是微信小程序
二 http协议和html
- http协议是应用层协议,基于TCP/IP协议。规定网络请求和网络相应的数据格式
- 请求格式(get/post)
- 请求首行
- 请求头
- 请求体(get没有请求体)
- 相应格式 http/1.1
- 响应首行
- 响应头
- 响应体
- 请求格式(get/post)
- html是基于http的一种网页标记语言,目前已经到了第五版
- 采用标签来构建元素的排布骨架
- 用CSS样式表来指定如何显示元素
补充知识:
OSP7的7层理论结构:
- 应用层:规定数据的格式 http
- http就是其中的主流应用层协议 1.1版
- 表示层:对数据进行压缩编码 encode
- 会话层:与目标建立连接 listen accept
- 传输层:建立端口之间的联系 port
- TCP是传输层协议,面向连接,要保证
- UDP是数据报文协议,面向传输,要速度
- 网络层:标记目标的ip地址 ip
- 数据链路:对数据进行分组、设置源和目标mac地址 nat
- 物理层:二进制数据在物理媒介上的传输 光纤
三 html的标记语言
1. 结构性标记
- 整个页面都在这个标签里面
- 页面头,放置编码、标题、css连接地址、关键字、作者、logo等等
- 显示给用户的页面信息
- 万能结构标记,用途最广泛
页脚信息,最新版h5里面有规定 ```html <!DOCTYPE html>
<a name="l2hCt"></a>
## 2. 元素标记
注意元素的内部属性之间靠空格分开,n个空格只算一个。
<a name="QsJAW"></a>
### 2.1 标题
- <h1> - <h6> 1最大,6最小
<a name="CqIyz"></a>
### 2.2 段落
- <p> 段落是块级标签
- <br/> 换行标签 break
<a name="BxgwY"></a>
### 2.3 文字
- 粗体 <b>
- 斜体 <i>
- 删除线 <del>
- 常用字体名称
```html
苹方简体常规: font-family: PingFangSC-Regular, sans-serif;
苹方繁体: font-family: PingFangTC-Regular
微软雅黑 : font-family: Microsoft Yahei
阿瑞尔 Arial
2.4 列表
2.6 表格
- 表格体
- 表头行
- 表头单元格
- 表体行
- 单元格 ` ``` - css尺寸 ```javascript $("").height([val|fn]) $("").width([val|fn]) $("").innerHeight() $("").innerWidth() $("").outerHeight([soptions]) $("").outerWidth([options]) ``` - css位置偏移量 ```html /* $("").offset([coordinates]) // 获取匹配元素在当前视口的相对偏移。 $("").position() // 获取匹配元素相对父元素的偏移,position()函数无法用于设置操作。 $("").scrollTop([val]) // 获取匹配元素相对滚动条顶部的偏移。 */ 案例1:返回顶部
- 表体
- background 背景
- align 水平对齐 valign 垂直对齐
- rowspan 水平单元格合并 colspan 垂直单元格合并
- border 边框
```html
// border的语法:3px solid red (线的宽度,线型,颜色)
<th> 列1 </th> <th> 列2 </th>
单元格的内容1 单元格的内容2 //表格的格式设定 单元格宽度和高度
- 表格内容过长时的隐藏处理 ```html 总结: 当设置了表格的table-layout:fixed以后,各单元格的宽度设置失效,所有的宽度将均分,为了,解决 这个很简单,只要在第一行的页头设置宽度即可,但是同时带来几个问题 1. 固定列宽之后,可能出现内容溢出,要确定是否换行,如果换行,行高不能写死了。 2. 如果要加载其他复杂的功能,比如点击修改,也要处理内容是否溢出的问题,要同时解决这些问题 3. 格式问题可以留着后面解决,先处理内容和功能问题和bug 4. 任何一个解决方案,都不能只考虑一点,权衡之后做决定。 <h4>测试</h4> <style> #a1 { table-layout: fixed; /*先固定表格布局*/ width: 100%; border: 1px solid grey; border-collapse: collapse; } td,th { white-space: nowrap; /*不换行*/ overflow: hidden; /*超出内容隐藏*/ text-overflow: ellipsis; /*文本隐藏方式 加三个小点*/ height: 100px; border: 2px solid #ccc; } </style> <div>中华人民共和国中华人民共和国</div> <table id="a1"> <tr> <td width="5%">J2345-1</td> <td width="10%">studwork profiles profiles profiles</td> <td width="5%" >Echo</td> <td width="10%" >new delhi,India</td> <td width="10%"> 2021-05-06</td> <td width="30%">装箱明细装箱明细装箱明细装箱明细装箱明细装箱明细箱明细装箱明细箱明细装箱明细箱明细装箱明细箱明细装箱明细装箱明细装箱明细装箱明细装箱明细装箱明细装箱明细</td> </tr> </table>
一下是控制列格式的css ```html
<a name="nC3R7"></a> ### 2.7 链接 - <a href="链接地址"> - 锚定: 在页面内跳转 ```html <div id="c1"> 第一章 </div> <a href="#c1"> 返回顶部 </a>
2.8 表单
- 单选框 <input type="radio"> 单选,同样的name可以实现互斥 案例如下: ```html <p> 性别: <input type="radio" name="gender" value="male" checked="checked" > male <input type="radio" name="gender" value="female" > female </p> <!-- 效果如下 --> # 默认选择的选项添加属性: checked = "checked"
复选框
<p> 爱好: <input type="checkbox" name="hobbie" value="piano" > 钢琴 <input type="checkbox" name="hobbie" value="running" > 跑步 </p>
input的email类型 可以使用placeholder,且在提交时自动检查邮件地址格式
input的button类型
input type=”reset” 把内容重置到修改前初始状态,button的显示文字用value设置
input type =”submit” 把所有form领域内的input标签的name和value组成的键值对按method方法传给action所指定的地址,button的显示文字用value设置
- input的date类型
```python
这个类型要求的格式
给他传默认值的时候必须格式化为date:’Y-m-d’, 小细节,内外引号不能相同
一般浏览器不支持placeholder属性
- 下拉框 <select> 选项 <option> 嵌套 ```html <p> 省份: <select name= "province" > <option value="hebei" > 河北 <option value="henan" > 河南 <option value="shandong" > 山东 </select> </p> # 被选中的option 设置属性selected = "selected" # name 只需要在select主标签上设置即可 # value值需要在每个option标签设置 # multiple="multiple" 多选 # required="required" 必填 # size = 3 下拉列表中可见选项的数目
属性 值 描述 autofocus autofocus 规定在页面加载后文本区域自动获得焦点。 disabled disabled 规定禁用该下拉列表。 form form_id 规定文本区域所属的一个或多个表单。 multiple multiple 规定可选择多个选项。 name name 规定下拉列表的名称。 required required 规定文本区域是必填的。 size number 规定下拉列表中可见选项的数目。 多行文本框
属性:
cols 宽度 rows 高度 value 没有定义
方法
.val() 获取控件内文本内容 .html() 意思同上
- 按钮 <button> - 提交按钮 <button type="submit"> 效果与input type="submit"相同,唯一区别btn是成对标签 - 重置按钮 <button type="reset"> ```html -- button的属性,只要存在disable属性就会禁用,要恢复只能清除属性,另外对于控件类给属性赋值最好用JS的prop来做 <button disabled="disabled"> </button> button的显示文字 value = "确认提交"
2.8 span
- 万能行内标签
- 配合css可以实现花样操作
-
2.9 特殊标签
空格  
- 注册R ®
3.0 标签总结:
| 标签类型 | 列举 | 性质 | | —- | —- | —- | | 块级标签 | p h div ul li | 独占一行,有盒模型的所有特征: 长、宽、高 、边框、内外边距 | | 行内标签 | span a | 与别的元素共占一行,有文字的所有特性,特别注意基线的概念 ,这在对齐问题上特别重要 | | 行内块级 | img | 除了不独占一行,有盒的其他特征,也有行内元素的特征,基线由其中的内容决定。
float自动把块级变行内块级 | | display
强行变性 | block 块级
inline 行内
inline-block 行内块级 | 主要用法:
把块级元素变为行内块级,便于横向排版 |
四 样式表CSS
1. CSS的三种形式
css是一种内容与格式分离的设计理念, 方便设计者根据需要调整显示的样式,而不用去更改html原始代码,提高开发的效率和灵活性。 在开始之前,有几个注意要点:
- css的class属性名不能以数字开头
- class可以多个属性名,以空格分开
行内样式表 非常少
<div style="color: white;text-align: center">行内设置</div>
嵌入样式表 局部采用
<head> <title>title</title> <meta charset="utf8"> <style> div{ color: white; background-color: #369; text-align: center } </style> </head>
链接样式表,目前最流行 ```html
注意: - 花括号和引号里面:键和键值之间用冒号链接,参考python的字典 <a name="Gmm0e"></a> ## 2. CSS的选择器 - 基本选择器 - 标签 - class - id - 组合选择器 - 与选择器 一个标签同时满足两个条件 p.classname - 或选择器 可以针对不同标签 p, classname, idname - 子代选择器 空格 - 儿子选择器 > - 毗邻选择器 + 其后的一个标签受影响 - 兄弟选择器 ~ 其后的同一级标签都受影响 ```python // 这里有一个组合选择器的例子:选择子代里面所有的li,除了第一个li // 大于号“>”儿子选择器找到所有的儿子li,共7个,加号“+”毗邻选择器,然后找他这7个li的毗邻元素,这样自然排除了第一个 <style> .test>li + li{ color: red; } </style> <div class="luffy-container"> <ol class="test"> <li>11</li> <li>22</li> <li>33</li> <li>44</li> <li>55</li> <li>66</li> <li>77</li> </ol> </div>
- 属性选择器
- 标签[属性] p[title] 凡是有title属性的p标签
- 标签[属性*=”start”] 凡是属性值里面含有start字符的标签
- 标签[属性^=”start”] 凡是属性值里面以start字符开头的标签
- 标签[属性$=”start”] 凡是属性值里面以start字符结尾的标签
- 标签[属性~=”start”] 凡是属性值里面有空格分开的几个值,其中一个是start字符的标签
伪类选择器
与鼠标动作有关的
hover 鼠标悬浮
a:hover{ cursor: pointer; -- 鼠标手型 move "十" text "I" opacity: 80%; -- 不透明度 color: red; -- 字体颜色 }
link
- visited
- active
- 在标签的内容之前和之后的处理,可添加一个div标签
- p:before
- p:after
- 指定某个特殊的子代
- p:first-child
- p:last-child
3. CSS的属性操作
3.1 元素居中
● 文本图片水平居中 div{ text-align: center } ● div在上级div中居中: margin: auto auto; ● 垂直居中 line-height: 60px; 文本垂直居中,把行高调整为与盒子等高就可以 ● 其他的居中 margin-top: auto;
3.2 div布局方法
行内块级方法,把块级元素变成行内排布,但是内容不一致时有诡异的事情
display: inline-block;
float 方法
- 1: float的元素脱离文档流,后面的元素顶替他的位置,可能产生重叠
- 2: 他会贴在它的上级不浮动元素的下面的左或者右
3: 如果他上级的元素也浮动,则排在他的同一行(按照左右不同的顺序)
float: left; float: right;
4:父级塌陷的解决 ```html
/class里加入空格clearfix,让他同时有两个值,让他具有通用性/ /.clearfix:after语句相当于在这里插入了一个div/- **5 position方法** - relative 相对定位,参考起点:他本来的位置 不脱离文档流
html- **absolute 绝对定位 参考起点:最近的已定位的父级,一直到body, 脱离文档流 ** - **脱离文档流之后,元素会悬浮,但是文字和图片等实际元素的排版不会有重叠 **
html<a name="XStQ3"></a> ### 3.3 行内元素的排布 - line-height的数字值是和font-size大小相关的; - vertical-align的百分比值是和line-height值相关的; - 要让行内元素行或内块级元素水平居中,在父亲上设置text-align: center; - 行内元素垂直居中,可以设置行内块元素的margin-top: 50%-减去块高度的一半 - vertical-align 不能让元素在父级中垂直居中,而是处理img和文本之间的对齐关系 - 背景图的定位 background-position: 10,10 - 垂直居中: - padding 给父级设置上下的padding即可 <a name="PYJse"></a> ### 3.4 CSS的排版总结 - 横向排布的方法和区别 - 排布原则: 面向内容 | **方法** | **效果** | **优点** | 缺点 | | --- | --- | --- | --- | | float | 左飘:与左边padding贴齐<br />右飘:与右边padding贴齐 | 方便左右对齐,采用的最多 | 脱离文档流,可能父级<br />塌陷 解决:fixclear:after | | display:inline-block | div像文字一样排布,对于默认左对齐的元素可以采用 | 不脱离文档流<br />可以用text-align | 不能左右对齐,特别注意<br />基线和行内元素的相互影响 | | position:absolute | 定位到任意指定位置,需要父级设置relative,适合小零件的位置固定 | 随意定位 | 设置很麻烦,需要微调<br />对不同浏览器有差异 | - css的执行逻辑 - 按顺序找到html的脚本中的一行,查找css中的选择标签,依次执行 - 如果没找到直接匹配的选择器,则一直向其父级查找,直到body级别为止,如果没有任何一级匹配,则使用默认值 - 如果几个选择器定位到同一个元素,按权重选择 - 标签 = 1 权重 - class = 10权重 - id= 1000 权重(总高于class和标签) - !import= 最高权重 - 如两个选择器同权重,则后出现的权重更高 - 个人理解: - css在发展早期是一维的,主要是文字和图片的排版,没有考虑到这么复杂的版面设计问题,所以对于横向排布的设计有些凌乱和麻烦; - 最初采用的表格定位方式也有很多缺陷,容纳的元素有限,功能局限大,排版也混乱,最终html采取折中混杂的方式,float和position联合使用。 - html和css依然在不断迭代中,所以这些知识后面也需要不断在实践中更新,加深理解。 <a name="sbnHp"></a> # <a name="Eiwqs"></a> ### 1.2、网页构成 World Wide Web Consortium,简称“W3C”,中文翻译为万维网联盟,又称W3C理事会。1994年10月在[麻省理工学院](http://baike.baidu.com/view/1935.htm)计算机科学实验室成立,建立者是万维网的发明者蒂姆·伯纳斯·李。万维网联盟是Web技术领域最具权威和影响力的国际中立性技术标准机构,创建和发展了W3C标准,致力于维护和发展 web 规范。W3C 标准是网页开发的核心标准。那么什么是W3C标准呢?<br />W3C标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成: - 结构(Structure) - 表现(Presentation) - 行为(Behavior) 对应的W3C标准也分成了三个方面:结构化标准语言主要包括XHTML和XML,表现标准语言主要包括CSS,行为标准主要包括对象模型(如W3C DOM)、ECMA[Script等。这些标准大部分由W3C起草和发布,也有一些是其他标准组织制订的标准,比如ECMA(European Computer Manufacturers Association)的ECMAScript标准。<br />前端基础总共分为三部分:html、css和js。<br />那么了解了开发网页的标准以后,我们接下来开始正式的学习网页开发吧。 <a name="kqdID"></a> ## 5.基本标签 - 标题标签
html标题1
标题2
- 段落标签 <p>大家好,我是段落1。</p> - 换行标签 <br/> - 文本格式化标签 HTML提供了一系列的用于格式化文本的标签,可以让我们输出不同外观的元素,比如粗体和斜体字。如果需要在网页中,需要让某些文本内容展示的效果丰富点,可以使用以下的标签来进行格式化。
html 定义粗体文本
定义粗体文本方式2
定义斜体字
定义斜体字方式2
定义删除文本
- 特殊符号 ® ©<br />标签大致可分为两类 - 块级标签(block) -- 独占一行 - 内联标签(inline) -- 按文本内容占位 - div和span标签 <div>只是一个块级元素,并无实际的意义。主要通过CSS样式为其赋予不同的表现.<br /><span>表示了内联行(行内元素),并无实际的意义,主要通过CSS样式为其赋予不同的表现<br />块级元素与行内元素的区别所谓块元素,是以另起一行开始渲染的元素,行内元素则不需另起一行。如果单独在网页中插入这两个元素,不会对页面产生任何的影响。这两个元素是专门为定义CSS样式而生的。 <a name="BTYmi"></a> ## 6.超链接标签 <a name="cZtAc"></a> ### 6.1、超链接基本使用 超链接是浏览者和服务器的交互的主要手段,也叫超级链接或a链接,是网页中指向一个目标的连接关超链接的属性: | **属性** | **值** | **描述** | | --- | --- | --- | | href | 网络链接 [ 例如: [http://www.baidu.com](http://www.baidu.com/)<br /> ] 本地链接 [ 例如:F:\\html\\index.html ] | 规定链接的跳转目标 | | title | [百度](http://www.baidu.com/) | 链接的提示信息 | | target | _blank [ 在新建窗口中打开网页 ] _self [ 默认值,覆盖自身窗口打开网页 ] _parent [ 在父级框架中打开网页 ] _top [ 在顶级框架中打开网页 ] framename [ 在指定的框架中打开网页] | 与前面四项固定值不同,framename是泛指,并不是这个值,这点将在后面框架部分内容中详细介绍,这里可以暂时先略过 | 1、href是超链接最重要的属性,规定了用户点击链接以后的跳转目标,这个目标可以是 网络连接,也可以是本地连接。<br />2、网络链接指的是依靠网络来进行关联的地址,一般在地址前面是以 http://或者https://这样开头的,如果没有网络,则用户点击了超链接也无法访问对应的目标。<br />3、本地链接指的是本地计算机的地址,一般在地址前面是以 file:///开头或直接以 C:/、D:/、E:/开头的,不需要经过网络。<br />4、如果href的值留空,则默认是跳转到当前页面,也就是刷新当前页面。 - 打开一个新窗口,指定窗口大小和打开方式
python $(“.publisher_name”).click(function () { open(“/books/?publisher_id=2”, “_blank”, “width=800px,height=500px,left=200px,top=200px” ); });<a name="FQGXl"></a> ### 6.2、锚点 锚点( anchor )是超链接的一种应用,也叫命名锚记,锚点可以像一个定位器一样,可以实现页面内的链接跳转,运用相当普遍。例如,我们有一个网页,由于内容太多,导致页面很长,而且里面的内容,可以分为N个部分。这样的话,我们就可以在网页的顶部设置一些锚点,这样便可以方便浏览者点击相应的锚点,到达本页内相应的位置,而不必在一个很长的网页里自行寻找。又例如,我们页面中,有个链接需要跳转到另一个页面的中间或者脚部去,这时候也可以运用上锚点技术来解决这个问题。
html 13910566706<!DOCTYPE HTML> 第一章 第二章 第三章第一章内容
第二章内容
第三章内容
<a name="oqZns"></a> ## 7.img标签 在HTML中,图像由<img>标签定义的,它可以用来加载图片到html网页中显示。网页开发过程中,有三种图片格式被广泛应用到web里,分别是 jpg、png、gif。<br />img标签的属性:<br />/*<br />src属性:<br /> 指定图像的URL地址,是英文source的简写,表示引入资源。<br /> src的值可以是本地计算机存储的图片的地址,也可以是网络上外部网站的图片的地址。<br /> 如果src的值不正确,那么浏览器就无法正确的图片,而是显示一张裂图。<br />alt属性:指定图像无法显示时的替换文本。<br />width属性: 指定引入图片的显示宽度。<br />height属性:指定引入图片的显示高度。<br />border属性:指定引入图片的边框宽度,默认为0。<br />title属性:悬浮图片上的提示文字<br />*/<br />点击图片跳转可以配合a标签使用<br /><a><img src="" alt=""></a> <a name="Tt5ug"></a> ## 8.列表标签 <ul type="square"><br /> <li>item1</li><br /> <li>item2</li><br /> <li>item3</li><br /> </ul> <ol start="100"><br /> <li>item1</li><br /> <li>item2</li><br /> <li>item3</li><br /> </ol> <a name="BwWG3"></a> ## 9.表格标签 <a name="l7czI"></a> ### 9.1、table结构 在HTML中使用table来定义表格。网页的表格和办公软件里面的xls一样,都是有行有列的。HTML使用tr标签定义行,使用td标签定义列。<br />语法:<br /><table border="1"><br /> <tr><br /> <td>单元格的内容</td><br /> ……<br /> </tr><br />……<br /></table> 1、<table>和</table>表示一个表格的开始和结束。一组<table>...</table>表示一个表格。<br />2、border用于设置整个表格的边框宽度,默认为0,表示不显示边框。<br />3、<tr>和</tr>表示表格中的一行的开始和结束。一组<tr>...</tr>,一个表格可以有多行。通过计算table标签中包含多少对tr子标签即可知道一个表格有多少行。<br />4、<td>和</td>表示表格中的一个单元格的开始和结束。通过计算一个tr里面包含了多少对td自标签即可知道一个表格有多少列,多少的单元格了。 <a name="CIZgy"></a> ### 9.2、table属性 | **属性** | **值** | **描述** | | --- | --- | --- | | [width](http://www.w3school.com.cn/tags/att_table_width.asp) | px、% | 规定表格的宽度。 | | height | px、% | 规定表格的高度。 | | [align](http://www.w3school.com.cn/tags/att_table_align.asp) | left、center、right | 规定表格相对周围元素的对齐方式。 | | [bgcolor](http://www.w3school.com.cn/tags/att_table_bgcolor.asp) | rgb(x,x,x)、#xxxxxx、colorname | 规定表格的背景颜色。 | | background | url | 规定表格的背景图片。 | | [border](http://www.w3school.com.cn/tags/att_table_border.asp) | px | 规定表格边框的宽度。 | | [cellpadding](http://www.w3school.com.cn/tags/att_table_cellpadding.asp) | px、% | 规定单元格边框与其内容之间的空白。 | | [cellspacing](http://www.w3school.com.cn/tags/att_table_cellspacing.asp) | px、% | 规定单元格之间的空隙。 | | nowrap | 没有值 <td nowrap> </td> | 单元格不允许换行 | <a name="xUEZl"></a> ### 9.3、td属性 表格中除了行元素以外,还有单元格,单元格的属性和行的属性类似。td和th都是单元格。 | **属性** | **值** | **描述** | | --- | --- | --- | | height | px、% | 规定单元格的高度。 | | width | px、% | 规定单元格的宽度。 | | [align](http://www.w3school.com.cn/tags/att_table_align.asp) | left、center、right | 规定单元格内容的对齐方式。 | | valign | top、middle、bottom | 规定单元格内容的垂直对齐方式。 | | [bgcolor](http://www.w3school.com.cn/tags/att_table_bgcolor.asp) | rgb(x,x,x)、#xxxxxx、colorname | 规定单元格的背景颜色。 | | background | url | 规定单元格的背景图片。 | | rowspan | number | 规定单元格合并的行数 | | colspan | number | 规定单元格合并的列数 | <a name="mW4vz"></a> ## 10.表单标签 表单主要是用来收集客户端提供的相关信息,提供了用户数据录入的方式,有多选、单选、单行文本、下拉列表等输入框,便于网站管理员收集用户的数据,是Web浏览器和Web服务器之间实现信息交流和数据传递的桥梁.<br />表单被form标签包含,内部使用不同的表单元素来呈现不同的方式来供用户输入或选择。当用户输入好数据后,就可以把表单数据提交到服务器端。<br />一个表单元素有三个基本组成部分: - 表单标签,包含了表单处理程序所在的URL以及数据提交到服务器的方法等表单信息。 - 表单域,包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等表单控件。 - 表单按钮,包括提交按钮、复位按钮和一般按钮,用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。 在HTML中创建表单用form标签。每个表单都可以包含一到多个表单域或按钮。form标签属性: | **属性** | **值** | **描述** | | --- | --- | --- | | action | 访问服务器地址 | 服务器端表单处理程序的URL地址 | | method | post、get[默认值] | 表单数据的提交方法 | | target | 参考超链接的target属性 | 表单数据提交时URL的打开方式 | | enctype | application/x-www-form-urlencoded[默认值] multipart/form-data [用于文件上传] text/plain [用于纯文本数据发送] | 表单提交数据时的编码方式 |
javascript用户注册
:
密码:
爱好: 篮球 足球 双色球
性别: 男 女 其他
生日:
上传简历:
<!- 上传文件的input表单标签,value=“上传文件的路径” accpet=”可接受的文件类型”—>籍贯:
<a name="D8K9B"></a> ## 11、总结 今天我们学习了HTML标签元素尤其是form表单标签的使用和属性以及基于HTTP协议实现web通信流程,这一点是需要重点理解掌握的。 <a name="tPOsH"></a> # <a name="Luxrv"></a> ## 1、CSS的引入方式 CSS样式有三种不同的使用方式,分别是行内样式,嵌入样式以及链接式。我们需要根据不同的场合不同的需求来使用不同的样式。 - 行内样式 行内样式,就是写在元素的style属性中的样式,这种样式仅限于元素内部起作用。当个别元素需要应用特殊样式时就可以使用内联样式。但不推荐大量使用内联样式,因为那样不利于后期维护。
html行内设置/行内设置的方法与嵌入式相同,只不过把它变成一个属性style/- 嵌入式 嵌入式,是把CSS样式写在HTML文档内部head标签中的style标签里。浏览器加载HTML的同时就已经加载了CSS样式了。当单个文档需要特殊,单独的样式时,可以使用内部样式表。 - 链接式 链接式,就是把CSS样式写在HTML文档的外部,一个后缀为 .css 的外部样式表中,然后使用时在head标签中,使用link标签的href属性引入文件即可。当CSS样式需要应用在很多页面时,外部样式表是最理想的选择。在使用外部样式表的情况下,我们可以通过改变一个文件来改变这所有页面的外观。<br /> css样式表的存储路径: /css/common.css
html<a name="bB8v5"></a> ### 3.2.2、组合选择器 - 后代子代选择器: 空格 - 与选择器 点号 p.c1 - 或选择器 逗号 p.c1,#i1 - 兄弟选择器 - 毗邻选择器 加号 + (紧挨着的下一个) - 兄弟选择器 波浪号 ~ (下面同一层次的所有标签) <a name="TYWlQ"></a> ### 3.3.3、属性选择器 E[att] 匹配所有具有att属性的E元素,不考虑它的值。(注意:E在此处可以省略。<br /> 比如“[cheacked]”。以下同。) p[title] { color:#f00; }<br /> <br />E[att=val] 匹配所有att属性等于“val”的E元素 div[class=”error”] { color:#f00; } p[type*="create"] <br />相当于是一个组合标签 <a name="HQQsn"></a> ### 3.3.4、伪类选择器 - anchor伪类:专用于控制链接的显示效果 | [:link](https://www.w3school.com.cn/cssref/selector_link.asp) | **a:link** | **选择所有未被访问的链接。** | | --- | --- | --- | | [:visited](https://www.w3school.com.cn/cssref/selector_visited.asp) | a:visited | 选择所有已被访问的链接。 | | [:active](https://www.w3school.com.cn/cssref/selector_active.asp) | a:active | 选择活动链接。 | | [:hover](https://www.w3school.com.cn/cssref/selector_hover.asp) | a:hover | 选择鼠标指针位于其上的链接。 | - before after伪类 before/after伪类相当于在元素内部插入两个额外的标签,其最适合也是最推荐的应用就是图形生成。在一些精致的UI实现上,可以简化HTML代码,提高可读性和可维护性。 | [:first-child](https://www.w3school.com.cn/cssref/selector_first-child.asp) | **p:first-child** | **选择属于父元素的第一个子元素的每个 <p> 元素。** | | --- | --- | --- | | [:last-child](https://www.w3school.com.cn/cssref/selector_last-child.asp) | p:last-child | 选择属于其父元素最后一个子元素每个 <p> 元素。 | | [:before](https://www.w3school.com.cn/cssref/selector_before.asp) | p:before | 在每个 <p> 元素的内容之前插入一个div。 | | [:after](https://www.w3school.com.cn/cssref/selector_after.asp) | p:after | 在每个 <p> 元素的内容之后插入div。 | <a name="pYVIt"></a> ### 3.3.5、样式继承 CSS的样式表继承指的是,特定的CSS属性向下传递到子孙元素。总的来说,一个HTML文档就是一个家族,然后html元素有两个子元素,相当于它的儿子,分别是head和body,然后body和head各自还会有自己的儿子,最终形成了一张以下的家族谱。<br />在上图中,可以看到,body的子元素有三个,h1、p和ul,ul也有几个子元素,p也有1个子元素,那么li和a就都是body的后代元素。有时可能我们在body里面设置了一些属性,结果,body下面所有的后代元素都可能享受到,这就是样式继承。就像一句俗语一样,“龙生龙,凤生凤,老鼠的儿子会打洞”。样式继承,可以给我们的网页布局带来很多的便利,让我们的代码变得更加简洁,但是,如果不了解,或者使用不当,也有可能会给我们带来很多不必要的麻烦。<br />因此,如果了解了哪些样式是会继承到后代元素的,那么就可以避免这些问题的发生了。 | **文本相关属性** | | | | | --- | --- | --- | --- | | font-family | font-size | letter-spacing | line-height | | font-style | font-variant | text-align | text-indent | | font-weight | font | text-transform | word-spacing | | color | direction | | | | 列表相关属性 | | | | | list-style-image | list-style-position | list-style-type | list-style | | 表格和其他相关属性 | | | | | border-collapse | border-spacing | caption-side | empty-cells | | cursor | | | | <a name="eftzF"></a> ### 3.3.6、选择器优先级 - 继承 继承是CSS的一个主要特征,它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。例如一个BODY定义了的颜色值也会应用到段落的文本中。<br />body{color:red;} <p>helloyuan</p><br />这段文字都继承了由body {color:red;}样式定义的颜色。然而CSS继承性的权重是非常低的,是比普通元素的权重还要低的0。<br />p{color:green}<br />发现只需要给加个颜色值就能覆盖掉它继承的样式颜色。由此可见:任何显示申明的规则都可以覆盖其继承样式。 此外,继承是CSS重要的一部分,我们甚至不用去考虑它为什么能够这样,但CSS继承也是有限制的。有一些属性不能被继承,如:border, margin, padding, background等。 - 优先级所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序。样式表中的特殊性描述了不同规则的相对权重。 /*<br />!important > 行内样式>ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
markdown 1 内联样式表的权值最高 style=”” 1000; 2 统计选择符中的ID属性个数。 #id 100 3 统计选择符中的CLASS属性个数。 .class 10 4 统计选择符中的HTML标签名个数。 标签名 1<br />按这些规则将数字符串逐位相加,就得到最终的权重,然后在比较取舍时按照从左到右的顺序逐位比较。 1、有!important声明的规则高于一切。<br />2、如果!important声明冲突,则比较优先权。<br />3、如果优先权一样,则按照在源码中出现的顺序决定,后来者居上。<br />4、由继承而得到的样式没有specificity的计算,它低于一切其它规则(比如全局选择符*定义的规则)。<br />5、用数字表示只是说明思想,一万个class也不如一个id权值高 <a name="uOYDH"></a> ## 3、CSS的属性操作 <a name="hQnFU"></a> ### 3.3.1、文本属性 - font-style(字体样式风格) /*<br />属性值:<br />normal:设置字体样式为正体。默认值。 <br />italic:设置字体样式为斜体。这是选择字体库中的斜体字。<br />oblique:设置字体样式为斜体。人为的使文字倾斜,而不是去使用字体库的斜体字。<br />*/ - font-weight(字体粗细) /*<br />属性值:<br />normal:设置字体为正常字体。相当于数字值400<br />bold:设置字体为粗体。相当于数字值700。<br />bolder:设置字体为比父级元素字体更粗的字体。<br />lighter:设置字体为比父级元素字体更细的字体。<br />number:用数字表示字体粗细。从小到大,越来约粗,取值范围:100、200、300、400、500、600、700、800、900。<br />注意:<br />font-weight的常用值有两个normal和bold,其他的值在浏览器中的支持并不好。<br />*/ - font-size(字体大小) /*<br />font-size的值有很多,有xx-small、x-small、small、medium、large、x-large、xx-large、smaller和larger,也可以设置值为具体的数值加上对应的计算单位来表示字体的大小。字体单位有像素( px )、字符( em,默认1em等于16px,2em等于32px,根据不同浏览器的默认字体大小而决定 )、百分比( % ),磅[点]( pt )。<br />字体不指定大小时,主流浏览器默认是15像素到16像素。旧版本的谷歌浏览器,字体最小只能设置成12像素,新版已经修复。*/ - font-family(字体族) /*<br />font-family可以指定元素使用的字体系列或字体族。当我们使用font-family指定字体族的时候,可以指定多种字体,作为候补。指定多个字体的时候,需要使用逗号隔开。<br />如果css中没有声明当前内容使用的字体族的时候,默认:<br /> 中文: 宋体 [ win7以后默认是 微软雅黑 ]<br /> 英文: Arial<br />*/ - color(字体颜色) // 可以使用color来表示字体的颜色,颜色值最常用的有三种形式,英文单词,十六进制,RGB十进制。更高级的有 RGBA(带透明度)、HSL、HSLA,不过低版本的浏览器并不支持。 另外要注意,使用十六进制表示颜色值的时候,如果字符的格式类似于“AAAAAA”的这种,六个字符一样的;又或者是“AABBCC”,这种,一二,三四,五六 位置上的数字一样的,我们可以使用简写来表达。 - text-align(文本对齐方式)
html text-align: left; text-align: right; text-align: center; text-align: justify; 实现两端对齐文本效果- line-height(字体行高)
html line-height: 20px; line-height: 60%; // 字体行高即字体最底端与字体内部顶端之间的距离。值可以是normal、px、number、%。 行高 = 字体大小 + 上半行距 + 下半行距- vertical-align (行内块元素之间的对齐方式)
html vertical-align: middle;
— 属性设置元素的垂直对齐方式。 yuan- text-decoration
html a{ text-decoration: none; } // 使用text-decoration可以设置文本内容的装饰线条,正常的文本是没有线条的,常用的值有none,underline,overline,line-through四种。<a name="kgH17"></a> ### 3.3.2、背景属性 - background-color(背景颜色)
html- background-image(背景图片) background-image可以引入一张图片作为元素的背景图像。默认情况下,background-image放置在元素的左上角,并在垂直和水平方向重复平铺。<br />语法:
html background-image: url(‘图片地址’)当同时定义了背景颜色和背景图像时,背景图像覆盖在背景颜色之上。 所以当背景图片没有被加载到,或者不能完全铺满元素时,就会显示背景颜色。 - background-repeat(背景平铺方式) CSS中,当使用图像作为背景了以后,都是默认把整个页面平铺满的,但是有时候在很多场合下面,页面并不需要这种默认的效果,而可能需要背景图像只显示一次,或者只按照指定方式进行平铺的时候,可以使用background-repeat来进行设置。
html background-repeat: no-repeat; (不平铺) background-repeat: repeat-x; (X轴平铺) background-repeat: repeat-y; (Y轴平铺)- background-position(背景定位)
html background-position:0 0; 相对于元素左上角,x轴坐标 y轴坐标, 两个值都可以是正、负值 background-position: left; 还可以是左(left)、中(center)、右(right)以页面中元素的左上角为原点(0,0),把元素的内部区域当成一个坐标轴(上边框为X轴,越往左X的值越大,左边框为Y轴,越往下Y轴的值就越大,反之亦然),然后计算出背景图片的左上角与圆点的距离(x轴和y轴的距离) - background(背景样式缩写) 和字体属性一样,多个不同背景样式属性也是可以同时缩写的,不过不需要像字体那样按照一定的顺序,背景样式的缩写属性的顺序是不固定的,可以任意编排。
html background: url(“img.jpg”) no-repeat center; 背景图片 背景平铺方式 背景定位;<a name="n8ZNC"></a> ### 3.3.3、边框属性 - border-style(边框风格) 定义边框的风格,值可以有
html border-style: none:没有边框,当border的值为none的时候,系统将会忽略[border-color] border-style: hidden:隐藏边框,低版本浏览器不支持。 border-style: dotted:点状边框。 border-style: dashed:虚线边框。 border-style: solid:实线边框。 border-style: double:双实线边框,两条单线与其间隔的和等于border-width值。border-style的值可以缩写的:
html border-style:dotted dashed solid; 分别控制上、左右、下的边框风格 ## 只有一个值的时候表示同时控制上下左右的边框风格 只有两个值的时候表示分别控制上下、左右的边框风格 有三个值的时候表示分别控制上、左右、下的边框风格 有四个值的时候表示分别控制上、右、下、左的边框风格- border-width(边框宽度) 使用border-width可以定义边框的厚度,值可以是medium,thin,thick和指定数值的宽度。 同时,border-width也可以进行缩写:
html border-width: 1px; border-top-width: medium; 设置上边的边框宽度 border-bottom-width: thin; 设置下边的边框宽度 border-left-width: thick; 设置左边的边框宽度 border-right-width 设置右边的边框宽度- border-color(边框颜色)
html border-color : #FFF ; #十六进制颜色可以缩写,相同的两位可以并做一位,#FFF = #FFFFFFborder-color也可以单独指定不同方向 - 边框样式缩写 还可以把边框风格,边框宽度,边框颜色进行组合在一起,进行缩写:语法:<br />// border: 边框宽度 边框样式 边框颜色;<br />注意,border的缩写值可以不按照顺序来进行书写。这样的缩写可以同时控制4个方向的边框样式。 <a name="YDoLH"></a> ### 3.3.4、列表属性 CSS中提供了一些列表属性可以用来:<br /> (1)、设置不同的列表项标记为有序列表<br /> (2)、设置不同的列表项标记为无序列表<br /> (3)、设置列表项标记为图像 - list-style-type(系统提供的列表项目符号) - list-style-image(自定义的列表项目符号)
html li { list-style-image: url(‘qq.gif’); }<a name="ziGQ1"></a> ### 3.3.5、dispaly属性 display可以指定元素的显示模式,它可以把行内元素修改成块状元素,也可以把别的模式的元素改成行内元素。diisplay常用的值有四个。<br />语法:
html display: block; // 声明当前元素的显示模式为块状元素 display: inline; // 声明当前元素的显示模式为行内元素 display: inline-block; // 声明当前元素的显示模式为行内块状元素 display: none; // 声明当前元素的显示模式为隐藏<a name="DVkob"></a> ### 3.3.6、盒子模型(重点) 盒模型是CSS的核心知识点之一,它指定元素如何显示以及如何相互交互。HTML页面上的每个元素都可以看成一个个方盒子,这些盒子由元素的content(内容)、padding(内边距)、border(边框)、margin(外边距)组成。 - padding(内边距及其缩写) 内边距,也叫“内补白”,表示页面中元素的边框与内容的距离。内边距的值不能是负值,相当于table标签的cellpadding属性。<br />内边距可以设置多个值:<br />/*<br />当padding只有一个值的时候表示同时控制上下左右的内边距。<br />当padding只有两个值的时候表示分别控制上下、左右的内边距。<br />当padding有三个值的时候表示分别控制上、左右、下的内边距。<br />当padding有四个只的时候表示分别控制上、右、下、左的内边距。<br />*/<br />内边距也可以进行单独设置:<br />/*<br />padding-top 设置上边的外边距<br />padding -bottom 设置下边的外边距<br />padding -left 设置左边的外边距<br />padding -right 设置右边的外边距<br />*/ - margin(外边距及其缩写) 外边距,也叫“外补白”,表示页面中元素与元素之间的距离。外边距越大,两者的距离就越远,反之,如果外边距越小,则元素之间的距离就越近,外边距的值可以是正数,也可以是负值。<br />margin也可以像padding一样设置多个值和单独方向设置,用法一样。<br />1、在网页的开发过程中,需要让一个元素相对于父级元素作水平居中时,可以借助margin的特性来实现。<br />使用margin让元素自身居中:
html margin: 0 auto; 0:上下外边距为0, auto: 左右边距自动计算让元素在上级元素中居中2、浏览器的默认边距清零
html * { margin: 0; padding: 0; }<a name="OQV9X"></a> ### 3.3.7、float属性(重点) - 流动布局 流动模型(Flow),即文档流,浏览器打开HTML网页时,从上往下,从左往右,逐一加载。<br />在正常情况下,HTML元素都会根据文档流来分布网页内容的。<br />文档流有2大特征:<br />① 块状元素会随着浏览器读取文档的顺序,自上而下垂直分布,一行一个的形式占据页面位置。<br />② 行内元素会随着浏览器区队文档的顺序,从左往右水平分布,一行多个的形式占据页面位置。行内元素摆放满一行以后才会到下一行继续排列。
html <!DOCTYPE HTML>d1d2- 浮动模型 要学习浮动模型的布局模式,就要了解CSS提供的浮动属性(float)。浮动属性是网页布局中最常用的属性之一,通过浮动属性不但可以很好的实现页面布局,而且还可以依靠它来制作导航栏等页面功能。<br />简单浮动:
html <!DOCTYPE HTML>- 字围效果 ```html <!DOCTYPE HTML> <html lang="en-US"> <head> <title>字围效果</title> <style> .c1{ width: 200px; height: 200px; background-color: indianred; } .c2{ <!-c2脱离文档流,显示在c3的上面了--> width: 300px; height: 200px; background-color: orange; float: left; } .c3{ width: 400px; height: 400px; background-color: lightblue; } </style> </head> <body> <div class="c1">111</div> <div class="c2">222</div> <div class="c3">333</div> </body> </html>
字围效果的总结:
- div块的默认高度由不脱离文档流的元素的总和决定
- 浮动元素的与上级不浮动元素的基线对齐
- 如果行内块元素浮动不脱离文档流,单不把他视为文字块,只看被占据的一块区域。
案例:
<!DOCTYPE HTML> <html lang="en-US"> <head> <title>字围案例</title> <meta charset="utf8"> <style> .c1{ width: 500px; } img{ <!-图片本来是个行内块元素,浮动以后并不脱离文档流--> float: left; width: 300px; height: 200px; } </style> </head> <body> <div class="c1"> <img src="" alt=""> <span class="text"> </span> </div> </body> </html>
当一个元素被设置浮动后,将具有以下特性:
- 任何申明为float 的元素都会自动被设置为一个行内块状元素,具有行内块状元素的特性。
- 假如某个元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素会被挤到下一行);如果A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部总是和上一个元素的底部对齐。
- 在标准浏览器中如果浮动元素a脱离了文档流,那么排在浮动元素a后的元素将会往回排列占据浮动元素a本来所处的位置,使页面布局产生变化。
- 如果水平方向上没有足够的空间容纳浮动元素,则转向下一行。
- 字围效果:文字内容会围绕在浮动元素周围。
- 浮动元素只能浮动至左侧或者右侧。
- 浮动元素只能影响排在其后面元素的布局,却无法影响出现在浮动元素之前的元素。
- 清除浮动clearfix
网页布局中,最常用的布局便是浮动模型。但是浮动了以后就会破坏原有的文档流,使页面产生不必要的改动,所以我们一般在浮动了以后,达到目的了,就紧接着清除浮动。
在主流浏览器(如Firefox)下,如果没有设置height,元素的高度默认为auto,且其内容中有浮动元素时,在这种情况下元素的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的情况,叫“浮动溢出”,为了防止这个现象的出现而进行的CSS处理操作,CSS里面叫“清除浮动”。<!DOCTYPE HTML> <html lang="en-US"> <head> <title></title> <meta charset="utf8"> <style> .box{ border: 1px solid red; } .c1{ width: 200px; height: 200px; background-color: #336699; float: left; } .c2{ width: 200px; height: 200px; background-color: orange; float: right; } .footer{ width: 100%; height: 60px; background-color: yellowgreen; } </style> </head> <body> <div class="box"> <div class="c1"></div> <div class="c2"></div> </div> <div class="footer"></div> </body> </html>
clear是css中专用于清除浮动的,常用的属性值有以下几个:
值 描述 left 在左侧不允许浮动元素。 right 在右侧不允许浮动元素。 both 在左右两侧均不允许浮动元素。 none 默认值。允许浮动元素出现在两侧。 <!DOCTYPE HTML> <html lang="en-US"> <head> <title>简单浮动</title> <style> .c1{ width: 200px; height: 200px; background-color: indianred; float: left; /*float: right;*/ } .c2{ width: 300px; height: 200px; background-color: orange; float: left; clear: left; /*clear: both;*/ } .c3{ width: 400px; height: 200px; background-color: lightblue; float: left; } </style> </head> <body> <div class="c1"></div> <div class="c2"></div> <div class="c3"></div> </body> </html>
清除浮动解决父级塌陷问题:
.clearfix:after { /在类名为“clearfix”的元素内最后面加入内容/
content: “.”; /内容为“.”就是一个英文的句号而已。也可以不写。/
display: block; /加入的这个元素转换为块级元素。/
clear: both; /清除左右两边浮动。/
visibility: hidden; /可见度设为隐藏。注意它和display:none;是有区别的。/
/ visibility:hidden;仍然占据空间,只是看不到而已;/
line-height: 0; /行高为0;/
height: 0; /高度为0;/
font-size:0; /字体大小为0;/
}
整段代码就相当于在浮动元素后面跟了个宽高为0的空div,然后设定它clear:both来达到清除浮动的效果。
之所以用它,是因为,你不必在html文件中写入大量无意义的空标签,又能清除浮动。此外,还给父元素加上溢出隐藏属性(overflow: hidden;)来进行清除浮动。
3.3.8、position属性
就像photoshop中的图层功能会把一整张图片分层一个个图层一样,网页布局中的每一个元素也可以看成是一个个类似图层的层模型。层布局模型就是把网页中的每一个元素看成是一层一层的,然后通过定位属性position对元素进行定位摆放,最终实现网页的布局。
定位属性position有4个值,分别是静态定位(static)、相对定位(relative)、绝对定位(absolute)和固定定位(fixed)。默认就是static。所以我们略过。
元素设置了定位以后,还要依靠4个方位属性来进行定位摆放。
方位属性:
/*
top:让元素相对于指定目标的顶部偏移指定的距离。
例如: top:10px; 表示距离顶部10像素right:让元素相对于指定目标的右边偏移指定的距离。
例如: right:10px; 表示距离顶部10像素bottom:让元素相对于指定目标的底部偏移指定的距离。
例如: bottom:10px; 表示距离顶部10像素left:让元素相对于指定目标的左边偏移指定的距离。
例如: left:10px; 表示距离顶部10像素
*/- 相对定位(relative)
相对定位就是在正常文档流中,元素相对于自身位置使用left、right、top、bottom属性进行定位偏移。
.c1{
width: 200px;
height: 200px;
background-color: indianred;} .c2{<br /> width: 200px;<br /> height: 200px;<br /> background-color: orange;<br /> position: relative;<br /> left: 200px;<br /> top: 200px; } .c3{<br /> width: 200px;<br /> height: 200px;<br /> background-color: lightblue; }
- 绝对定位(absolute)
绝对定位就是将元素脱离文档流,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父级元素进行绝对定位,如果不存在这样的父级元素,则默认是相对于body元素进行绝对定位。
轮播图案例:
<!DOCTYPE HTML>
*{<br /> margin: 0;<br /> padding: 0;<br /> } .lunbo{<br /> width: 590px;<br /> height: 470px;<br /> border: 1px solid rebeccapurple;<br /> margin: 100px auto;<br /> position: relative;<br /> } .lunbo ul{<br /> list-style: none;<br /> } .lunbo .img li{<br /> position: absolute;<br /> top: 0;<br /> left: 0;<br /> } .lunbo .btn li{ font-size: 25px;<br /> width: 40px;<br /> height: 40px;<br /> background-color: gray;<br /> text-align: center;<br /> line-height: 40px;<br /> border-bottom-right-radius: 50%;<br /> border-top-right-radius: 50%;<br /> color: white; position: absolute;<br /> top: 50%;<br /> margin-top: -20px; } .lunbo .left_btn{<br /> left: 0;<br /> } .lunbo .right_btn{<br /> right: 0;<br /> }<br /> </style><br /> </head><br /> <body>
文章...
案例2:位置偏移 <!DOCTYPE html>
属性: |