大家好,本文将围绕html和javascript并存的吗展开说明,html和javascript怎么连接是一个很多人都想弄明白的事情,想搞清楚html和javascript先学哪个需要先了解以下几个事情。

HTML是什么?
超文本标记语言,用来设计网页 的(静态网页:.html,.htm),需要借助于浏览器进行展示,浏览器是网页的运行环境,建议安装chrome浏览器。
标签理解
1.HTML标签由尖括号包围关键词Python解释器的安装步骤。通常是成对出现的,称为双标签。例如<html>(开始标签)和</html>(结束标签)。有些特殊标签为单个标签,称为单标签。例如
2.标签关系有包含关系和并列关系
3.标签的含义(语义):标签是用来干嘛的。(在适合的地方给一个合理的标签可以使页面结构更清晰)
4.每个网页都会有一个基本的结构标签(也称为骨架标签),HTML页面也称为HTML文档
5、不区分大小写
常用标签
注释
作用:用来对页面 中的代码进行说明,不会呈现效果
1.标题标签<h1>-<h6>
(1) 语义:(head的缩写)作为标题使用,并依据重要性递减
(2) 特点:a.加了标题标签文字会变粗,字号依次变大 b.一个标题独占一行
2.段落标签<p>
(1) 语义:(paragraph的缩写),可以把HTML文档分割为若干段落
(2) 特点:a.一个段落根据浏览器窗口的大的自动换行 b.段落之间有大的空隙
3.换行标签
(1) 语义:强制换行,(break的缩写)
(2) 特点:a. 是个单标签 b. 只是简单重新开始一行与段落不同
4.文本格式标签
简介:为文字设置粗体,斜体或下划线等效果,语义:突出重要性
(1) 加粗:<strong></strong>或<b></b> 推荐使用<strong>标签,语义更强烈
(2) 倾斜:<em></em>或<i></i> 推荐使用<em>标签,语义更强烈(emphasize)
(3) 删除线:<del></del>或<s></s> 推荐使用<del>标签,语义更强烈(delete)
(4) 下划线:<ins></ins>或<u></u> 推荐使用<ins>标签,语义更强烈(insert)
5.<div>和<span>标签
简介:(没有语义,是一个盒子,用来装内容 division span)
特点:a.<div>标签用来布局,一行只能放一个<div>,是个大盒子 b.<span>标签用来布局,一行可以有多个<span>,是个小盒子
6、图像标签
img:标签名 src/alt/width/height:属性
<img src="图片路径" alt="替换文本" width="x" height="y" title="标题"/>
src:要展示的图片的路径 【相对路径、绝对路径】
alt:图片替换文本、当图片路径无效时生效
width:图片宽度
height:图片高度
title:提示信息(标题)
标签分类(重点)
-
块级元素:
-
独占一行,
-
可以设置宽高,如果不设置,默认占据父元素宽度的100%,
-
块可以嵌套 块 和 行
-
标签:div,h1-h6 ul ol dl li p table form
-
-
行级元素:
-
在行内显示,与其他行内元素并排显示,一行排不下了才折行显示,
-
内容撑开宽高,不可以设置宽高(img、input除外),
-
行标签通常嵌套行标签
-
标签:span a em strong input img
-
特殊标签:img 和 input ,行内块状标签,兼具两种类型标签的特点
-
-
可以相互转换:样式(display)
注释和特殊符号
| 特殊符号 | 字符实体 | 示例 |
|---|---|---|
| 空格 | | 百度 | 新浪 |
| 大于号(>) | > | 如果时间>晚上6点,就坐车回家 |
| 小于号(<) | < | 如果时间<早上7点,就走路去上学 |
| 引号 | " | W3C规范中,HTML的属性值必须用成对的"引起来 |
| 版权符号 | © | © 2003-2013阿里巴巴 |
表格
表格作用
1、常用来展示数据,规范排列,后台系统使用较多
2、不再使用表格进行布局,对搜索引擎不友好
表格常用属性(了解)
| 属性名 | 说明 | 示例 |
|---|---|---|
| align | 水平对齐 | align="left|center|right" 左中右;用在:table ,tr,td中 |
| border | 边框粗细 | border=1;用在:table中 |
| cellspacing | 单元格之间的间隙 | 默认是1,用在:table中 |
| cellpadding | 单元格中内容和边框之间的间距 | 默认是1,用在:table中 |
| width,height | 宽和高 | 用在:table、tr、td中;同一行高度一致,同一列宽度一致;通常给行设置高度,列设置宽度, |
单元格合并
-
跨行合并:rowspan=“合并的行数”
-
跨列合并: colspan="合并的列数"
样式
使用css,可以让原始的页面即黑色文字页面变得丰富起来,漂亮起来,实现我们想要的排版布局的效果
样式:对页面进行美化、布局、定位、排版;类似于化妆、美颜
css是什么
层叠样式表(Cascading Style Sheet)
html是骨架。css是衣服,起到装饰的作用,花花绿绿的,css是用来修饰网页的,让网页变得更美丽,更好看。
html:页面中的内容
css:表现
CSS的优势
-
内容与表现分离
-
网页的表现统一,容易修改
-
丰富的样式,使页面布局更加灵活
-
减少网页的代码量,增加网页的浏览速度,节省网络带宽
-
运用独立于页面的CSS,有利于网页被搜索引擎收录
-
选择器的类型
- 1、标签选择器,通过标签来选择页面元素。直接写标签名,会把页面中所有的相同标签的都选中
h1{
属性:值;
}
2、id选择器
通过自定义的id属性来选择元素,id唯一,不可重复id=”id名”
#id名{
属性:值;
}
3、类选择器
通过自定义的类属性,通过类名来选择元素,类可以重复,可以多个,class=”类名”
.类名{
属性:值;
}
文本样式
color颜色取值的格式
1、直接写颜色 也要复合写法 yellowgreen 黄绿色
2、16进制
3、RGB RGBA 红绿蓝 三原色
颜色不需要记,ui会给你的
文字对齐方式
-
text-align: center 居中
-
right 右对齐
-
left 左对齐
对齐参照点不同 ,对齐的方式也不同,以父级元素为标准,不设宽度,默认为浏览器宽度。暂时有这个概念,盒子模型学完就推翻了
如果想要指定对齐,需要设置宽和高
宽:weight 高:hight
-
text-indent 首行缩进
单位可以是px,像素,也可以是em,即缩几个字体,根据全部字体的大小来变化,首行缩进用em比较合适
开启控制台进行调整
-
line-height: 设置行高,设置文字的垂直居中 line-height,和父元素的高度保持一致,即垂直居中
-
height = line-height 可以实现文本垂直居中
-
使用场景:
-
单行文本:垂直居中
-
多行文本:调行间距
-
-
设置文本装饰
text-decoration: line-through 删除线
underline 下划线
overline 上划线
函数是什么?
函数:来源数学中的名词,类似于特定的公式,细节已经封装到函数内部,直接使用函数名来得到想要的效果。
函数分类:
1、声明式函数
function 函数名(参数列表){
函数体:封装的代码段;
return 结果;
}
无参数、无返回值的函数
示例:在页面上打印欢迎字样
//定义
function print1() {
document.write('<h1>hello world</h1>');
}
//调用
print1(); //使用
无参数、有返回值的函数
返回1-100之间的随机数
/**
* 生成1-100的随机数
* */
function getRandom(){
// 随机数
var result=Math.ceil(Math.random()*100);
// 返回结果
return result;
// 不会执行
// console.log('后续的代码');
}
var ary=new Array(5);
for(var i=0;i<ary.length;i++){
// 调用函数 :声明变量接受结果
ary[i]=getRandom();
}
console.log(ary);
有参数、无返回值的函数
示例1:修改后的显示菜单
// 显示菜单
// menu:代表一个数组菜单
function showMenu(menu) {
document.write('<h1>欢迎来到AAA</h1>');
// 判断menu是否是数组类型的实例
if (menu instanceof Array) {
// 遍历
for (i of menu) {
document.write(`<h2>${i}</h2>`);
}
} else {
alert('只接受数组类型的数据');
}
}
// 调用
var ary=['1、登录','2、注册','3、用户管理'];
showMenu(ary);
ary=['1、查询账单','2、输入密码','3、退出系统'];
showMenu(ary);
有参数、有返回值的函数
作用域和作用域链(掌握)
作用域
作用域:作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。
2、let
-
全局作用域:在代码中任何地方都能访问到的对象拥有全局作用域
-
在 Web 浏览器中,全局作用域被认为是
window对象,因此所有全局变量和函数都是作为window对象的属性和方法创建的-
最外层函数和在最外层函数外面定义的变量拥有全局作用域
-
所有末定义(没有使用var)直接赋值的变量自动声明为拥有全局作用域,会挂载到window对象中
-
-
-
函数(局部 )作用域:和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,通常指的是函数内部。
-
块级作用域: ES6中提供的,使用{ }限定块级作用域, 块级作用域可通过新增命令let和const声明,所声明的变量在指定块的作用域外无法被访问
-
在一个函数内部
-
在一个代码块(由一对花括号包裹)内部
-
块级作用域并不影响var声明的变量
-
面试问题:
-
-
var、let 和 const 的区别:
1、var
-
变量提升:只有声明本身被提升,而赋值操作或其他运行逻辑会留在原地。
-
作用域:有全局作用域和函数作用域,函数作用域外的无法访问到包裹在函数内部的任何内容。
-
块级作用域:只要是两个花括号包含的区域,就形成块(即使没有if、for等语句)。块外部无法访问到内部的内容。
-
暂时性死区:let声明一个变量,就会与该块进行锁定。在块的内部,如果let初始化前的代码如果使用了该变量,不会去搜索上一级块内的变量,而是出现报错。只有let声明的变量初始化之后,才能访问。
-
不能重复声明:同一作用域内,同一标识符不能重复声明。
-
重复声明:同一作用域内可以重复声明,但是第二个声明会被忽略,只是将第二次的赋值进行覆盖。(需要避免)
认识BOM
js=ECMAScript(ECMA标准:核心语法) + BOM(浏览器对象模型)+DOM(文档对象模型:w3c)
BOM: 浏览器对象模型,Browser Object Model ,提供了一系列的API(Applicaion Programing Interface应用程序编程接口)专门用来操作浏览器窗口。
window中的常用方法(函数)
-
alert(数据) :弹框,消息框
-
prompt(提示信息,默认值):弹框,输入信息
-
confirm('确认提示'): 确认弹框,返回true/false 的结果
-
open():打开新窗口 mdn open
-
close():关闭窗口
-
setTimeout(函数,延时:毫秒):延时执行函数 只执行一次,返回结果作为句柄用来 控制该延时器
-
clearTimeout(返回结果) :停止延时函数的执行
-
setInterval(函数,频率:毫秒) :定时执行,每隔一定时间执行函数 ;用法雷同于setTimeout
-
clearInterval(返回结果):停止定时函数的执行
window中的常用属性
-
window.location:地址栏;该接口表示其链接到的对象的位置
-
window.history:历史记录;该对象提供了对浏览器的会话历史的访问
-
window.navigator:导航;该接口表示用户代理的状态和标识
-
window.screen:屏幕;该接口表示一个屏幕窗口,往往指的是当前正在被渲染的 window 对象,可以使用
window.screen获取它 -
window.document:文档对象
-
window.console:控制台对象
常用属性和方法
document常用属性:
| 属性 | 说明 |
|---|---|
| document.doctype | 返回与文档相关的文档类型声明 (DTD) |
| document.body | 返回文档的body元素 |
| document.documentElement | 返回文档的根节点:HTML元素 |
| document.title | 返回当前文档的标题 |
| document.forms | 返回当前文档的表单集合。 |
写入和获取元素的各种方法
| 方法 | 说明 |
|---|---|
| document.write() | 在文档中写入内容;document.open(),write(),close() ;关闭后再写入会覆盖文档的内容 |
| getElementById(元素id) | 根据id获取到对应的标签对象(单个)(元素:element ,节点对象node);可以获取到动态标签 |
| getElementsByTagName(标签名) | 根据标签名获取到一组同类型的元素(伪数组);返回HTMLCollection;获取动态节点集合 |
| getElementsByClassName(类选择器名) | 根据类名获取到一组同类的元素(伪数组);返回HTMLCollection;获取动态节点集合 |
| getElementsByName(名字) | 根据名字属性获取到一组同名元素(伪数组);返回HTMLCollection;获取动态节点集合 |
| querySelector(css选择器) | 通过css选择器获取到第一个匹配的元素; |
| querySelectorAll(css选择器) | 通过css选择器获取到所有匹配的元素(伪数组);返回NodeList;获取静态节点集合; |
获取|修改 内容、 属性、样式
| 属性 | 说明 |
|---|---|
| 操作对象.innerHTML | 改变 HTML 内容 |
| 操作对象.innerText | 改变 HTML 内容为纯文本 |
| 操作对象.textContent | 改变 HTML 内容为纯文本 |
| 操作对象.attribute | 获取|修改 HTML 属性 |
| 操作对象.setAttribute(属性名,属性值) | 修改属性的值 |
| 操作对象.getAttribute("属性名") | 获取属性的值 |
| 对象.style.property | 改变操作样式的属性 |
| 对象.className | 修改元素的类选择器 |
| 对象.classList.add(类选择器) | 在类列表中添加类选择器 |
| 对象.classList.replace(原始类选择器,新类选择器) | 替换 |
| 对象.classList.remove(类选择器) | 移除 |
| 对象.classList.contains(类选择器) | 判断是否包含类选择器 true/false |
| 对象.classList.item(索引) | 根据索引获取列表中的某个选择器的名字 |
| 对象.classList.forEach() | 遍历 |
Window.getComputedStyle() | 返回一个对象,该对象在应用活动样式表并解析这些值可能包含的任何基本计算后报告元素的所有 CSS 属性的值;在许多在线的演示代码中,getComputedStyle是通过 document.defaultView 对象来调用的。大部分情况下,这是不需要的,因为可以直接通过window对象调用 |
DOM节点属性
节点属性
下述属性用来获取节点对象
| 属性名称 | 描述 |
|---|---|
| parentNode | 返回节点的父节点 |
| parentElement | 返回节点的父元素 |
| childNodes | 返回所有节点,包含元素节点和文本节点,换行等 |
| children | 返回子节点集合,只返回元素节点【标签】 |
| firstChild | 返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点 |
| lastChild | 返回节点的最后一个子节点 |
| firstElementChild | 返回节点的第一个元素子节点 |
| lastElementChild | 返回节点的最后一个元素子节点 |
| nextSibling | 下一个节点 |
| previousSibling | 上一个节点 |
| getAttributeNode | 获取属性节点 |
| previousElementSibling | 上一个元素节点 |
| nextElementSibling | 下一个元素节点 |
节点操作
常用方法:
| 名称 | 描述 |
|---|---|
| document.createElement(“元素名”) | 创建元素节点 |
| document.createTextNode(“文本”) | 创建文本节点 |
| A.appendChild( B) | 把B节点追加至A节点的末尾 |
| parent.insertBefore( A,B ) | 把A节点插入到B节点之前;A:要插入的新的节点 B:原来已经存在的一个元素 |
| cloneNode(deep) | 复制某个指定的节点 deep:true 深层复制,包括其中的子节点 deep:false 浅层复制,只是当前节点对象 |
| 名称 | 描述 |
|---|---|
| 父节点.removeChild( 子节点) | 删除指定的节点 |
| 父节点.replaceChild( newNode, oldNode) | 用其他的节点替换指定的节点 |
事件简介
JavaScript 是一个事件驱动(Event-driven) 的语言,当浏览器载入网页开始读取后,虽然马上会读取JavaScript 事件相关的代码,但是必须要等到「事件」被触发(如使用者点击、按下键盘等)后,才会再进行对应代码段的执行。
事件的本质是程序各个组成部分之间的一种通信方式,也是异步编程的一种实现。
事件:特定的时间节点发生的一些动作(行为),一旦动作发生或会触发一些操作。
常见事件:点击、双击、移动、滚动、改变事件
理解:
事件:就是用户或浏览器自身执行的某种操作,如click、load、mouseover等,都是事件的名字,而响应某个事件的函数就被称为事件处理程序
DOM事件流
DOM是树形结构,如果同时给父子节点都绑定事件时,当触发子节点的时候,这两个事件的发生顺序如何决定?这就涉及到事件流的概念,它描述的是页面中接受事件的顺序
事件流(Event Flow)指的就是「网页元素接收事件的顺序」。当一个事件发生后,会在子元素和父元素之间传播(propagation)。这种传播分成三个阶段:
-
捕获阶段:事件从window对象自上而下向目标节点传播的阶段;
-
目标阶段:真正的目标节点正在处理事件的阶段;
-
冒泡阶段:事件从目标节点自下而上向window对象传播的阶段。
事件模型
1、DOM0级事件模型
又称为原始事件模型,事件绑定监听函数比较简单, 有两种方式:
-
HTML代码中直接绑定:
<input type="button" onclick="fun()"> -
通过JS代码指定属性值:
var btn = document.getElementById('.btn');btn.onclick = fun;//只能绑定1次事件移除监听函数:
btn.onclick = null;
这种方式所有浏览器都兼容,但是逻辑与显示并没有分离
2、DOM2级事件模型
属于W3C标准模型,现代浏览器(除IE6-8之外的浏览器)都支持该模型。在该事件模型中,一次事件共有三个过程:
-
事件捕获阶段(capturing phase)。事件从document一直向下传播到目标元素, 依次检查经过的节点是否绑定了事件监听函数,如果有则执行。
-
事件处理阶段(target phase)。事件到达目标元素, 触发目标元素的监听函数。
-
事件冒泡阶段(bubbling phase)。事件从目标元素冒泡到document, 依次检查经过的节点是否绑定了事件监听函数,如果有则执行。
DOM2事件特点
1、同一个元素绑定相同的事件,后面的不会覆盖前面的。因为DOM2级事件绑定不是给元素添加属性是直接添加的事件。等同于给一个元素绑定了多个事件。 2、在DOM2级事件处理中通过addEventListener()添加的匿名函数无法移除,只能清除命名函数;
小结:DOM0和DOM2区别
区别
-
dom0级绑定多个相同的事件,后者会覆盖前者,dom2级不会
-
Dom0只适合普通事件,Dom2级还有指定的事件类型如DOMContentLoaded(当html文档结构加载完成之后执行)这个事件就是jquery中的$(document).ready()
事件对象Event
问题:
鼠标移动时获取鼠标的位置?怎么获取?使用:Event:
当一个事件被触发时,会创建一个事件对象(Event Object), 这个对象里面包含了与该事件相关的属性或者方法。该对象会作为第一个参数传递给监听函数。
Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
事件通常与函数结合使用,函数不会在事件发生前被执行!
事件代理(事件委托)
为什么要事件委托?
在JavaScript中,添加到页面上的事件处理程序数量将直接关系到页面的整体运行性能,因为需要不断的操作dom,那么引起浏览器重绘和回流的可能也就越多,页面交互的事件也就变的越长,这也就是为什么要减少dom操作的原因。每一个事件处理函数,都是一个对象,那么多一个事件处理函数,内存中就会被多占用一部分空间。如果要用事件委托,就会将所有的操作放到js程序里面,只对它的父级(如果只有一个父级)这一个对象进行操作,与dom的操作就只需要交互一次,这样就能大大的减少与dom的交互次数,提高性能;
本文围绕HTML和JavaScript展开,介绍了HTML的标签、表格等知识,如标题、段落标签等;阐述了CSS的概念、优势及文本样式设置;还讲解了JavaScript的函数、作用域、BOM、DOM操作、事件等内容,包括函数分类、事件模型等信息技术相关要点。
2192

被折叠的 条评论
为什么被折叠?



