前端
基础参考文档:https://www.cnblogs.com/Dominic-Ji/p/10864457.html
跟用户直接打交道的页面都可以称之为是前端
- HTML
- CSS
- JS
- jQuery
- Bootstrap
HTML
超文本标记语言(前端页面基本上都是有HTML组成的)
HTML是所有网页的骨架
Title
HTML标签类型
1.双标签
Title
2.自闭和标签
标签重要的属性
id:定义标签的唯一ID,HTML文档树中唯一
class:为html元素定义一个或多个类名(classname)(CSS样式类名)
HTML注释
head内常用标签
# head内书写的标签不是给人看的 主要是给浏览器看的
标签 意义
定义网页标题
定义内部样式表
定义JS代码或引入外部JS文件
引入外部样式表文件或网站图标
定义网页原信息
body内常用标签
加粗
斜体
下划线
删除
段落标签1
段落标签2
段落标签3
标题1
标题2
标题3
标题4
标题5
标题6
撒旦好看的 卡刷道具卡手机打开
大于号>
小于号<
&符号&
人民币¥
版权©
商标®
div标签与span标签
div是用来做页面的前期布局
span主要用来写局部文字
块儿级标签 div
独占浏览器一整行
行内标签 span
自身文本多大就占多大
img标签
src放图片的路径可以是本地也可以是网上的
alt图片加载不出来的时候提示信息
title鼠标悬浮上去之后显示的信息
width、height调一个另外一个自动调节
a标签
选我
选我
头部
尾部
列表与表格
# 无须列表
- 1
- 2
- 3
- 4
- 5
页面有规则排列的文字等基本上用的都是无序列表
# 有序列表
- 第一项
- 第二项
# 标题列表
- 标题1
- 内容1
- 标题2
- 内容1
- 内容2
# 表格标签
ID
姓名
年龄
1
jason
18
2
frank
28
3
egon
84
tr表示一行
th和td都是普通文本
form表单
form能够获取用户数据并发送到后端服务器
获取用户数据的标签一般都需要有name属性 类似于字典的key,负责把数据提交给后端
前端中属性名=属性值的话,等号后面的部分可以省略可以
multiple多个
textarea可以书写多行
Title
注册功能
能够触发form表达提交动作的按钮有两个
获取用户数据的标签都一个有name属性
name属性类似于字典的key
用户输入的数据会被存放到标签的value属性中
CSS
# 就是用来给HTML标签添加好看的样式的,样式最好使用CSS来指定
# 注释
/*单行注释*/
/*
多行注释1
多行注释2
*/
# 三种引入css的方式
如何查找标签
Title
选择
一上午又快过去了
何处望神州,满眼风光北鼓楼
圣诞节安徽的哈萨克的
div1
div2
div上面的span
div
div>span
div>p
div>p>span
div>span
div下面的p
div下面的span
div下面的span
div下面的span
div
p
span
选择器优先级
1.当选择器相同的时候
采用的是就近原则
2.当选择器不同的时候,越精确,优先级越高
内联选择器(标签内些的) > id选择器 > 类选择器 > 标签选择器
如何设置样式
Title
div
还是答案是
的撒结婚登记ask的
背景
Document
头像
Document
盒子模型
Document
我是一个p标签
浮动
是页面布局必备的
但是浮动的元素会脱离文档流造成父标签塌陷的问题
需要你用清除浮动带来的影响
.clearfix:after {
content: "";
display: block;
clear: both;
}
谁塌陷就给谁加上clearfix类属性即可
Document
溢出
Document
sssssssssssssss
ddddddddd
fffffffffff
ggggggggggggggggggggg
jjjjjjjjjj
定位
Document
sssssssssssssss
ddddddddd
fffffffffff
ggggggggggggggggggggg
jjjjjjjjjj
Z-index
Document
sssssssssssssss
ddddddddd
fffffffffff
ggggggggggggggggggggg
jjjjjjjjjj
JavaScript
js也是一门编程语言
// 这是单行注释
/*
这是
多行注释
*/
Document
变量
再js中定义变量需要使用关键字var,定义群居变量
var name = 'jason';
es6新语法,有单独的作用域
let name = 'jason';
//小牛试刀
var name = 'syy'
undefined
name
"syy"
name = 'not syy'
"not syy"
name
"not syy"
常量
const pi = 3.14
#常量不能修改
数值类型
var a = 12.34;
var b = 20;
var c = 123e5; // 12300000
parseInt("123") // 返回123
parseInt("ABC") // 返回NaN,NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。
parseFloat("123.456") // 返回123.456
字符类型
var res = 'jason';
var res1 = "jason";
// 模板字符串
var name = 'jason';
var age = 18;
undefined
var res = `
my name is ${name} and my age is ${age}
`
undefined
res
"
my name is jason and my age is 18
"
#shift + 回车
布尔值(Boolean)
var a = true;
var b = false;
//空字符串 0 null undefined NaN 都是false
//null 空
//undefined 未定义
函数
// python中的函数,def
def index(a,b):
print(a,b)
// js中的函数,function
function index(a,b){
console.log(a,b)
return 666
}
// 箭头函数
var f = v => v;
// 等同于
var f = function(v){
return v;
}
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2){
return num1 + num2; //这里的return只能返回一个值,如果想返回多个值需要自己手动给他们包一个数组或对象中
}
运算符
var x=10;
var res1=x++; //先赋值,后x自增,增1次
var res2=++x; //先x自增,后赋值,增2次
res1
10
res2
12
//弱等于中,数据类型可以转化,强等于中,不再转化
'5' == 5
true
'5' === 5
false
5 === 5
true
//且或非
&& || !
//赋值运算符
= == === += -= /=
//判断,if-else
var a = 10;
if (a>5){
console.log('yes')
}
else {
console.log('no')
}
yes
//if-else if-else
var a = 10;
if (a>5){
console.log('大于5')
}
else if (a<5){
console.log('小于5')
}
else {
console.log('等于5')
}
VM1811:3 大于5
//判断,case
var day = new Date().getDay();
switch (day) {
case 0:
console.log('Sunday');
break;
case 1:
console.log('Monday');
break;
default:
console.log('...')
}
...
//循环
for (var i=0;i<10;i++) {
console.log(i);
}
VM2198:2 0
VM2198:2 1
VM2198:2 2
VM2198:2 3
VM2198:2 4
VM2198:2 5
VM2198:2 6
VM2198:2 7
VM2198:2 8
VM2198:2 9
var i=0;
while (i<10) {
console.log(i);
i++;
}
VM130:3 0
VM130:3 1
VM130:3 2
VM130:3 3
VM130:3 4
VM130:3 5
VM130:3 6
VM130:3 7
VM130:3 8
VM130:3 9
自定义对象 == python中的字典
// js中创建自定义对象的方式
// 方式1
var obj1 = {'username':'jason','password':123}
obj1.username
"jason"
// 方式2
var obj2 = new Object();
obj2.name = 'frank'
obj2.age = 66
obj2.name
JSON对象
var str1 = '{"name": "Alex", "age": 18}';
var obj1 = {"name": "Alex", "age": 18};
// JSON字符串转换成对象 json.loads()
var obj = JSON.parse(str1);
// 对象转换成JSON字符串 json.dumps()
var str = JSON.stringify(obj1);
//对应关系
python json
dict字典 object对象
list,tuple列表元组 array数组
str string
int,float整形 浮点型 number数值类型
True true
False false
js与Windows交互
//打开,关闭窗口
window.open('http://www.baidu.com','','width=4')
window.close('http://www.baidu.com','','width=4')
//前进
history.forward()
//后退
history.back()
//获取当前的URL
location.href
"https://miaosha.jd.com/pinpailist.html"
//使用js代码实现Windows页面跳转
location.href = 'http://www.baidu.com'
//刷新当前页面
location.reload
//弹出指定值,所在窗口不一定支持窗口弹出
alter('hello')
confirm('请输入密码:')
prompt('请在下方输入','拿的答案')
//计时器
Document
//清除定时器
Document
//循环弹出弹窗
Document
//弹4次
Document
//通过id查找标签
docunent.getElementById('d1')
//通过类查找标签
docunent.getElementsByClassName('c1')
//通过标签查找标签
docunent.getElementsByTagName('div')
//动态的设置链接
var aEle = document.createElement('a');
aEle
aEle.href = 'https://www.baidu.com'
aEle
aEle.innerText = '百度'
aEle
百度
//把动态链接添加到指定标签
document.getElementsByTagName('div')[0].append(aEle)
//只拿标签内部的文本
var divEle = document.getElementsByTagName('div')[0]
undefined
divEle.innerText
"d1
c1 > d1"
//拿标签内部的文本,再解析内容
divEle.innerHTML
"d1
c1 > d1
"
//通过js代码动态获取用户输入的内容
Document
document.getElementById('d1').value
"777"
//按钮绑定事件,script标签要放到body的最后面
Document
jQuery
# 需要提前下载才能使用或者使用网上提供的CDN服务
#下载
#网上的cdn,cdn的作用就是使文件不需要下载,直接可以被用户使用
https://www.bootcdn.cn/
js与jQuery绑定事件的区别
//使用js给指定内容加颜色
Document
ppp
$('#d1').css('color','red')
//统计标签
Document
ppp
1
2
3
$('#d1').nextAll()
//开关灯
$('.c1').hasClass('c1')
true
$('.c1').removeClass('bg_green')
k.fn.init [div.c1.bg_red, prevObject: k.fn.init(1)]
$('.c1').toggleClass('bg_green')
k.fn.init [div.c1.bg_red.bg_green, prevObject: k.fn.init(1)]
$('.c1').toggleClass('bg_green')
// js
var pEle = document.getElementById('d1');
pEle.onclick = function(){
alert('123')
}
// jQuery
$('#d1').click(function(){
alert('123')
})
$('#d1').on('click',function(){
alert(123)
})
Bootstrap
需要提前下载或者使用CDN
Bootstrap里面的动态效果是基于jQuery实现的
也就意味着你再使用Boostrap的时候也需要导入jQuery
使用前端框架所有的标签样式你都可以不用自己写css代码
都是通过书写class属性值来操作的
布局容器
左右两边有留白
左右两边没有留白
栅格系统
获取用户数据的标签
添加样式就用
class='form-control'
额外的图标
也是需要提前下载才能用
http://www.fontawesome.com.cn/icons/qq/