前端基础总结

HTML初识

△HTML:

超文本标记语言,是一种用于创建网页的标记语言,不是编程语言,没有逻辑
本质上是浏览器可识别的规则
我们按照规则写网页,浏览器根据规则渲染我们的网页。对于不同的浏览器,对同一个标签可能会有不同的解释。(兼容性问题)
网页文件的扩展名:.html或.htm(没有区别)

网页文件的扩展名:.html或.htm(没有区别)

我们按照规则写网页,浏览器根据规则渲染我们的网页。对于不同的浏览器,对同一个标签可能会有不同的解释。(兼容性问题)

网页文件的扩展名:.html或.htm(没有区别)

△css:
层叠样式表是一种用来表现HTML等文件样式(效果)的计算机语言

JavaScript:
简称“JS”,是一种属于网络的脚本语言
常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果
通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的

△jQuery:
jQuery是一个快速、简洁的JavaScript框架,它封装JavaScript常用的功能代码

△boodstarp(JQ+css):
bootstrap:简洁、直观、强悍的前端开发框架
它在jQuery的基础上进行了更为个性化的完善,形成一套自己独有的网站风格,并兼容大部分jQuery插件。

△B/S (前端/后端)

Web服务的本质:
浏览器发请求 --> HTTP协议 --> 服务端接收请求 -->
服务端返回响应 --> 服务端把HTML文件内容发给浏览器 --> 浏览器渲染页面
浏览器内嵌了一个socket客户端,默认TCP链接

△浏览器自带socket客户端,自己编写的服务端也可以为浏览器服务

from socket import *
jd_server = socket()

jd_server.bind(("",8001))
jd_server.listen(5)
conn,client_add = jd_server.accept()
from_client_msg = conn.recv(1024)
print(from_client_msg.decode())
conn.send("nihao".encode())
conn.close()
jd_server.close()

按照HTTP协议加载浏览器能看懂的数据:

conn.send(b"HTTP/1.1 200 OK\r\n\r\n")
conn.send(b"nihao")

HTTP/1.1 200 OK:
HTTP/1.1 是一个规范
200 代表请求成功
OK 表示一切正常

