作者小头像 Lv.1
19 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

编程语言
个人勋章
TA还没获得勋章~
成长雷达
10
9
0
0
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

编程语言

达成规则

发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32609 468 0
他的回复:
### 华为云ID: SavageGrowth ### 第一周学习笔记 ## 编程语言 编程语言是用于开发程序的语言 可以通过类似于人类语言的 ”语言“ 来控制计算机,让计算机为我们做事情,这样的语言叫做编程语言 编程语言是用来控制计算机的一系列指令,它有固定的格式和词汇(不同的编程语言的格式和词汇不一样),必须遵守 如今通用的编程语言有两种形式:汇编语言和高级语言 **汇编语言和机器语言 **实质是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,统一识别和记忆 **高级语言** :主要是相对于低级语言而言,它并不是特指某一种具体的语言,而是包含了很多编程语言,常用的有C/C++、JAVA、C#、Python、JavaScript、Go等 ## JavaScript简介 JavaScript是由Brendan Eich(布兰登·艾奇)来创造的,这位大神仅仅使用了**10多天的时间,就开发出来了** JavaScript和Java根本没有任何关系 JavaScript是运行在客户端的脚本语言 ### JavaScript的作用 - 表单动态校验(密码强度检测)(JS产生最初的目的),直接在客户端上进行验证输入表单中的内容是否符合规范 不用麻烦服务器来验证,减少服务器的压力 - 网页特效 - 服务端开发(Node.js) - APP(Cordova) - 控制硬件-物联网(Ruff) - 游戏开发(cocos2d-js) - **在客户端能实现的:客户端数据计算**:购物车内商品的计算 直接在客户端通过js来计算价格 不用传递商品价格和数量给服务器进行计算 提升了效率 减少服务器压力 ### HTML/CSS与JS的关系 HTML/CSS 是标记语言——描述类语言 HTML决定网页结构和内容,相当于人的身体 CSS决定网页呈现给用户的样子,相当于给人穿衣服 JavaScript是脚本语言——编程类语言 实现业务逻辑和页面控制,相当于人的各种动作 ### JavaScript的执行机制 浏览器本身不会执行JS代码,而是通过内置JavaScript引擎(解释器)来执行JS代码 JavaScript是解释性语言,因此JS引擎编译JavaScript代码时 是逐行编译JavaScript代码的 > 逐句编译:JS引擎每次就只编译一行JavaScript代码,编译成二进制的机器语言,然后再执行这行机器语言,重复这样的编译和执行,直到没有JavaScript代码可以去编译 ### JavaScript的组成 ES + DOM + BOM ES:ES语言标准 DOM:文档对象模型 BOM:浏览器对象模型 ### 书写JS的方式 内嵌式的js ```html ``` 行内式添加JavaScript代码 ```html 点我呀 ``` 引入外部JS ```html ``` ### 注释语句 注释是提供给代码阅读者使用,不会参与执行 单行注释:双斜杠 ` //` 多行注释: `/* */` ### 输入语句 实际开发的时候,基本不用 ```js let name = prompt("请输入你的年龄"); // 和alert一样,只有当点击确定或者取消之后,后面的代码才会运行(同步执行的表现) // 输入的值会保存到变量中 console.log(name); ``` ### 输出语句 下面的输出语句都是浏览器环境提供的,到别的环境中,这些语句就不会生效了 ```js document.write(); //该语句将数据输出到页面中 ``` ```js alert(); //该语句将数据用弹框的形式显示到页面,只有当点击确定之后,后面的代码才会运行(同步执行的表现) ``` ```js console.log();//该语句将数据显示到控制台中(常用) ``` ## 变量 变量主要用来解决数据存放问题 ```js var a = 123; ``` ### 变量的命名规范 在开发中,凡是需要命名的位置,叫做标识符 标识符就是一个名字。在JavaScript中,标识符用来对变量、函数、对象属性名进行命名,或者用做JavaScript代码中某些循环语句中的跳转位置的标记 标识符的规范(也就是变量的命名规范) 1. 必须以字母、下划线"-"、或者美元符"$"开头 2. 后续的字符可以是字母、数字、下划线或者“$”符 3. 变量的命名不能是关键字、保留字重复。如不能将变量名设置为 var for while if null undefined等 ### 声明变量的特殊情况 #### 使用声明但未赋值的变量 输出结果为undefined ```js var num; console.log(num);// undefined 这个是声明变量但未赋值的变量 输出undefined ``` #### 使用未声明未赋值的变量 输出结果会报错 ```js console.log(str);// Error:str is not defined str是尚未声明的变量 使用一个尚未声明的变量会报错 ``` 对尚未声明的变量只有两种操作不会报错 ```js // 使用typeof操作符检测其数据类型 console.log(typeof str);// 返回undefined // 对尚未声明的变量调用 delete 不会导致错误 但这样做其实没有什么意义(在严格模式下会报错) console.log(delete str); ``` #### 使用不用var声明并直接赋值的变量 不报错 能正常的输出结果 这个是js的特殊性 不推荐这种方式,因为变量会变成全局变量(变成全局对象的属性) ```js message="哈哈"; console.log(message);//哈哈 console.log(window.message);//哈哈 ``` ## 数据类型 根据数据占用的空间不同,所以要划分数据类型 JavaScript中存储的数据类型是可变的 ### 数字类型 小数 负数 整数 负整数 0 NaN等等 【了解】数字类型加上前缀,来表示不同的进制(前端开发中,进制一般是用不到的) ```js 0:前缀0表示八进制 console.log(010);//8 0x:前缀0x表示十六进制 0b:前缀0b表示二进制 ``` ### 字符串类型 字符串表示一长串文本或多个文本 ### 布尔类型 布尔类型表示真或假两种状态 ture:表示真 false:表示假 ### null类型 null类型只有一个特殊的值为null,常用来描述空值。从逻辑角度来看,null值表示一个空对象指针 ### undefined类型 undefined ## 数据类型转换 ### 把其它类型转换成字符串类型 从表单 prompt 中获取的数据 默认是字符串类型的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。通俗的来讲,就是要把一种数据类型转换成另外一种数据类型 我们通过会试下3种方式的转换 - 转换为字符串类型 - 转换为数字类型 - 转换为布尔类型 | 方式 | 说明 | | ----------------- | ---------------------------- | | toString() | 转成字符串 | | String() 强制转换 | 转成字符串 | | 加号拼接字符串 | 和字符串拼接的结果都是字符串 | ### 把字符串类型转换成数字类型 | 方式 | 说明 | | ---------------------- | -------------------------------- | | parseInt( )函数 | 把字符串类型转换成整数数字类型 | | parseFloat( )函数 | 把字符串类型转成成浮点数数字类型 | | Number( ) 强制转换函数 | 把字符串转换成数值类型 | | 隐式转换: - * / | 使用算术运算符隐式转换为数字类型 | ### 把其它类型转换为布尔类型 | 方式 | 说明 | | ------------- | ------------------ | | Boolean()函数 | 其他类型转成布尔值 | 表示 空、否定的值 会转换为false 如 0 NaN null undefiend '' false ## 运算符 ### 算术运算符分类 1. `+` `-` `*` `/ ` 这些就是正常的加减乘除 2. `+` `-` 这些是放到数字前面的 表示正数和负数 3. `%` 求余数运算符 4. `++` `--` 加加 减减 自增自减运算符(比较复杂,会单独开一张章节来讲解) 5. `**` 幂运算符 2次幂 3次幂 ### 表达式 表达式是由操作符和操作数组成的 每一个表达式都有一个运算结果,该结果叫做返回值,返回值的类型叫做返回类型 ### 自增自减运算符 ```js var a = 1; n++; ++n; ``` ```js var a = 1; n--; --n; ``` ### 比较运算符 大小比较: `> >= =` 相等比较:`== != === !===` ### 逻辑运算符 `&&` 逻辑与 书写方式:`表达式1 && 表达式2` 如果表达式1的值 判定结果为**真**,那么就将表达式2的返回值作为整个逻辑与表达式的值 如果表达式1的值 判定结果为**假**,那么就将表达式1的返回值作为整个逻辑与表达式的值 `||` 逻辑或 写法 `表达式1 || 表达式2` 如果表达式1的boolean判定结果为真,将返回表达式1的值作为整个表达式的返回值,不运行表达式2 如果表达式1的boolean判定结果为假,将返回表达式2的值作为整个表达式的返回值 `!` 逻辑非 ## 流程控制 ### 什么是流程控制 在一个程序执行过程中,各条代码的执行顺序对程序的结果是有直接影响的。很多时候我们要通过代码的执行顺序来实现我们的功能 比如我们的程序需求是,当条件满足的时候,实现一组语句,当条件不满足时,执行另外一组语句,或者说有一组语句会反复的执行,像这些,都是流程控制的范畴 简单理解:流程控制就是来控制我们代码按照什么结构顺序来执行 ### 顺序结构 顺序结构是程序中最简单、最基本的流程控制、它没有特定的语法结构,程序会按照代码的先手顺序,依次执行,程序中大多数的代码都是这样执行的 ### 分支结构 由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程)从而得到不同的结果 ```js if (表达式1) { //表达式1 有时候我们也称之为条件1 // 当表达式1的Boolean判断结果为真 那么执行当前代码块中的代码 并且忽略后面所有的代码块 // 代码块中可以写任意条数据的代码 } else if (表达式2) { // 如果表达式1的布尔判断结果为假 // 那我们继续判断表达式2的Boolean判断结果 // 如果表达式2的布尔判断结果为真,那么就执行这块代码块 并且忽略后面所有的代码块 } else if (表达式3) { // 如果表达式2的布尔判断结果为假 // 那我们继续判断表达式3的Boolean判断结果 // 如果表达式3的布尔判断结果为真,那么就执行这块代码块 并且忽略后面所有的代码块 } else { // 如果上面所有表达式的结果都为假 那么执行这个代码块 } ``` ### 循环结构 循环在日常开发中非常常见 循环的本质是 重复的运行一段代码 JS支持3种循环结构:for循环 while循环 do-while循环 ### 断点调试 断点调试是指自己在程序的某一行设置一个断点,调试时,程序运行到这行就会停止,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下 断点调试可以帮我们观察程序的运行过程 浏览器中按F12 —> sources —> 找到需要调试的文件 —> 在程序的某一行设置断点 Watch:监视 ,通过watch可以检测变量的值的变化 非常的常用 F11: 程序单步执行,让程序一行一行的执行,这个时候,观察wathc中变量的值的变化 代码调试的能力非常重要,只有学会了代码调试,才能学会自己解决bug的能力。初学者不要觉得调试代码麻烦就不去调试,只是点花点功夫肯定学的会,但是代码调试这个东西,自己不去练,永远学不会
发布时间 2020/07/13 10:29:46 最后回复 Ananda 2020/07/28 15:26:09 版块 社区活动
15812 95 0
发布时间 2020/06/05 11:45:07 最后回复 @Wu 2020/07/05 23:55:07 版块 社区活动
55706 487 2
他的回复:
华为云ID: SavageGrowth浮动什么叫浮动    浮动是指将元素脱离文档流向左或者向右布局,使用float属性来设置元素的浮动如何设置浮动修改float属性为 :left: 左浮动,元素在包含块中靠上靠左排列right : 右浮动   元素在包含块中靠上靠右排列none: 不浮动(默认值)  表示这个元素处于常规流中浮动的特点对元素设置浮动之后,这个盒子就会变成块盒(更改display属性的值为block)无论之前的元素是行级元素、行内级元素还是块级元素,浮动的元素都会被设置成块级元素(块盒)后面要学习的定义也是一样,一旦这个元素被设置了定位,那么这个定位元素就会被设置成块盒浮动元素的包含块和常规流一样,浮动元素的包含块为父元素的内容盒,浮动元素其在包含块中靠上靠左排列或者靠上靠右排列浮动的作用是什么创造浮动 一开始的目的是为了实现设置  文字环绕图片(后面会详细介绍)设置盒子横向排列(兼容性最好 ie5 ie6 ie7也支持浮动,css2中最常用的横线排列方式)清除浮动1、为什么要清除浮动    元素设置为浮动时引起的父元素内容塌陷,导致页面布局发生混乱清除浮动来解决高度坍塌清除浮动的本质就是清除浮动元素造成的影响  也是高度坍塌解决的方法1. 清除浮动 需要用到css属性 clear 属性none : 默认值,不清除浮动left:  清除左浮动,该元素必须出现在前面所有左浮动盒子的下方right: 清除右浮动,该元素必须出现在前面所有右浮动盒子的下方both: 清除左右的浮动,该元素必须出现在前面所有浮动盒子的下方企业级应用中清除浮动的最佳方法.clearfix::after{     /* ::after的意思是:在该元素中的添加最后一个子元素 ::after>子元素  */     content: ""; /* 伪元素选择器中必须写这个 规定的 */     display: block; /* 伪元素是行盒 我们要把他变成块盒*/     clear: both; /* 清除浮动 */     /* 让这个伪元素看得到前面所有浮动的元素,从而撑开整个父元素 */    }使用浮动实现 两列布局实现左中右布局左右两侧宽度固定  中间内容区宽度能自适应两列翼布局第一步:使用float属性让左中右三列浮动第二步:使用负margin让左右两列与中间列处于同一水平线上第三步:在中间列中增加一个div内容元素,设置margin值为左右两列的宽度最后 别忘了清除浮动,让父元素高度正常显示定位1. 定位属性 定位属性用于设置元素在页面中的位置属性值用position来定位position值可以设置为:static, relative, absolute, fixed其中默认值为static,表示标准流布局2.定位位置 定位元素位置可以指定上下左右四个属性控制元素的位置top 向上偏移距离bottom 向下偏移距离left 向左偏移距离right 向右偏移距离注意:偏移量的值可以为负值3.层级z-index设置元素层级,值越大,显示时越是覆盖在其元素的上边属性值为auto,代表层级与父元素相同属性只在position值为absolute时有效4.相对定位position:relative 开启定位标准流文档中的默认位置进行定位,不会让元素脱离标准流,不会影响其他元素的排布相对定位和位置属性一起使用特点:相对布局是指在原先静态布局位置进行布局,没有效果是因为没添加位置属性.5.绝对定位position:absolute 开启绝对定位除了static定位之外的第一个父元素进行定位,如果没有就相对于页面定位绝对定位会脱离标准流在使用多个绝对定位时候会出现遮盖时,可以使用z-index属性设置层级.在一个块级元素在设置为绝对定位的时候,父元素的宽度变窄,宽度不像块元素和父元素相同,宽度取决于内容宽度.绝对定位是针对于已经定位的父元素进行定位,如果父元素是positionstatic以外它会根据上下左右进行定位,如果是static以外它会以整个窗口作为参考点定位
发布时间 2020/06/05 11:45:07 最后回复 @Wu 2020/07/05 23:55:07 版块 社区活动
55706 487 2
他的回复:
华为云ID: SavageGrowth第二周学习笔记什么是CSSCSS 的全称是 Cascading Style Sheet,中文叫做层叠样式表css是一种样式表现语言,它是对网页结构语言(HTML)的补充主要用于对网页样式的定义,例如布局 颜色 文本等的设置CSS的作用css背后的思想就是:精准控制页面中的各个元素,然后将各种样式规则应用在元素上,从而改变元素在页面上的显示方式。CSS的引入1. 内联样式:style属性将CSS样式直接输入在HTML元素的style属性中如果只是想为单个元素指定一些样式,而不需要嵌套或外部样式表,就可以使用HTML元素的style属性来设置一个内联样式嘻嘻在实际开发中,不推荐使用style属性2.内部样式(也可以称为内联层叠样式表)在head标签中  使用style标签 在style标签中 书写css属性                   Document            div{             width: 100px;             height: 100px;             background-color: red;         }          3. 引入外部样式精准通过link标签 将外部的CSS样式表(也就是外部的css文件)引入 到 html文档中link标签 必须放在head元素中 这样才能有效果 rel:表示关系  stylesheet:样式表type属性是用来描述link引入的文件是什么类型  type属性默认值为"text/css" 所以可写可不写这样一来 HTML文档就知道 引入了一个外部的CSS样式表href引入的是css文件 可以是绝对路径 可以是相对路径 前端的开发标准是 HTML CSS JavaScript相分离 主要目的是有利于项目的维护link标签可以将样式与HTML元素分开,这提高了代码的可读性和重用性实现了 HTML 与 CSS的相分离4. 导入外部样式通过在元素中  使用@import导入一个外部的CSS文件      /* @import有两个导入index.css的方式 二选一 */       @import "./index.css";       @import url("./index.css");     实际开发中,不建议使用@import 导入CSS文件,因为@import的效率比link标签效率低   CSS的语法格式selector{     property:value;     property:value;     ... }selector叫做选择器,它决定了后面大括号内的样式对哪些元素生效,CSS 的选择器区分大小写,因此CSS选择器要谨慎使用大写property:value 叫做一条CSS演示每条样式都能改变selector选中元素的样式property成为样式名,value是对应的样式值CSS样式可以有很多条,它们包裹在大括号内部,每条样式之间通过分号分割CSS的样式对大小写不敏感,我们推荐统一使用小写具有相同样式的选择器,可以分成一组,之间用逗号隔开 案例:box1 box2 box3的文字都要设置成红色,可以像下面这样,一起选中 用逗号隔开box1box2box3.box1, .box2, .box3 {   color: red; }CSS的特性下面是简单简述一下css的特性:层叠和继承  层叠后面会详细讲解继承机制,这里先简单感受一下css中会出现一种非常常见的现象:声明冲突我们在一个元素上设置的css规则中有多个相同的CSS属性,值却不同,这个就是声明冲突举个例子: hello world div{     width: 100px;     height: 100px;     color: red;     color: orange; } /* 给div元素设置css规则中,发现声明了两个color属性,但是他们的值却不同 这个就是声明冲突 */ /* 声明冲突还有更常见的情况:后面学完css选择器会专门做个关于层叠机制 继承的笔记 */一个元素只能作用于一种CSS属性,而这个CSS属性值最终是什么, 这就需要用到层叠机制的规则层叠机制:用于解决声明冲突(当发生声明冲突的时候,浏览器会自动触发层叠机制)最终确定发生声明冲突的CSS属性值是什么而上面的例子 层叠机制是这么处理的:最后出现的声明胜出,其他的淘汰/* color: orange;是最后声明的,最终color: orange;作用于div元素 */ div{     width: 100px;     height: 100px;     color: orange; }继承继承是从一个元素 向后代元素传递属性值所采取的机制,也就是子元素会继承父元素的一些CSS属性用案例简单理解一下css的继承特性,后面会详细讲解继承机制    hello worlddiv{     color: red; } /* 这里我们选中父元素 给父元素设置了 color:red */页面的显示效果: 会发现 span元素中的文字颜色变成了红色span元素并没有设置文字颜色,就会从父元素继承css属性color:red 作用于自己身上,这个就是继承CSS中有些CSS属性是可以继承的 有些CSS属性是不能继承的比如跟文字内容相关的属性都被能继承:color font-size  font-weight font-family text-align  等等最基本的选择器通配符选择器 css通配符选择器是一种比较特殊的选择器 用”*“表示含义:这个选择器 可以选择匹配页面中所有的元素,包括body  html 元素用途:一般用于设置一些初始化的公共属性,如初始化浏览器的默认样式例如:*{   padding: 0;   margin: 0; }初始化公共属性的原因:例如在谷歌浏览器中会给body元素设置margin:8px; 这个就是公共属性,而8px会导致body里面的元素不会紧贴着浏览器页面的左上角,而会有8px的距离,所以要初始化这个公共样式。而且每个浏览器给body元素的margin值却不同,为了保证我们开发的页面在每个浏览器上的样式都是一样的,初始化或者重置浏览器的默认样式是必不可少的除了body元素,浏览器还会给别的元素设置样式,比如ul li 等元素,浏览器会给这些元素设置padding margin元素选择器使用某个HTML元素名作为选择器,是一种最简单的选择器hello wolrddiv{   color:red; }id选择器id是我们在HTML标签上设置的一个id属性值id属性的特点:在HTML文档中, id的属性值是唯一的含义:选择页面中含有id属性的元素格式:span id="app">hello   #app {     color: red;   } 类选择器类选择器中的类指的就是class属性有相同class属性值的都会被选中class与id相比,不具有唯一性class属性值通常以字母开头,中间不能有空格类选择器可以与元素选择器 id选择器组合使用  .demo {     color: red;   } 属性选择器通过元素的属性来选择元素 然后设置样式格式为 element[attribute]{prototype:value;......}element:表示元素;[]表示元素的属性属性种类[id]{  /* 选择属性为id的元素 */      } [id="app"]{  /* 选择属性为id 并且id的属性值为 app 的元素 */      } div[id~="app"]{  /* 选择属性为id的div元素 并且id的值包含app  */      } /* 下面这个选中的元素更准确 */ div[id="app"]{  /* 选择属性为id的div元素 并且id的值是app   */      }hello  /* 选择属性为clas并且属性名前缀为hello的div元素 */   div[class|="hello"] {     color: red;   } 派生选择器后代选择器后代选择器可以选择作为某元素后代的元素格式是:父元素 + 空格 +  子元素  111       222     /* 选择div的子元素中的div元素的子元素 span元素*/   div div span{     color:red; } 子元素选择器叫做直接子元素选择器会更容易理解选择一个元素的直接子元素也就是 只能选择父元素的直接子元素  就是只能选择父元素的儿子   不选择儿子的的后代元素案例:  hello   world       xixi     div > span {     color: red;   } 相邻兄弟选择器格式为: 父元素+子元素{prototye:value;......}用来选择紧贴在一个元素之后的兄弟元素。兄弟元素一定是同级元素案例:123/* div的下面的一个兄弟元素节点  而且这个兄弟元素节点得是p */ div + p{     color: red; /* 1的字体颜色变成红色  */ } /* div的下面的一个兄弟元素节点  而且这个兄弟元素的class类名得是 demo */ div + .demo{     color: red; /* 1的字体颜色变成红色  */ } 伪类选择器什么是伪类?伪类是指那些处在一定状态的元素伪类以冒号开头什么是伪类选择器?通过伪类来选中相应元素进而添加样式的选择器伪类名可以单独使用,也可以和其它选择器一起使用一般伪类选择器通过和元素名称一起使用,用于选中某艺元素的伪类元素选择器和冒号之间不能有空格伪类选择器最喜欢和超链接(a元素)一起使用动态伪类E:link设置超链接a元素在未被访问前的样式 E:visited:设置超链接a在其链接地址已被访问过的样式E:hover: 设置元素鼠标移动到元素悬停时的样式E:active:设置元素被长摁时候的样式E:focuse:设置元素在成为输入焦点(该元素的onfocus事件发生)时的样式E:focuse的input元素案例:伪元素选择器伪元素能够在文档中 插入假想的元素 从而得到某种效果伪元素 存在元素的里面 可以选中修改样式  元素结构是存在的但是没有HTML结构伪元素天生就存在 只不过是被我们选中修改之后才会看到伪元素是行级元素::before/*相当于在当前元素的最前面添加了一个新的元素,但是这个元素没有HTML结构 */ ::after/*相当于在当前元素的最后面添加了一个新的元素,但是这个元素没有HTML结构 */div::before{     content:"我在元素的前面";/*伪元素的内容 这个属性必填 */ }
发布时间 2020/06/05 11:45:07 最后回复 @Wu 2020/07/05 23:55:07 版块 社区活动
55706 487 2
他的回复:
华为云ID:SavageGrowth # WEB简史 ## Web的诞生 **Internet** 中文正式译名为因特网,又叫做国际互联网,是由所有使用公共语言相互通信的计算机连接而组成的全球网络 **web的历史** **起源**:20世纪60年代磨,正好处于冷战时期,当时美国军方为了自己的计算机网络在受到攻击时,即使部分网络被摧毁,其余部分仍能够保持通信练习,便由美国国防部的高级研究计划局(ARPA)建设了一个军用网,叫做“阿帕网”。阿帕网于1969年正式启动柜,当时仅仅连接了4台计算机,供科学家们进行计算机联网实验用。这个就是因特网的前身 **web的发展:**Internet的发展引起了商家的极大兴趣。1992年美国IBM、MCI、MERIF三家公司联合组建了一个高级网络服务公司(ANS),建立了一个新的网络,叫做ANSnet,从而使Internet开始走向商业化 ## Web浏览器 浏览器是一个显示网站服务器或者档案系统内HTML文件,并让用户与这些文件互动的软件 浏览器的内核 浏览器内核负责对网页语法进行解释,浏览器内核也就是浏览器所采用的渲染引擎 渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息 #### 主流浏览器的评判标准 1. 在市场上有一定的市场份额 2. 有自己独立开发的浏览器内核 #### 主流浏览器及其内核 和 对应的浏览器厂商 | **主流浏览器** | **浏览器厂商** | **浏览器内核** | | :------------: | :------------: | :--------------------------------: | | IE浏览器 | 微软公司 | Trident内核 | | Chrome浏览器 | Google公司 | 先采用Webkit内核 后来换成Blink内核 | | Safari浏览器 | 苹果公司 | Webkit内核 | | Opera浏览器 | Opera公司 | Presto内核 | | Firefox浏览器 | Mozilla公司 | Gecko内核 | webkit内核是谷歌公司和苹果公司共同研发的,所以safari浏览器的内核是webkit 而blink内核是谷歌在webkit的基础上升级的内核,所以chrome使用的是blink内核 ## Web服务器 服务器(我们也称之为主机)是提供计算机服务器的设备,它也是一台计算机。在网络环境下,根据服务器提供的服务类型不同,服务器又分为文件服务器、数据库服务器、应用程序服务器、Web服务器 Web服务器一般指网站服务器,是指驻留于因特网某种类型计算机的程序,只要是提供网上信息浏览服务。Web服务器可以解析HTTP协议,当Web服务器接收到http请求时,会返回一个HTPP响应,这样客户端(浏览器)就可以从服务器上获取网页内容,包括HTML CSS JS 音频 视频 等资源 ## Web开发 web开发主要分为前端开发和后端开发两个部分 前端:侧重于页面的展示 和 与用户的交互 后端:侧重于数据的处理与服务的访问 #### 前端开发三大件 HTML:构成网页的结构和内容 CSS: 决定网页的样式 JavaScript:用于定义网页上的交互,控制网页的行为 # HTML ## HTML的概念 HTML叫做超文本标记语言(HyperText Markup Language),是用来构建网页的一种标记语言 超文本:不仅可以显示文字,还可以显示 图片 链接 音频 视频 等各种类型 标记:是用一些标记符号(也就是一些符号)来定义一些语法规则的,对超文本进行标记的 语言: 是计算机语言 计算机语言是与计算机沟通的桥梁,更具体的说是与浏览器沟通的语言 ## HTML的发展历史 1993年由互联网工程工作小组(IETF )发布工作草案 1995年发布HTML2.0版本 1997年1月14日由W3C发布HTML3.2版本 1997年12月18日由W3C发布HTM L4.◦版本 1999年由W3C发布HTML4.01版本 2000年由W3C发布XHTML1.0版本,它是一种更严格的HTML代码 2014年W3C发布的最新版本HTML5,增加了新的特性,给用户带来了更丰富的交互体验 ### XHTML出现的原因 一开始的HTML规范不是很严格,怎么写都可以,就造成了代码的混乱,而且给浏览器厂商造成了很大的麻烦 代码写的很随意,解析起来就很麻烦,所以后来W3C 制定了XHTML的规范,目的就是严格规范HTML的书写标准 虽然后来发布的HTML5 这个标准要求的就没有XHTML那么严格,但是平时写HTML需要按照最严格的标准去书写 ### XHTML与HTML的不同点 XHTML是可扩展超文本标记语言,是一种更严格、更纯净的HTML语言 X的意思就是可扩展的意思 1. XHTML元素必须被正确的嵌套 2. XHTML元素必须被关闭 3. 标签名必须用小写字母 4. XHTM文档必须拥有根元素:html元素 ### HTML的语义化标签 HTML5中新增了很多语义化标签,不同的HTML标签代表了不同的网页内容 **语义化的特点** - 语义化HTML会使HTML结构变的清晰,有利于代码维护 - 有利于搜索引擎抓取 - 语义化使代码具有可读性 - 语义化会使HTML代码变得更简洁,提高页面加载速度 - 语义化有助于屏幕阅读器等设备的识别 ## HTML文档的基本结构 ### **声明 HTML 文档的文档类型** 在HTML文档的顶部,你需要告诉浏览器你的网页用的 HTML 是哪个版本 HTML 是一个不停进化的语言,大部分浏览器都支持 HTML 的最新标准,也就是 支持HTML5 但是一些陈旧的网页可能使用的是 HTML 的旧版本 所以你需要通过`` 来告诉浏览器你使用的HTML文档是哪个版本的 DOCTYPE 是 document type的简写 文档类型的意思 ```html ``` **一些注意点** 1. 声明 不是 HTML 标签 它只是一个声明 2. 声明必须是 HTML 文档的第一行,位于 标签之前 3. 声明对大小写不敏感,所以你写成小写的 也没有关系 ### 文档的根标签:html标签 接下来,所有的 HTML 代码都必须位于html标签中,html就相当于一个根元素 其中``位于``的后面,``位于网页的结尾。 ### 文档的标题和正文的标签 head body html的结构主要分为两大部分:`head、body` 关于网页的描述都应该放入head标签,网页的内容都应该放入body标签。 比如`link标签、meta标签、title标签`和`style标签`都应该放入head标签。 这是网页结构的一个例子: ```htmlDocument``` ## 标记标签 HTML标签和元素的概念 HTML叫做超文本标记语言,是用来构建网页的一种标记语言 为超文本进行标记的,超文本有 图片 链接 音频 视频 等各种类型 这里就是给华为手机发布会这个文本使用div元素进行标记 ```html华为手机发布会``` **标记标签**也就是我们常说的HTML标签 **元素**:包括HTML标签和标签里面的内容 元素里面的内容 叫做元素内容 ## 标题元素 为了使 网页更具有语义化,我们经常会在页面中用到标题标签 HTML提供了6个等级的网页标题 即`~`的重要性最高 而``的重要性最低 一个HTML文档之中,一般只有一个``标签 **请确保将标签元素只用于网站的标题** 不要仅仅是为了产生粗体或大号的文本而使用标题 搜索引擎会使用网页中的标题,也就是h1元素的内容,为您的网页的结构和内容编制索引 一般用户搜索网页内容的时候,搜索引擎会把用户搜索的内容 与网站的标题进行匹配,从而展示你的网站,所以用标题来呈现文档结构是很重要的 我们应该将 h1 用作主标题(最重要的),其后是 h2(次重要的),再其次是 h3,以此类推 h元素有助于网站的SEO优化,可以促进关键词排名 但是乱用h元素不仅不会给网站带来好的权重,同时有可能会被搜索引擎认为作弊,最后导致k站 ## 段落元素 ``是paragraph的缩写,用于定义一个段落,浏览器会自动在其前后创建一些空白 ``中的文字行数取决于浏览器窗口的高度 ``中的连续空格最终都将解析成一个空格,如果想在段落总添加空格,需要用到 ; ## 结构标签 ### div元素 div元素,也叫division(层)元素,用来划分区域,包围大块内容,但是不具有语义化 div适合作为最通用的页面容器,所以div元素也是 HTML 中出现频率最高的元素。 div是块级元素 ### span元素 span元素是内联标签(也可以说是行内元素) 用在一行文本中,用来修饰文字 ## 链接标签 **链接** 链接是HTML页面非常重要的一环,如果没有链接,每一个HTML页面将会孤独的存在,与其他页面将不会有联系 ### **链接标签a元素** ``标签是anchor的缩写,用于定义网页链接 **链接属性** src属性表示链接的地址,相当于是送货地址,可以是相对路径或者绝对路径 相对路径:以 ./ ../开头的路径 绝对路径: `C:User\...` 从磁盘开始的路径 或者是远程的服务器(图片,网页等)地址 target属性表示点击链接后的打开方式,默认是是 '_self',表示在当前窗口打开新链接,除此之外,还可以设置成 '_blank' 表示在新的窗口中打开 ```html 文本或图片 ``` **a标签关于样式上的特点** a标签点击过一次之后,就会变颜色,这种好处就是看新闻的时候,点过的新闻链接颜色是和没点过的链接颜色是一样的,这样就知道哪些新闻没看过 **实现所有的a元素的跳转方式为**:在新窗口中打开 但是只有京东的链接在当前的窗口中打开 需要借助`base标签` ```htmlDocument华为 百度 淘宝 京东``` **固定链接** 有时你想为网站添加一个锚点,但后端还没有给你要链接的地址,以使用固定链接# 作为占位符,等后面确定了链接地址,替换就可以了 ```html ``` **空链接** ```html 空链接1 空链接2 ``` 因为空链接的地址不是真正的链接地址,所以点击之后 a元素内容的颜色无变化 空链接的主要作用:通常作为按钮标签来使用,但是现在h5的button元素 已经可以代替空链接了 **a元素可以利用锚点实现网页内部跳转** 锚点同样也可以用来在网页内不同区域的跳转。 设置锚点的href属性值为井号#加上想跳转区域对应的id属性值,这样就可以创建一个内部跳转。 id是用来描述网页元素的一个属性,它的值在整个页面中唯一。 下面是用来创建内部锚点的例子: ```html Contacts p{1}*1000Contacts``` 当用户点击了Contacts链接,页面就会滑动到网页的**Contacts**区域 **a元素可以下载文件** 如果href里面的地址是一个文件或者压缩包,点击这个a元素,会下载这个文件 ### 链接元素base元素 base元素:用于设置页面中所有链接的基准url 和 target属性 base标签一般插入到head标签中使用 关于设置target属性上面已经有例子了 设置所有链接基准的url路径 用下面的案例来理解: 比如页面1地址: `http://www.wangye.com/page1` 页面2地址: `http://www.wangye.com/one/page2` 页面3地址: `http://www.wangye.com/two/page3` 页面4地址: `http://www.wangye.com/three/page4` 我们需要用a链接一个个引入过去会很麻烦 每次都要重复写:`http://www.wangye.com` ```html 页面1 页面2 页面3 页面4 ``` 但是通过base来设置 就很方便,直接设置基准url路径,能实现和上面一样的效果,以后写a标签 它的基准url就是`http://www.wangye.com` ```htmlDocument页面1 页面2 页面3 页面4``` ## 图片元素 img元素用于定义一张图片,属于单标签结构 它有多个属性 **scr:**表示图片的地址,是img元素的必须属性 **alt:** 表示当图片无法正常加载显示时,代替的文本,一般这个文本是描述当前图片的文本 ​ 图片的地址可以使用相对路径 也可以 使用绝对路径 ​ alt属性不要省略,目的是为了更好的兼容无图浏览器,图片会提示alt属性内的文字 **title:**设置鼠标放到图片上是,显示的文字 **width height:**在img标签是,还可以通过增加heigth属性和width属性来设置图片的高度和宽度 宽度和高度只要设置一个属性就可以了 还有一个属性会等比例缩放 这样图片就不会失真了 **img元素的注意点** 1. img标签的属性之间部分先后顺序,标签名与属性、属性与属性之间均以空格分开 2. 属性采取键值对的格式 即key = 'value'的格式 属性='属性值' **重点要掌握的** - img标签哪个属性是必须要写的 - img标签中 alt属性和 title属性的区别是什么 ## 列表元素 ### **无序列表** HTML 有一个特定的元素用于创建无序列表unordered lists(缩写 ul)。 无序列表以``开始,中间包含一个或多个``元素,最后以``结尾 ```html面包牛奶鸡蛋``` 可以在ul标签上使用type属性定义图标符号的样式 属性值为: disc 显示点 这个也是无序列表的默认图标符号 属性值为:square 显示方块 属性值为:circle 显示圆 属性值为:none 没有图标符号 ### **有序列表** HTML 有一个特定的元素用于创建有序列表ordered lists(缩写 ol) 有序列表以``开始,中间包含一个或多个``元素,最后以``结尾。 ```html面包牛奶鸡蛋``` 有序列表的前缀通常为数字或字母,默认是数字 ### 自定义列表 使用``标签定义自定义列表,内部可以有多个列表项,每个列表项用``定义标题,用``定义列表项 自定义列表比有序无序列表多了一个功能,能给列表定义标题 ```html江苏南京市南通市福建厦门福州```