conn.send(b"

nihao

") #用标题包裹数据,更好看一些

标签一般形成一个结构写在文件里,这个文件就是HTML文件

HTTP/1.1 是一个规范

conn.send(b"HTTP/1.1 200 OK\r\n\r\n")
conn.send(b"nihao")

pycharm中创建一个html文件(英文名,不要空格)
你会发现,整个结构都直接生成好了,因为不管什么浏览器,文档结构都是这样的
image-20191129142809169
html文件可以在pycharm中就能打开

△自己写一个服务器
当浏览器来连服务器时,把HTML文件发送给浏览器

from socket import *

s = socket()
s.bind(("",8881))
s.listen(5)
new_s, addr = s.accept()
data = new_s.recv(1024)
print(data.decode())
new_s.send(b"HTTP/1.1 200 OK\r\n\r\n")

with open("test.html","rb") as f:
    data = f.read()
    new_s.send(data)
new_s.close()
s.close()

HTML文档结构

△最基本的HTML文档:

     
   


 
  
  标题

 





:HTML文件声明,声明为HTML5文档
、:是文档的开始标记和结束的标记。是HTML页面的根元素,在它们之间是文档的头部(head)和主体(body)

、:定义了HTML文档的开头部分。它们之间的内容不会在浏览器的文档窗口显示。包含了文档的元(meta)数据,配置信息等,是给浏览器看的,你看到的是在body标签里面写的

:定义了网页标题,在浏览器标题栏显示
、:之间的文本是可见的网页主体内容

注意:对于中文网页需要使用  声明编码,否则会出现乱码
有些浏览器会设置 GBK 为默认编码,则你需要设置为 

△浏览器页面调试工具 F12
Elements(元素):对浏览器看来,所有标签都是元素
标签对文本进行了标记,所以HTML叫超文本标记语言
浏览器有识别标签的机制

HTML标签格式

标签分类定义

块级/内联:判断依据为显示的web中独占至少一行的body中的标签

块级标签(行外标签,独占一行):

块级标签能够包含内联标签,和某些块级标

一级标题

标题标签
换行标签
换行横线标签

段落标签 第一章内容

换行文档分区标签
    无序列表标签
  • 列表内容标签
    有序列表标签 li>梅
无标识标签
河北省
邯郸
表格线框宽度 表格标签 定义行 第一行 表头加粗的内容 第二行 表内容
MonthSavings
January$100

内联标签(行内标签,不独占一行):
不能包含块级标签

稍等片刻 图片标签
跳到底部  超链接标签
蓝色  文档标签  

全封闭标签:

网头     网头标签

一级标题

标题标签 跳到底部 超链接标签

我的车是 蓝色 的。

段落标签 文档分区标签
换行文档分区标签

段落标签 第一章内容

    无序列表标签
    有序列表标签 li>梅
无标识标签
河北省
邯郸
表格线框宽度 表格标签 定义行 第一行 表头加粗的内容 第二行 表内容
MonthSavings
January$100

自封闭标签:

   元信息标签
  网头图标标签

换行标签
换行横线标签 稍等片刻 图片标签

head内常用标签(了解):

标签 元信息

用处:标签位于文档的头部,提供的信息是用户不可见的,是一个自封闭标签,全封闭标签,可提供有关页面的元信息(meta-information)

有一下关键字:

charset=

ontent="3"

定义文档字符编码和更新频度的描述:

 
                          三秒刷新

                                           自动跳转

http-equiv=

浏览器内核(渲染引擎):渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息
渲染引擎是兼容性问题出现的根本原因,大部分渲染效果差不多




IE比较个色  

name="keyword" content="搜索关键字"

"keywords" 是一个经常被用到的名称。它为文档定义了一组关键字
某些搜索引擎在遇到这些关键字时,会用这些关键字对文档进行分类


name="description" content="网站描述信息"

设置网站描述信息,用于在搜索引擎搜索时,显示网站基本描述信息


触屏缩放

name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes"



device-width:设备宽度
- initial-scale=1.0,初始显示缩放比例。
- minimum-scale=0.5,最小缩放比例。
- maximum-scale=1.0,最大缩放比例。
- user-scalable=yes,是否支持可缩放比例(触屏缩放)

网头 标签


body内常用标签

标签 标题


    hehe  #body中没有包裹的就是普通文本显示
    

一级标题

二级标题

三级标题,大圣

四级标题

五级标题
六级标题

br标签 换行

123


4
5

123 4 5

注意点:直接回车、空格等空白内容都被认为是一个空格

hr 标签 一行横线

1
2

1 ---------------------------------- 2

form标签 表单

使用 
标签可以通过浏览器向服务器传输数据
action属性: 指定提交路径,提交到哪里去
用户名: 密码:

input标签

text/password 输入框

用户名: 


密码: 



        

     

 

        

                 

radio 单选框

性别

checkbox 多选框

喜欢的明星:
 baby   
 热巴
 艺昕

textarea标签 多行文本输入框

多用于评论


select标签 下拉框

单选


multiple="multiple" 多选

ctrl键多选


a 标签 超链接

锚点:页面内容进行跳转(在自己的页面跳)



第一章
第二章
第三章

第一章 XXX

#段落标签 第一章内容

不加href属性,就是普通文本显示

古风

加上href属性,不加值文字有颜色效果,还有下划线,并且点击后会刷新当前的html页面

跳到底部

加上href属性,并且加上值

baidu

跳转对应网址的页面
未访问之前是蓝色的字体颜色
访问之后是紫色的字体颜色
target属性:
_self:在当前标签页打开 href属性值的那个网址
_blank:在新的标签页打开 href属性值的那个网址

p标签 段落

第一章内容

span标签 文档分区

我的车是 蓝色 的。

如果不对 div和span 应用样式,那么 span 元素中的文本与其他文本不会任何视觉上的差异

div标签 换行文档分区

div是一个块级元素。这意味着它的内容自动地开始一个新行
可以把文档分割为独立的、不同的部分

#字体为绿色

This is a header

This is a paragraph.

内容
#背景为绿色

ul标签 无序列表

兴趣爱好:
    
    #
      作为无序列表的声明

ol标签 有序列表

君子:
    
    #
      标签定义有序列表,有序列表的各个列表项有先后顺序,
    1. #所以会使用数字进行标识

dl标签 无标识表(缩进)

    
河北省
表头
邯郸
内容
石家庄
山西省
太原
平遥
河北省 邯郸 石家庄 山西省 太原 平遥

tble标签 表格

   表格线框宽度
   定义行   第一行
      表头加粗的内容
      第二行
      表内容
    
MonthSavings
January$100
表格由 table 元素以及一个或多个 tr、th 或 td 元素组成 tr 元素定义表格行,th 元素定义表头,td 元素定义表格单元 border:规定表格边框的宽度 写法二: 第二种写法:
id name age
1 xiaoming 20
2 xiaoli 18

img标签 图片

稍等片刻

src属性:图片路径  必须写
alt属性:图片加载失败或者正在加载时提示的内容
title属性:鼠标悬浮时显示的内容

# 不常用,通过css来控制
width:设置宽度
height:设置高度

css

层叠样式表,作用是为标签加效果

123

基本选择器

元素选择器

标签名称{css属性:值}

div{width:100px;}

id选择器

id{}

html代码:
css写法: #d1{ background-color: green; width: 100px; height: 100px; }

类选择器

.class1{属性:值}

html代码:
baby
热巴
唐艺昕
css写法: .c1{ background-color: green; width: 100px; height: 100px; }

属性选择器

html代码:
baby
热巴
css写法: [xx]{ /*属性查找*/ background-color: green; width: 100px; height: 200px; } [xx='ss']{ /*属性带属性值查找*/ background-color: green; width: 100px; height: 200px; }

后代选择器

html代码:

div id="d1" class="c1" xx="ss">
        
            baby
        
    
唐艺昕
xxxxxxx
div a{    color: yellow;}

组合选择器

div,a{ color: yellow;}

html代码:
div id="d1" class="c1" xx="ss">
        
            baby
        
    
唐艺昕
xxxxxxx css代码: 注意:a标签字体颜色设置,必须找到a标签才能设置 #d1 a,#d3 a{ background-color: pink; color:yellow; }

css样式引入方式

head标签中引入


给所有div标签加样式

外部文件引入

(工作中常用的)

创建一个css文件,stylesheet文件,比如test.css文件。里面写上以下代码
div{
    /* css注释 */
    width: 200px;
    height: 200px;
    background-color: red;
}

在想使用这些css样式的html文件的head标签中写上下面的内容
 href对应的是文件路径

内联样式

multiple="multiple"?

css样式相关

display属性

改变标签属性:
inline: 将块级标签变成了内联标签
block:将内联标签变成块级标签
inline-block: 同时具备内联标签和块级标签的属性,也就是不独占一行,但是可以设置高度宽度
none: 设置标签隐藏 (了解,后面用)

html代码

 
        我是span标签
    
    
鹅鹅鹅,曲项向天歌!
白毛浮绿水

css写法

span{display: block;}             将内联标签变成块级标签
    .c1{
        background-color: red;    内容背景颜色
        height: 100px;            内容背景高度
        width: 100px;             内容背景宽度
        display: inline;          将块级标签变成内联标签
        /*display: inline-block;*/  同时具备内联标签和块级标签的属性
         }

颜色设置

英文单词:red;
十六进制: #ff746d;
rgb: rgb(155, 255, 236);

背景颜色透明度: rgba(255, 0, 0,0.3);      
单纯的就是颜色透明度

标签透明度(例如背景图片透明度): opacity: 0.3;         
0到1的数字,这是整个标签的透明度

盒子模型

标签占空间总大小=margin+border+padding+content

html代码

窗前明月光

css写法

div{ width: 200px;                           内容宽度
     height: 100px;                          内容高度
     background-color: rgba(255, 0, 0,0.3);  内容背景颜色
     background-image: url("fage.png");      内容背景图片 url写图片路径,也可以是网络地址路径
     margin: 10px 15px              外边距:上下 左右  距离无颜色
     border: 4px solid red;         边框:大小 样式 颜色 
     padding: 4px 2px 6px 8px;   上4右2下6左8  内边距       
}

margin 外边距

距离其他标签或者自己父级标签的距离

html代码

    
窗前明月光

css写法

  .c1{
        background-color: red;
        height: 100px;
        width: 100px;
     /*margin: 10px 15px;*/     上下10,左右15
        margin-left: -10px;
    }
    .c2{
        background-color: green;
        height: 20px;
        width: 20px;
        /*margin: 10px 15px;*/
        margin-left: 20px;
    }

让外边距为零

body{
    margin: 0;
}

border 边框

html代码

窗前明月光

css写法

边框简写方式,对四个边框进行设置
/*宽度/样式/颜色*/ 窗前明月光
order-left: 1px solid green; 单对左边边框设置 border-top: 1px solid blue; 上边边框 细写 border-width: 5px; 边框宽度 border-style: dashed; 边框样式 border-color: aqua; 边框颜色

padding 内边距

内容和边框之间的距离

html写法

/*宽度/样式/颜色*/ 窗前明月光
padding: 6px 8px; 上下6左右8 padding: 4px 2px 6px 8px; 上4右2下6左8 padding-left: 20px; padding-top: 20px; padding-right: 20px; padding-bottom: 20px;

content: 内容部分

背景

html代码

窗前明月光

css写法

background-color: #ff746d;            背景颜色
background-color: rgba(255, 0, 0,0.3);背景颜色
background-image: url("fage.png");   url写图片路径,也可以是网络地址路径

background-repeat: no-repeat;        不重复
background-repeat: repeat-y;         y方向上
background-position: right top;      右上
(lift top,center top,right top,center bpttom)
background-position: 100px 50px;     离左边边多少,离右边多少  一般通过css设置

简写方式: 
    background: #ff0000 url("fage.png") no-repeat right bottom;

高度宽度
css写法:
    div{
        height: 100px;
        width: 100px;
        background-color: pink;
    }
    span{                        !!!行级标签不能设置高度宽度
        height: 100px;
        width: 100px;
        background-color: green;
    }

可以设置百分比,会按照父级标签的高度宽度来计算

234
css写法: .c1{ width: 200px; height: 100px; background: red; } .c2{ width: 50%; height: 50%; background: gold; }
字体相关

html代码

窗前明月光

css写法

font-size: 50px;  1.5em     /* 默认字体大小是16px=1em */
color:green;        /* 字体颜色 */

font-family:        '楷体', '宋体';      浏览器如果不支持第一个选第二个。。。

font-weight: 400;    /* 字体粗细 100-900,默认是400 */
字体对齐

字体对齐

html代码:
    
窗前明月光

css写法

div{  height: 100px;
      width:200px;
      background-color: yellow;
      text-align: center;  标签文本水平居中于块级标签  
      line-height: 100px;  和height高度相同,标签文本垂直居中于块级标签
        /*垂直居中*/ 
      text-align: right;右对齐

浮动

浮动的元素,不独占一行,并且可以设置高度宽度

html代码

scc写法

body{ margin: 0; }   要浮动,先让默认为8的外边距为0

c1{
background-color: red;  height: 100px;
width: 200px;  float: left;
}
.c2{
background-color: green;  height: 100px;
width: 200px;  float: right;
}

.c3{
background-color: pink;
height: 100px;
width: 100%;}

塌陷解决

父级标签没有高度了,子标签一浮动,会让下面的标签顶上来

方式1:给父级标签加高度 不常用

方式2:清除浮动(clear属性) 不常用

.c3{
background-color: pink;  height: 100px;
width: 100%;
clear: both;    (这个标签上面不允许有浮动的元素)
}

方式3:子标签底下加一个空白的带clear属性的div标签 常用

html代码:

方式4:div标签后面用after拼一个内容为空的带clear属性的块

需要先用伪元素选择器

html代码:

css代码:

.clearfix:after{
    content:'';         设置内容
    display:block;       设置块
    clear:both;         设置clear属性
}

伪元素 after

在原内容上增加元素

html代码:

一段文字

css代码:

div{
    background-color:pink;
    height:100px;
    width:200px;}
div:after{
content:'?';
color:white;}

伪类 hover

添加鼠标放上之后的 效果

html代码:



css写法:

.c1{
    background-color:red;
    height:300px;
    width:300px;}

.c1:hover{                                     /*鼠标悬浮时设置效果*/
/*background-color:green;*/
background-image:url("a.png");
cursor: pointer;}      pointer 手
                      default 箭头,crosshair 十字,progress 箭头和沙漏

悬浮显示其他标签效果

html代码:


  

css写法:

.c1{background:black;
    height:400px;
    width:400px;
}

.c2{background:aqua;
    height:40px;
    width:40px;
    display:none;          改display为隐藏属性
}

.c1:hover.c2{
    display:block;          鼠标悬浮时显示c2,改display为块属性
}

positon 定位

做一些小的范围布局

html代码:

static 静态定位

也就是标签默认

relative 相对定位

相对于父级标签移动,原来的位置还占着,不会造成下面的标签顶上去的情况

css代码:

position:relative;
left:100px;   离左边
top:-100px;   离上面
/*bottom:*/   离下面
/*right:*/    离右边

absolute 绝对定位

相对于父级标签移动,原来的位置不占着,会造成下面的标签顶上去的情况

css代码:

position:absolute;
top:20px;
left:80px;

fixed 固定定位

按照浏览器窗口的位置进行移动

html代码:

返回顶部

css代码:

.s1{
position:fixed;
left:40px;
bottom:20px;
}

优先级

!important>行内样式>ID选择器>类选择器>标签

越精准的定位优先级越高

继承

标签

id

!important

无敌

练习(下周一之前完成即可):

通过html和css完成小米商城首页的开发,暂不需要完成动态效果,有页

面展示效果就可以(https://www.mi.com/)

注意:前端页面效果可以通过很多种方式实现,没有标准答案,大家

可以参考小米官网源码,也可以根据自己想法去实现

js

Brendan(布兰登) Eich

轻量级的编程语言(ECMAscript5或6),
是一种解释性脚本语言(代码不进行预编译),
主要用来向HTML页面添加交互行为,
目前是互联网上最流行的脚本语言,
支持面向对象、命令式和声明式(如函数式编程)风格,

JavaScript,他和Python一样是一门编程语言,而浏览器内置了JavaScript语言的解释器,所以JavaScript代码在浏览器上就可以运行,
DOM,(Document Object Model)是指文档对象模型,通过它,可以操作HTML文档的相关功能,例如:对标签内容进行删除和替换等(非重点),
BOM,(Browser Object Model)是指浏览器对象模型,通过他,可以操作浏览器相关的功能,例如:浏览器设置定时器,浏览器定时刷新页面。

BOM,(Browser Object Model)是指浏览器对象模型,通过他,可以操作浏览器相关的功能,例如:浏览器设置定时器,浏览器定时刷新页面。

三种js代码引入方式

1 head标签的script标签里面(alert('xx'), confirm('xx'))

2 body标签的script标签里面 (建议底部)

3 外部文件引入的方式来使用
创建一个.js结尾的文件,写上js代码
比如:

alert('are you ok?');

在想使用这个js代码的html文件中,body标签底部导入


js基础内容(会继续更新)

alert("daoyou");
confirm("daoyou?");

JavaScript语法规则

变量

变量定义 var a = 100;

var 变量名,,

变量声明,但没有赋值的时候,变量的值为undefined

数据类型

number 整数,浮点数

var n = 11;
var n2 = 11.11;

string 字符串

var a = 'abcdef';
var a = new String('ss');  

字符串操作

var s = 'hello'; 
索引取值:  s[1] -- 'e'     s.charAt(4); -- 'o' : s.substring(1,3); -- "el"

获取长度:s.length;
移除两端空格: s.trim();   s.trimLeft(); s.trimRight();

boolean 布尔

var a = true;
var b = false;

undefined和null类型

undefined 变量声明了,但是没有赋值,此时这个变量是undefined类型
null : 变量不用了,就可以给变量赋值为null,--- object类型

array 数组

var names = [11,22,33];

数组常用方法

names[0]    // 索引,索引也是从0开始的

names.push(ele)       // 尾部追加元素
示例:a.push('xx');       --  [11, 22, 33, "xx"]
names.pop()         // 尾部移除一个元素
示例:a.pop(); -- [11, 22, 33]
names.unshift(ele)              // 头部插入元素
示例:a.unshift('ssss'); --  ["ssss", 11, 22, 33]
var ele = obj.shift()           // 头部移除一个元素
示例:a.shift(); --  [11, 22, 33]    


names.splice(index,0,ele)       // 在指定索引位置插入元素
names.splice(从哪删(索引),删几个(个数),删除位置替换的新元素(可不写,可写多个)) 

names.splice(index,1,ele)       // 指定索引位置替换元素
names.splice(index,1)           // 指定位置删除元素
var names = [11,22,33];
names.splice(1,1,'xx','oo','asdf'); -- [11, "xx", "oo", "asdf", 33]

names.slice(start,end)          // 切片
示例:a.slice(1,3);    

names.reverse()             // 原数组反转
示例:a.reverse(); 

names.join(sep)             // 将数组元素连接起来以构建一个字符串
示例: var a = ['ni','hao','ma',18]
a.join('+'); -- "ni+hao+ma+18"

names.concat(val,..)        // 连接数组
示例: var a = [11,22]; var b = ['aa','bb']
var c = a.concat(b); c -- [11, 22, "aa", "bb"]

names.sort()    (辣鸡)        // 对原数组进行排序  a.sort(compare); 升序排列

解决数组中数字排序的问题

a = [2,3,5,2,22,4,2,3,234,1]
function com(a,b){return a-b};    // 自定义排序规则   

a.sort(com);

当a-b大于0时,会交换数组中的这两个元素
一直交换直到返回值没有大于0的

字典

自定义对象Object

JavaScript中其实没有字典类型,字典是通过对象object构造出来的

info = {
    name:'迪丽热巴',      
    "age":18
    1:123
}

var a = {username:'xx',password:'123'}; //键可以不加引号 
                                     // 键可以是数字,但取值时必须是info["1"]
var a = info['name']/a = info.name // 通过键取值必须加引号(info.name) 
info['age'] = 20            // 修改
info['gender'] = 'male'     // 新增
delete info['age']          // 删除

查看数据类型

typeof 变量名;
typeof n;   

注释

单行//

多行 /**/

流程控制

if判断

if (a == 1){       //判断条件写在小括号里面,大括号里面写条件判断成功后的代码内容
    console.log('1111');      (类似print)
}
else{
   console.log('222');
}

多条件判断

if(a > 1){
    // console.log('1111');
    // var hhhh = document.getElementById('d1');
    // hhhh.innerText = '彭于晏';
}else if(a<1){

    console.log('2222');
}else {
    console.log('3333');
}


运算符

比较运算

    > < == !=  >=  <=   ===  !==

var a = 2;
var b = '2';
a == b;  true  弱等于
a === b;  false  强等于
a != b;  false
a !== b;   true

算术运算

+  -  * / %   ++  --  
++ 自增 1  
-- 自减 1

var a = 2;
a++  先执行逻辑  +1
++a  先+1 再执行逻辑
简单示例:
    if (++a === 4){                 //(a++ === 3)
        console.log('xxx');}
    else{
        console.log('ooo');};

switch判断

用于判断等于某些值(只能放数字)

var num = 200;
switch(num++){
    case 10:
        console.log('未成年');
        break;
    case 18:
        console.log('成年');
        break;
    case 35:
        console.log('老年');
        break;
    case 100:
        console.log('....');
        break;
    default:
        console.log('太大了');};

异常捕获

try{
    console.log(xx);
}
catch(e){
    console.log(e);
}
finally{
    console.log('sssss');
}

循环

for循环

var names = ['老男孩', '肖峰', '吴超']

for(var i=0;i

函数

普通函数

function f1(a,b){
    return a+b;
}
//   执行: f1(1,2) -- 3

function f1(a,b){
    return a,b;
};

f1(1,2);    //不能返回多个值:  2

匿名函数

一般用于当做参数使用
function (arg){
    return arg + 1;
}
——————————————————————————————

var a = function (a,b){
    console.log('xxx');
}

var d = {'xx':'oo','f':function (a,b){
    console.log('xxx');
}};
执行:d.f(1,2);    -------'xxx'

自执行函数

一般用于做数据隔离使用,因为JS中是以函数为作用域,所以当js代码比较多时,通过自执行函数做数据隔离

(function () {
        alert('自执行函数!')
    })()

JSON

JSON.stringify 序列化

var info = {name:'alex',age:19,girls:['钢弹','铁锤']}
var infoStr = JSON.stringify(info)
console.log(infoStr) # '{"name":"alex","age":19,"girls":["钢弹","铁锤"]}'

JSON.parse 反序列化

//反序列化时键不能是数字且必须有双引号
var infoStr = '{"name":"alex","age":19,"girls":["钢弹","铁锤"]}' 
var info = JSON.parse(infoStr)
console.log(info)

应用场景:
网络中数据传输本质上是基于字符串进行,如果想要把一个js的对象通过网络发送到某个网站,
就需要对对象进行序列化然后发送。(ajax会经常使用)
各语言之间数据类型不一定互通,需要一个中间人(json)  python->json->...->json->java

DOM对象 文档对象模型

是一种用于HTML的编程接口
它给文档(HTML文件)提供了一种结构化的表示方法
可以改变文档的内容和呈现方式
DOM相当于是一个模块,提供了关于HTML文档中对标签进行操作的功能(动态调整文档中的元素)

选择器

直接查找选择器

html代码:

js代码

document:代表HTML文档对象

document.getElementById(arg)             // 根据ID获取一个标签对象
document.getElementsByClassName(arg)     // 根据class属性获取标签对象集合
document.getElementsByName(arg)         // 根据name属性值获取标签对象集合
document.getElementsByTagName(arg)       // 根据标签名获取标签对象集合

示例1: var d1 = document.getElementById('d1');
d1.style.height = '600px';

示例2:
创建几个div标签,统一设置为黄色
然后通过JavaScript代码将第一个div标签改为红色
var a = document.getElementsByTagName("div")
a[0].style.backgroundColor="red"

间接查找选择器

js代码:

var div1 = document.getElementsByClassName('c1')[0]; 

div1.nextElementSibling.style.color = 'red';  找下一个兄弟标签,并改了色
div1.previousElementSibling;  找上一个兄弟
div1.firstElementChild;  找第一个儿子
div1.lastElementChild;  找最后一个儿子
div1.children;  找所有儿子,是一个数组
div1.parentElement;  找到自己的父级标签

文本操作

nnerText 获取文本

var a = document.getElementById('d1')
a.innerText;  只获取文本内容

设置文本

a.innerText = '校花'; 不能识别标签,单纯的文本内容

获取文本包含标签

var d = document.getElementsByClassName('c1')[0];
d.innerHTML;  获取的内容包含标签

设置文本

d2.innerHTML = 'dream'; 能够识别标签,生成标签效果

值操作

html


示例

var inp = document.getElementById('username'); 找到标签
inp.value;  获取值   (value 用来进行值操作)
inp.value = 'XXX';  修改值

BOM对象 浏览器对象模型

弹框

alert('xx');
confirm('are you sure?')

location对象

location.href;  获取当前页面的地址(url路径)
location.href = 'http://www.baidu.com'; 跳转到这个网址上
location.reload();  刷新当前页面

计时器

一段时间之后执行某个任务

var t = setTimeout("console.log('xxx')",1000);
var t = setTimeout(function(){confirm('alert('xx')')},5000);
t就是浏览器用来记录你的计时器的标识数字: 
清除:clearTimeout(t)   

每隔一段时间执行某个任务

设置:var t = setInterval(function(){confirm('弹个框!!')},3000);
清除:clearInterval(t);    //6

jQuery

jQuery:是一个javascript库
核心理念是write less,do more(写得更少,做得更多)
内部帮我们把几乎所有功能都做了封装,相比基于DOM、BOM的操作会更加简单,兼容性更好

jQuery引入

本身是一个js文件

网络地址引入
script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js">

本地文件引入
         
另起一个script标签来写script代码
或写在js文件里,
再
导入

最好的写法

    
      
                       
        })
        
        window.onload = function () {  // 文档 图片 视频 音频 都加载完 执行一次  写多次会覆盖前面的
        }

        $(window).ready(function () {   // 文档 图片 视频 音频 都加载完 执行一次  能写多次
        })

        $(document).ready(function () {   // 文档 加载完 执行一次  能写多次
        })


    

JQuery和dom对象的转换

$  ==  Jquery
dom对象 _>  jq对象
$(dom对象)
jq对象 _> dom对象
jq对象[0]

选择

选择器

基本选择器

$('*') 通用选择器
$('#d1') id选择器
var d1 = $('#d1');       -- jquery对象  -- jQuery.fn.init [div#d1]
a.css({"background-color":"blue","height":"300px"})

var d = document.getElementById('d1');  -- 原生dom对象

jquery对象和dom对象之间不能调用互相的方法

a[0] -- dom对象
$(d) -- jquery对象
$('.c1') 类选择器
$('span') 元素选择器

$('标签名称')

$('#d1 , .c2') 组合选择
$('#d1,.c2').css('background-color','green');  并集
$('#d1.c2').css('background-color','green');   交集

$('#d1,.c2')[1];  -- 索引为1的dom对象

$('#d1,.c2').eq(1); -- 索引为1 的jquery对象

$('div span') 层级选择器

后代选择器    $('div span') 
子代选择器    $('#li>span') 
毗邻选择器    $('#li+span') 
弟弟选择器    $('#li~span')

$('[xx]') 属性选择器

$('[xx]').css('color','green');
$('[xx="oo"]').css('color','pink');
$('[属性^="值"]')  开头
$('[属性$="值"]')  结尾
$('[属性*="值"]')  包含
$('[属性!="值')    不等于

表单选择器

html代码

jquery代码

$(":input")    找到所有input标签
$(':text')     找到所有input且type=text的标签
$(":password") 找到所有input且type=password的标签
$(":radio")    找到所有input且type=radio的标签
$(":checkbox") 找到所有input且type=checkbox的标签

进一步选择

$("选择器:筛选器") 优先

$("选择器:筛选器")
:first   第一个
:last    最后一个
:eq(index)  按照索引
:has(选择器)  包含某个子代的父标签
:not(选择器)  排除

$("选择器").筛选器方法

html代码

  • 迪丽热巴
  • 唐艺昕
  • 吴彦祖
  • 彭于晏
  • 张天爱
  • 吴亦凡
.parent() 找父标签
 var c = $('.c1');
c.parent();
父标签

c.parents();  
直系的祖先辈

c.parentsUntil('body'); 
往上找,直到找到哪个标签为止
不包含body标签

.children() 找子标签
var u = $('ul');
u.children();  找到所有儿子标签
u.children('.c1'); 找到符合 .c1 的儿子标签

.next() 找下面的兄弟
var c = $('.c1');
c.next();     
nextAll();  下面所有兄弟
c.nextUntil('.c2');  下面到某个兄弟为止,不包含那个兄弟
.prev() 找上面的兄弟
var c = $('.c1');
c.prev();
c.prevAll(); 上面所有兄弟,注意顺序都是反的
c.prevUntil('.c1'); 上面到某个兄弟为止,不包含那个兄弟
.siblings() 找兄弟
c.siblings();  找到自己的所有兄弟
c.siblings('.c1');  筛选兄弟中有class值为c1的标签(可以组合)

.find() 找后代
$('li').find('span'); 等同于css的 li span  层级选择器
.first()/.last()
$('li').first();  找所有li标签中的第一个
$('li').last(); 找所有li标签中的最后一个

.eq(索引值)

$('li').eq(0);  按照索引取对应的那个标签,索引从0开始
$('li').eq(-1);  最后一个
.text() / .html() 取文本/标签

同js的innerText和innerHTML

c.text();  不带标签
c.html();  带标签
设置
c.text('文本')
c.html('标签'); -- 文本--"皇家赌场"
.has() 包含某个子代的父标签
.filter('#l2') 包含某个选择器的当前标签
.not(选择器) 不包含某个选择器的当前标签

操作

标签的操作

创建标签

$('')

append/prepend添加标签

html代码:

  • 1
  • 2
  • 4
  • 5

jQuery代码:

$('#b2').click(function () {
    last = $('
  • ') //生成一个标签 li.text('3') //文本为3 $('li:eq(2)').before(li) //在第..前加.. }) // $('li:eq(1)').after(li)在第..后加.. 父标签 . append(子标签) //子标签添加到父标签的子代的最后 子标签. appendTo(父标签) //子标签添加到父标签的子代的最后 父标签 . prepend(子标签) //子标签添加到父标签的子代前面 子标签.prependTo(父标签) //子标签添加到父标签的子代前面 a.after(b) // 在a标签后面添加b标签 a.before(b) // 在a标签前面添加b标签
  • 父标签 . append(子标签)

    子标签添加到父标签的子代的最后

    子标签. appendTo(父标签)

    子标签添加到父标签的子代的最后

    父标签 . prepend(子标签)

    子标签添加到父标签的子代前面

    子标签.prependTo(父标签)

    子标签添加到父标签的子代前面

    a.after(b)

    在a标签后面添加b标签

    a.before(b)

    在a标签前面添加b标签

    detach/remove 删除标签

    html代码:

    • 1
    • 2
    • 4
    • 5

    jQuery代码:

    detach删除,可恢复事件:
    $('#b1').click(function () {
        last = $('li:last').detach()
    })
    
    
    
    remove删除,不可恢复事件1:
    $('#b3').click(function () {
        $('li').remove()
    })
    
    

    detach append 删除恢复标签

    html代码:

    • 1
    • 2
    • 4
    • 5

    jQuery代码:

    var last
    
    $('#b1').click(function () {
        last = $('li:last').detach()
    })
    
    $('#b1').click(function () {
        last = $('li:last').detach()
    })
    
    

    empty append 清空恢复标签

    html代码:

    • 1
    • 2
    • 4
    • 5

    jQuery代码:

    var last
    
    $('#b3').click(function () {
        last = $('ul').empty()
    })
    清空标签中的内容
    
    $('#b2').click(function () {
        $('ul').append(last)
    })
    
    

    clone(ture) 克隆(和事件)标签

    html代码:

    • 1
    • 2
    • 4
    • 5

    jQuery代码:

    $('#b4).click(function () {
        var li = $('li:last').clone(true)
        li.text(Number(li.text()+1))
        $('ul').append(li)
    })
    
    $('li').click(function () {
        alert($(this).text())
    })
    
    

    替换

    a.replaceWith(b)    //  用b替换a
    b.replaceAll(a)     //  用b替换a   a可以是标签 选择器
    

    replaceWith(b) 替换标签

    html代码:

    • 1
    • 2

    jQuery代码:

        $('#b1').click(function () {
            var l2 = $('li:last')
            var li = l2.clone()
    
            li.text(Number(li.text()) + 1)
    
            // l2.replaceWith(li)
            li.replaceAll('li:eq(1)')
    
        })
    
    
         $('li').click(function () {
            alert($(this).text())
    
        })
    

    值操作

    值的操作

    val()
    

    class类值操作

    操作样式一般通过class而不是id

    html代码

    css代码

    .c1{
                background-color: red;
                height: 100px;
                width: 100px; }
    .c2{
                background-color: green; }
    
    
    

    jquery代码

    $('div').addClass('c2');   //动态增加类值
    $('div').removeClass('c2');   //删除
    $('div').toggleClass('c2');    //如果不存在则添加类,如果已设置则删除
    var t = setInterval("$('div').toggleClass('c2');",500); //背景闪烁跳动
    
    背景闪烁跳动
    var t = setInterval("$('div').toggleClass('c2');",500);
    

    val值操作

    html代码:

        
        抽烟
        喝酒
        烫头
        
        
    
    
    

    jquery代码

    获取值:
     文本输人框:$('#username').val();
     单选radio框:$('.a1:checked').val();    checked 代表被选中的
    
     多选checkout框:$('.a2:checked').val()是不行的;需要循环取值,如下:
     var d = $(':checkbox:checked');
     for (var i=0;i

    属性的操作

    .attr('属性')         // 获取属性的值
    .attr('属性','值')    // 设置把HTML元素我们自己自定义的DOM属性
    .removeAttr('属性')   // 删除某个属性
    
    .prop('checked')      //radio checkbox  select(option)   
    .prop('checked',true)  //设置HTML元素本身就带有的固有属性  
    

    事件绑定

    click(function () 点击

    jQuery绑定

    jQuery中的click 当点击按钮时执行一段 JavaScript

    点击事件绑定:
    $('.c1').click(function () {
            //$(this)表示的就是它自己
            $(this).css('background-color','green');
            // $('.c1').css('background-color','green');
    //    $("#d1").css({"background-color":"blue","height":"800px"})
        })
    
    
    
    $('button').bind('click',function () {           另一种方法
        })    
    
    
    $('button').unbind('click')                      解绑
    
    js绑定

    js中的onclick等同于jQuery中的click

    var b1 = document.getElementById('b1');  用id获取doc对象
    b1.onclick = function () {
        alert(456)
    }
    

    focus(function () 获取焦点

    当 字段获得焦点时发生 focus 事件

    $('#i1').focus(function () {
        console.log('聚焦了')
        $(this).val('')
        $(this).next().remove()
    })
    

    blur(function () 失去焦点时触发

     $('#i1').blur(function () {
            console.log('失去焦点了')
            if ($(this).val() === '') {
                var sp = $('')
                sp.text('不能为空')
                $(this).after(sp)
    
            }
        })
    

    change(function () 内容变化

    $('#s1').change(function () {
        console.log('内容变化了')
    })
    

    keyup(function (e) 按键启动

    $('#i1').keyup(function (e) {     //function拿到的第一个参数是按键的键名
        // console.log(e.keyCode)
        if (e.keyCode === 27) {       //利用keyup中的keyCode方法拿键的ascii码
        alert(123)
    }`
    })
    
    
    

    hover(function () 鼠标悬浮

    $('.fa').hover(function () {
            console.log('悬停了')
        }, function () {
            console.log('不悬停了')
        })
    
    
    同以下
    $('.fa').mouseenter(function () {
        console.log('鼠标进来了')
    })
    
    $('.fa').mouseleave(function () {
        console.log('鼠标出去了')
    })
    
    
    或
    $('.fa').mouseover(function () {
        console.log('鼠标过来了')
    })
    
    
    mouseenter  鼠标进入
    mouseleave  鼠标离开
    hover  =   mouseenter  + mouseleave
    

    alert 添加事件

    html代码:

    • 1
    • 2
    • 4
    • 5

    jQuery代码:

    $('li').click(function () {
        alert($(this).text())
    })
       // $('li:eq(1)').after(li)   
    

    模态框

    js代码

    $(function () {   // 页面  视频 图片 音频 加载好再调用函数
        var flag = true;
        // 全选 + 取消
        $('#a').click(function () {
            $('tbody :checkbox').prop('checked', flag)    //prop设置属性
            if (flag) {
                $(this).text('取消')
            } else {
                $(this).text('全选')
            }
            flag = !flag
        })
    })
    

    事件冒泡

    儿子父亲都被绑定,会一层层网上冒泡出发父事件执行.

    事件委托

    利用事件冒泡原理,

    bootstrap

    导入顺序

    
        
        Title
                 
                 
    
                 
                              
    
    

    each 循环

    $('选择器').each(function(index,dom){
        $(this)  //  循环出来的每个jq对象
        //  index 索引   dom dom对象
    })
    

    事件冒泡

    儿子父亲都绑定事件,触发儿子的事件,会一层层往上冒泡触发父辈的事件执行.

    阻止事件冒泡

    $('.son').click(function (e) {
            alert('你是我儿子')
            return false  // 阻止事件冒泡
            //e.stopPropagation()   // 阻止事件冒泡
        })
    

    事件委托

    利用了事件冒泡的原理,将事件委托给父亲,儿子触发事件时,执行父亲的事件.

     // 事件委托
    $('tbody').on('click','button',function () {
            $(this).parents('tr').remove()
    })

    bootstrap

    https://v3.bootcss.com/

    按钮

    表格

    表单

    模态框

    分页

    面板

    导航

    图标

    http://www.fontawesome.com.cn/faicons/

    你可能感兴趣的:(前端基础总结)