html+css+js+快速入门

html

1.a标签

<!--使用name作为标记-->
<a name="top">顶部</a>
<!--target:表示窗口在哪里打开-->
<p><a href="http://www.baidu.com" target="_top">_top</a></p><br>
<a href="http://www.baidu.com" target="_blank">新开一个页面</a><br>
<a href="http://www.baidu.com" target="_parent">_parent</a><br>
<a href="http://www.baidu.com" target="_self">_self</a><br>
<!--
锚链接:
    1.需要一个锚标记
    2.跳转到标记
    回顶标签-->
<a href="#top">回到顶部</a><br>

<!--功能性连接
        邮件链接:mailto
        qq连接:网页搜qq推广

-->
<a href="mailto:2750317105@qq.com">点击联系我,邮箱</a><br>
<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=2750317105&site=qq&menu=yes"><img border="0" src="http://wpa.qq.com/pa?p=2:2750317105:52" alt="qq交谈" title="qq交谈"/></a>

<b>加粗</b>
<i>斜体</i>
<u>下划线</u>


<br>

<!--段落标签-->
<p>李锦彪</p>

<p>黄欣宇</p>

<!--水平线-->
<hr>

<!--换行-->
<br>
<p>锦欣宇</p>

<!--字体样式-->
<h1>字体样式</h1>
粗体:<strong>李锦彪</strong><br>
斜体:<em>李锦彪</em>

<br>

<!--空格-->
kong &nbsp&nbsp&nbsp&nbsp&nbsp 个 <br>
&ccupssm;

2.列表

<!--有序列表-->
<ol>
    <li>李锦彪</li>
    <li>黄欣宇</li>
    <li>锦欣宇</li>
    <li></li>
</ol>
<hr>
<!--无序列表-->
    <!--应用范围:导航栏,侧边栏-->
<ul>
    <li>李锦彪</li>
    <li>黄欣宇</li>
    <li>锦欣宇</li>
    <li></li>
</ul>
<!--自定义列表-->
    <!--dl:标签-->
    <!--dt:列表名称-->
    <!--dd:列表内容-->
    <!--公司网站底部-->
<dl>
    <dt>列表名称</dt>
    <dd>李锦彪</dd>
    <dd>黄欣宇</dd>
    <dd>锦欣宇</dd>
</dl>

3.表格

<!--表格
    行:tr
    列:td
	border:外层边框宽度
    -->
<table border="1px">
    <tr>
<!--        colspan跨列-->
        <td colspan="4">1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
    </tr>
    <tr>
<!--        rowspan跨行-->
        <td rowspan="2">5</td>
        <td>6</td>
        <td>7</td>
        <td>8</td>
    </tr>
</table>
-------------------------------------------
cellpadding:文字和内边框的距离
<table border="1px" cellpadding="10">
    <thead>
        <th>姓名</th>
        <th>年龄</th>
    </thead>
    <tbody>
        <tr>
            <td>李锦彪</td>
            <td>18</td>
        </tr>
        <tr>
            <td>黄欣宇</td>
            <td>18</td>
        </tr>
    </tbody>
</table>

4.媒体

<!--音频视频-->
<!--
    controls 控制条
    autoplay 自动播放-->
<!--<video src="../resources/video/4004-3post请求.mp4" controls autoplay></video>-->
<audio src="../resources/music/李家鑫%20-%20你懂得(完整版).flac" controls autoplay></audio>

5.页面结构分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9qvVEgpd-1651757973417)(C:\Users\15751083927\AppData\Roaming\Typora\typora-user-images\image-20220427125832687.png)]

<header><h2>网页头部</h2></header>

<footer>标记脚部区域的内容</footer>

<section>web网页中的独立区域</section>

<nav>导航类辅助内容</nav>

6.iframe内联框架

<!-- iframe:内联框架
    src:引用网站地址
    w-h:宽-高
    name:框架标识名

    -->
<iframe src="http://www.baidu.com" frameborder="0"
        name="mainframe" width="1000px" height="500px"></iframe>

7.表单

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lWAZPbOY-1651757973418)(C:\Users\15751083927\AppData\Roaming\Typora\typora-user-images\image-20220427131745952.png)]

<!--
    表单:
    method:
        get方式提交:我们可以在url中看到我们提交的信息,不安全,高效
        post:比较安全,传输大文件
    name:表单元素的名称
    maxlength:最长能写几个字符
    size:文本框长度
    value:默认初始值
	disabled:禁用,针对所有的input,不能提交到后台
	readonly|:只读,只针对输入框,可以提交到后台
	hidden:隐藏
	placeholder:提示信息
	required:非空判断
    -->
<!--action 表单提交的位置,可以是网站,也可以是一个请求处理地址-->



<!--提交数据form表单
	type属性:控制输入框的样式
	name属性:分组,携带数据的key   key:value
	value:选择框提交数据时的值,输入框的默认值

form表单触发提交数据的操作,必须写在form表单标签里面,写在外面就是普通按钮
提交:input submit
     button
-->
<form action="http://localhost:9696">
    用户名:<input type="text" name="username">
    密&nbsp码:<input type="password" name="password">
    <input type="radio" name="sex" value="boy"><input type="radio" name="sex" value="girl"><input type="checkbox" name="hobby" value="sleep">睡觉
    <input type="checkbox" name="hobby" value="good">大优秀
    <input type="checkbox" name="hobby" value="love">爱你
    <input type="submit">
</form>



<form action="我的第一个网页.html" method="post">
    
<!--文本输入框:<input type="text">-->
    <p>名字:<input type="text" name="username" placeholder="请输入"></p>
    <p>密码:<input type="password" name="pwd" required></p>

<!--单选框:radio
        value:单选框的值
        name:分组
        checked:默认选中
            -->
    <p>性别:
        <input type="radio" value="" name="sex" checked><input type="radio" value="" name="sex"></p>
<!--多选框:<input type="checkbox">
        value:值
        name:分组
-->
    <p>爱好
        <input type="checkbox" value="sleep" name="hobby">睡觉
        <input type="checkbox" value="eat" name="hobby" checked><input type="checkbox" value="game" name="hobby">游戏
        <input type="checkbox" value="chat" name="hobby">聊天
    </p>

<!--按钮-->
    <p>按钮
        <input type="button" name="btn1" value="点击变长">
        <input type="image" src="../resources/images/A-女白.png">
    </p>


<!--下拉框-->
    <p>下拉框
        <select name="列表名称" id="">
            <option value="china">中国</option>
            <option value="荷兰">荷兰</option>
            <option value="美国">美国</option>
            <option value="朝鲜">朝鲜</option>
        </select>
    </p>

<!--文本域-->
    <p>反馈:
        <textarea name="textarea" cols="30" rows="10">文本内容</textarea>
    </p>

<!--文件域  <input type="file" name="files">
        上传文件-->
    <p>
        <input type="file" name="files">
        <input type="button" value="上传" name="upload">
    </p>

<!--邮箱验证-->
    <p>邮箱:
        <input type="email" name="email">
    </p>
    
<!--url-->
    <p>url
        <input type="url" name="url">
    </p>
    
<!--数字-->
    <p>数字
        <input type="number" max="100" min="10" step="1">
    </p>

<!--滑块-->
    <p>滑块
        <input type="range" name="voice" min="0" max="100" step="2">
    </p>
    
<!--增强鼠标可用性
             <label for="mark">你点我试试</label>
             自动锁定id="mark" 的元素-->
    <p>
        <label for="mark">你点我试试</label>
        <input type="text" id="mark">
    </p>

<!--搜索框-->
    <p>搜索
        <input type="search" name="search">
    </p>
    
<!--reset:重置-->
    <input type="submit" value="提交">
    <input type="reset" value="重置">

8.特殊符号

空格:&nbsp
大于号:&lt
小于号:&gt
&符号:&amp

css3

引入

1.选择器

/*标签选择器*/
h1{
    color: red;
}
/*类选择器   可重复使用*/
.h2_x{
    color: green;
}
/*id选择器   全局唯一  优先级:id > class > 标签*/
#h3_id{
    color: #f18dfa;
}

2.层次选择器

  1. 后代选择器

  2. 子选择器

  3. 相邻兄弟选择器

  4. 通用选择器

/*类选择器   可重复使用*/
.h2_x{
    color: green;
}
/*id选择器   全局唯一  优先级:id > class > 标签*/
#h3_id{
    color: #f18dfa;
}
/*后代选择器  body 里面的p 通通使用该属性*/
body p{
    background-color: #f18dfa;
}
/*子选择器  body 的下一代是p标签 通通使用该属性*/
body>p{
    background-color: green;
}
/*相邻兄弟选择器 同辈 选一个 下一个p使用该属性*/
.active + p{
    background-color: cyan;
}
/*通用选择器 同辈下面所有  p使用该属性*/
.active ~ p{
    background-color: #0526ff;
}

3.属性选择器

/*存在id属性的元素  
    a[id]{} 或者 a[属性名=属性值]{}
    *= :是包含元素   a[属性名*=属性值]{}
    选中href中以http开头的元素:a[href^=http]{}
    选中href中以com结尾的元素:a[href$=com]{}
*/
a[class *= links]{
    background: chartreuse;
}

4.美化网页元素

/*恢复原始状态*/
body,a,li{
    margin: 0;
    padding: 0;
    text-decoration: none;
}

4.1.字体

/*
font-size:字体大小
font-family:字体
font-weight:字体粗细
color:字体颜色
*/

4.2 文本

opacity:透明度
text-align:对齐方式
text-indent:首行缩进
line-height:行高,和块的高度
text-decoration:underline  :下划线

4.3超链接伪类+阴影

a{
    text-decoration: none; /*去除下划线*/
    color: chartreuse;
}
a:hover{ /*鼠标激活*/
    color: green;
}
a:active{ /*鼠标按住的状态*/
    color: cyan;
}
#price{/*text-shadow: 阴影颜色  水平偏移  垂直偏移  阴影半径*/
    text-shadow: #f50000 10px 10px 10px;
}

4.4 列表

.nav{
    background: #97979a;
    width: 300px;
}
.title{
    font-size: 18px;
    font-weight: bold;
    text-indent: 1em;
    line-height: 35px;
    background: red;
}
/*ul li*/
/*
list-style:none :去掉原点
          circle:空心圆
          decimal:数字
          square:正方形
*/
/*ul{*/
/*    background: #97979a;*/
/*}*/
ul li{
    height: 30px;
    list-style: none;
    text-indent: 1em;
}
a{
    text-decoration: none;
    font-size: 14px;
    color: black;
}
a:hover{
    color: green;
}

4.5 背景

div{
    width: 90%;
    height: 700px;
    border: 2px solid red;
    background-image: url("../resources/images/A-女白.png");/*默认是全平铺的*/
    background-size: 100%;
}
.nav1{
    /*background: 颜色  图片  图片位置  平铺方式*/
    background: red url("../resources/images/A-女白.png") 270px 100px no-repeat;
}

4.6 盒子模型

margin:外边框

padding:内边框

border:边框

margin: 0 auto;  居中
margin:上 下 左 右

4.7 display和浮动

/*
block:块元素
inline:行内元素
inline-block:是块元素,但是可以内联,在一行
float:左右浮动
*/
div{
    width: 100px;
    height: 100px;
    border: 2px solid red;
    display: inline-block;
    float: left;
}
span{
    width: 100px;
    height: 100px;
    border: 2px solid red;
    display: inline-block;
}

4.8 父级边框塌陷发现问题

  • 增加父级元素高度

  • 增加一个新的div标签清除浮动

  • overflow:hidden :在父级元素增加

  • 父级元素增加子类after

    • #father:after{
      	content:"";
      	display:block;
      	clear:both;
      }
      
clear right:右侧不允许有浮动元素
clear left:左侧不允许有浮动元素
clear both:不允许有浮动元素

4.9 定位

相对定位:相对于原来的位置,进行偏移

/*相对定位*/
position: relative;
left:100px;
right:100px;
......

绝对定位

/*    绝对定位*/
    position: absolute;

固定定位

/*    固定定位*/
    position: fixed;
#content{
    width: 200px;
    padding: 0px;
    margin: 0px;
    overflow: hidden;  # 防止溢出
    font-size: 12px;
    line-height: 25px;
    border: 2px #000 solid;
}
img{
    width: 200px;
    height: 200px;
}
ul,li{
    padding: 0px;
    margin: 0px;
    list-style: none;
}
/*父级元素相对定位*/
#content ul{
    position: relative;
}
.tipText,.tipBg{
    position: absolute;
    width: 200px;
    top: 180px;
}
/*.tipText{*/
/*    color: white;*/
/*}*/
.tipBg{
    background: black;
    /*透明度*/
    opacity: 0.5;
}

4.10 z-index

控制层级

body{
    margin: 0;
    padding: 0;
}
.shadow{
    position: fixed;
    top:0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: rgba(0,0,0,0.5);  # color+透明度
    z-index: 88;
}
.mode{
    position: fixed;

    height: 200px;
    width: 200px;
    background-color: aliceblue;
    text-align: center;
    left: 50%;
    margin-left: -100px;
    /*值越大,层级越高*/
    z-index: 100;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rHdQMKd2-1651757973419)(C:\Users\15751083927\AppData\Roaming\Typora\typora-user-images\image-20220502202749966.png)]

4.11 动画

网页搜索关键词:

  • html5 xxx
  • 源码之家等等

js

是一门世界上最流行的脚本语言

一定要精通js

1.快速入门

1.1引入javascript

内部:

<script>
  alert("hello world");
</script>

外部:

<script src="js/ljb.js"></script>

1.2基本语法入门

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vWmClDPB-1651757973420)(C:\Users\15751083927\AppData\Roaming\Typora\typora-user-images\image-20220430161657245.png)]

// 1、定义变量   变量类型  变量名=变量值
var num = 1;
// 2、条件控制
if (2>1 && 2>0){
    alert("true");
}else{
    alert("false");
}
// console.log(num)  在浏览器控制台打印变量

1.3数据类型

数值、文本、图形、音频、视频。。。

number

js不区分小数和整数,Number

123 //整数
123.3 //浮点数
1.123e3 //科学计数法
-99 //复数
NaN //not a number
Infinity  //表示无限大

字符串

‘abc’ “abc”

布尔值

true false

比较运算

=== 绝对等于(类型一样,值一样,结果为true)(使用===,不使用==)

须知:

  • NaN === NaN 这个与所有的数值都不相同,包括自己
  • 只能通过isNaN(NaN) 来判断这个数是不是NaN

数组

var arr=[1,23,3,4,'hello'];

取数组下标越界不会报错,会 undefined

对象

var person{
    name:'ljb',
    age:18
}

//去对象值
person.name;

1.4严格检查模式

<script>
  'use strict';  严格检查模式,预防js的随意性导致一些问题,放在第一行
  let i = 0;  局部变量尽量使用let
</script>

2.数据类型

2.1字符串

  1. 正常字符串我们使用 单引号 或者双引号包裹
  2. 注意转义字符\
  3. 多行字符串编写
var msg = 
    `
    李锦彪
    黄欣宇
    锦欣宇
    ` //多行字符,tab键上面
  1. 模板字符串
//模板字符串
let name = '李锦彪';
let age = 18;
let mg = `名字是:${name},年龄是:${age}`
alert(mg)
  1. 字符串的可变性 >>不可变
  2. 大小写转换
//注意这里是方法,不是属性
student.toUpperCase()
student.toLowerCase()
  1. student.indexOf(‘f’) >>返回字符下标
  2. substring
student.substring(1)  //从第一个字符串截取到最后一个
student.substring(1,3)  //截取[1,3)

2.2数组

Array可以包含任意的数据类型

var arr = [1,2,3,4];
  1. 长度
arr.length

注意:加入给arr.length赋值,数组大小会发生变化、如果赋值过小元素会丢失

  1. indexOf(),通过元素下标索引
indexOf(2//从一开始
2

字符串的“1”和数字1是不同的

  1. slice()截取Array的一部分,返回一个新的数组,类似于substring

  2. push(),pop()尾部

push:压入到尾部
pop:弹出尾部的元素
  1. unshift()、shift()头部
unshift():压入到头部
shift():弹出头部的元素
  1. 排序sort()
arr.sout()
  1. 元素翻转reverse()
arr.reverse()
  1. concat()
拼接
arr1 = arr.concat([7,8])  //返回一个新的数组,原数组不变
[1,2,3,4,7,8]

  1. 连接符join
arr.join('-')
1-2-3-4
  1. 多维数组
和java类似

数组:存储数据(如何存、如何取、方法都可以自己实现!)

2.3对象

若干个键值对

var 对象名={
    属性名:属性值,
    属性名:属性值,
    属性名:属性值
}
//定义 一个person对象,有三个属性
var person={
    name: '李锦彪',
    age: 18,
    email: '2777500@qq.com'
}

js中的对象使用大括号标起来,以键值对描述属性,使用‘,’隔开,最后一个不加‘,‘

1、对象赋值

person.name=‘李锦彪’

2、使用一个不存在的对象属性,不会报错 undefined

3、动态的删减属性,通过delete删除对象属性

delete person.name
true
person

4、动态的添加,直接给新的属性添加值即可

person.name = '李锦彪'

5、判断属性值是否在这个对象中 xxx in xxx

'age' in person
true
//继承
'toSring' in person
true

6、判断一个属性是否在这个对象自身拥有的hasOwnProperty()

person.hasOwnProperty('toString')
false
person.hasOwnProperty('age')
true

2.4流程控制

if判断

var age = 14;
if (age > 18){
    alert('heihei')
}
else{
    alert('娃娃')
}
while (age < 1){
    age -= 1;
}
for (let i = 0; i < age; i++) {
    alert(i);
}

2.5 map和set

Map

var map = new Map([['李锦彪',123],['黄欣宇', 456], ['锦欣宇', 789]]);
var name = map.get('李锦彪');//获得值
map.set('admin', 123456);//新增或修改
map.delete('admin');//删除值
console.log(name);

Set:无序不重复的集合

var set = new Set([3,1,12,3,3,3,4,4]); //去重
set.add(5);//添加值
set.delete(1);//删除值
set.has(1); //是否包含某个元素

2.6 iterator

遍历数组

//通过for of/ for in下标     实现迭代
var arr = [1,2,3,4,5];
for(var x of arr){
    console.log(x);
}

遍历Map

var map = new Map([['李锦彪',123],['黄欣宇', 456], ['锦欣宇', 789]]);
for(let x of map){
    console.log(x);
}

遍历Set

var set = new Set([3,1,12,3,3,3,4,4]);
for(let x of set){
    console.log(x);
}

3.函数

3.1定义函数

定义方式一

绝对值函数

function abs(x)
{
    if(x>=0){
        return x;
    }else{
        return -x;
    }
}

一旦执行到return代表函数结束,返回结果;

如果没有执行return ,函数执行完也会返回结果,结果就是undefined

定义方式二

var abs = function(x){
    if(x>=0){
        return x;
    }else{
        return -x;
    }
}

function(x){…} 这是一个匿名函数,但是可以把结果赋值给abs,通过就可以调用函数

方式一和方式二等价

调用函数

abs(10);

参数问题:可以传递任意一个函数,也可以不传递参数

var abs = function (x) {
    //手动抛出异常
    if (typeof x !== 'number'){
        throw 'not a number';
    }
    if (x >= 0){
        return x;
    }else{
        return -x;
    }
}

arguments

arguments是一个js免费赠送的关键词

代表,传递进来的所有参数,是一个数组!

var abs = function (x) {
    for (let i = 0; i < arguments.length; i++) {
        console.log(arguments[i]);
    }
    if (x >= 0){
        return x;
    }else{
        return -x;
    }
}

问题:arguments包含所有的参数,我们有时候想使用多余的参数来进行附加操作,需要排除已有参数~

rest

获取除了已经定义的参数之外的参数

var abs = function (x,y, ...rest) {
    console.log('x->'+x);
    console.log('y->'+y);
    console.log(rest);//返回数组
}

rest参数只能写在后面,必须用…标识

3.2 变量的作用域

  • 在js中,var定义变量实际是有作用域的

  • 假设在函数体中声明,则在函数外无法使用

  • 如果两个函数使用了 相同的变量名,只需要重新定义即可

  • 内部函数可以访问外部成员,反之则不行

  • 函数查找变量从自身开始函数开始,有 ,假设外部存在函数内部同名的变量,函数会使用内部变量,屏蔽外部变量

  • 变量应放在函数头部

  • 全局变量

全局对象 window

'use strict'
var x = 'xxx';
alert(x)
alert(window.x)
var old_alert = window.alert;

window.alert = function (){
    
};
//发现alert()失效了
window.alert(123);

//恢复
window.alert = old_alert;
window.alert(456);

js实际上只有一个全局作用域,任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找,如果在作用域没有找到,报错 RefrenceError

规范

//唯一全局变量
var ljb = {};

//定义全局变量
ljb.name = '李锦彪';
ljb.add = function (a, b){
    return a + b;
}

局部作用域let

for (let i = 0; i < 10; i++) {
    
}

出了for循环就无法使用 i

建议使用let定义局部变量

常量const

const pi = 3.14; //只读

3.3 方法

var ljb = {
    name: '李锦彪',
    birth: 2000,
    age: function (){
        //今年-出生年
        var now = new Date().getFullYear();
        alert(now - this.birth);
    }
}
//属性
ljb.name;
//方法一定要加()
ljb.age();

apply

function  getAge(){
    //今年-出生年
    var now = new Date().getFullYear();
    return now - this.birth;
}
var ljb = {
    name: '李锦彪',
    birth: 2000,
    age: getAge()
}
getAge.apply(ljb,[]); //this.指向了ljb,参数为空

4 内部对象

标准对象

4.1 Date

var now = new Date();
now.getFullYear();//年
now.getMonth();//月  0~11 代表月
now.getDate();//日
now.getDay();//星期几
now.getHours();//时
now.getMinutes();//分
now.getSeconds();//秒

now.toLocalString();//本地时间  2022/5/3 下午15:36:15

now.getTime(); //时间戳  全世界统一  1970 1.1 0:00:00

4.2 json

是一种轻量级的数据交换格式

在js中一切皆为对象,任何js支持的类型都可以使用json来表示;

格式:

  • 对象都用{}
  • 数组都用[]
  • 所有的键值对都用 key:value
//字典转换为json对象
var j = JSON.stringify(ljb);
alert(j);
//json解析,参数为json字符串
var obj = JSON.parse('{"name":"李锦彪","age":18}');

4.3 Ajax

  • 原生的js写法,xhr异步请求
  • jQury 封装好的方法 $(“#name”).ajax(“”)
  • axios请求

4.4 正则 RegExp

//一般写法
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$"); //只能是英文字母,数字和_,并且首字母是英文字母,长度6-12
var s = 'hello';
reg1.test(s);
false
//简化写法
var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/;
reg2.test(s);
false

//-------g表示全局----------
s.match(/o/g); //查找所有得到o
s.search(/h/g); //查找字符串中符合正则表达式的内容位置,返回第一个匹配到的元素的索引位置,加不加g效果想相同
s.split(/o/g); //按照正则表达式进行切割,得到一个新值,原数据不变
s.replace(/o/g, "s");  //对字符串按照正则进行替换    全局匹配
s.replace(/o/gi, "s"); //对字符串按照正则进行替换    全局匹配,不区分大小写

4.5 Math()对象

Math.abs(x); 返回绝对值
Math.exp(x); 返回e的指数
Math.floor(x); 小数部分直接舍去
Math.log(x);  返回数的自然对数(底为e)
Math.max(x,y);  
Math.min(x,y);
Math.pow(x,y);
Math.random();  返回0~1之间的随机数
Math.round(x);  把数 四舍五入  为最接近的数
Math.sin(x);
Math.sqrt(x);  返回数的平方根
Math.tan(x);

5 面向对象

var ljb = {
    name: '李锦彪',
    birth: 2000,
    age: function (){
        //今年-出生年
        var now = new Date().getFullYear();
        return now-this.birth;
    }
}
var hxy = {
    name: '黄欣宇'
}
//原型对象
hxy.__proto__ = ljb;

5.1 class继承

class 关键字

  1. 定义一个类,属性,方法

    //定义一个学生的类
    class Student{
        constructor(name) { //构造方法
            this.name = name;
        }
        //方法
        hello(){
            alert('hello方法');
        }
    }
    var ljb = new Student('李锦彪');
    ljb.hello();
    
  2. 继承

    //定义一个学生的类
    class Student{
        constructor(name) {
            this.name = name;
        }
        //方法
        hello(){
            alert('hello方法');
        }
    }
    
    class xiaoStudent extends Student{
        constructor(name, grade) {
            super(name);
            this.grade = grade;
        }
        mygrade(){
            alert('黄欣宇');
        }
    }
    
    var ljb = new Student('李锦彪');
    var hxy = new xiaoStudent('黄欣宇', 450);
    

6 操作BOM对象(重点)

BOM:浏览器对象模型

6…1 window.Navigator

(不建议使用)

Navigator:封装了浏览器的信息

大多数时候,我们不会使用navigator对象,因为会被人修改!

不建议使用这些属性来判断和编写代码

6.2 screen

screen.width
1536
screen.height
864

6.3 location(重要)

location 代表当前页面的URL信息

location.host:主机
location.href:连接
location.protocol:协议
location.reload:f reload() //刷新网页
//设置新的地址
location.assign('https://www.baidu.com');

6.4 document

document代表当前的页面,HTML ,DOM文档树

document.title
'百度一下,你就知道'
document.title='李锦彪'
'李锦彪'

6.5 获取具体的文档树节点

<dl id="app">
    <dt>name</dt>
    <dd>李锦彪</dd>
    <dd>黄欣宇</dd>
    <dd>锦欣宇</dd>
</dl>

js中:
var dl = document.getElementById('app');

6.6 获取cookie

document.cookie
''

6.7 劫持cookie

www.taobao.com (登录淘宝,天猫也自动登录)

<script src="aa.js"> </script>
//恶意人员:获取你的cookie上传到 它服务器

服务器端可以设置cookie:httpOnly (只读)

6.8 history

代表浏览器记录

history.back(); //后退
history.forward(); //前进

6.9 提示框

prompt('你要冲多少?', '李锦彪');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0QJvARtG-1651757973421)(C:\Users\15751083927\AppData\Roaming\Typora\typora-user-images\image-20220503204715515.png)]

6.10 计时器相关(相对重要)

//概念
var t = setTimeout('JS语句', 毫秒); //第一个参数js语句多数是写一个函数,不然一般js语句到这里就执行了,先用函数封装一下,返回值t其实就是一个id值(浏览器给你自动分配的)
------------------------------------------
var a = setTimeout(function (){confirm("are you sure")}, 3000); //3 秒后执行函数
clearTimeout(a)  //3秒内执行,停止执行函数
-------------------------------------------
var a = setInterval(function (){confirm("are you sure")}, 3000);  //每隔3秒执行一次
clearInterval(a)//清除计时器

7. DOM (重点)

  • 更新:更新DOM节点
  • 遍历DOM节点:得到DOM节点
  • 删除:删除一个DOM节点
  • 添加:添加一个新的节点

文档对象模型

  • 文档节点(document对象):代表整个文档
  • 元素节点(element对象):代表一个元素(标签)
  • 文本节点(text对象):代表元素(标签)中的文本
  • 属性节点(attribute对象):代表一个属性,元素(标签)才有属性
  • 注释是注释节点(comment对象)
  • js 可以通过DOM创建动态的HTML
  • js 能够改变页面中所有的HTML属性
  • js 能够改变页面中所有的HTML元素
  • js 能够改变页面中所有的css样式
  • js 能够对页面中的所有事件作出反应(鼠标点击事件,鼠标移动事件等)

7.1 查找标签

直接查找

//对应css选择器

var btn  = document.getElementsByClassName('btn'); //根据class属性获取(可以获取多个元素,所以返回的是一个数组)
var btn1  = document.getElementById('d1'); // 根据ID获取一个标签 
var btn2  = document.getElementsByTagName(a);  //根据标签名获取标签合集,返回一个数组    获取a标签

间接查找

var btn  = document.getElementsByClassName('btn');
var j1 = btn.parentElement;  //父节点标签元素
var j2 = btn.children;  //所有字标签
var j3 = btn.firstElementChild;  //第一个字标签元素
var j4 = btn.lastElementChild;  //最后一个字标签元素
var j5 = btn.nextSibling;  //下一个兄弟标签元素
var j6 = btn.previousSibling;  //上一个兄弟标签元素

7.2 更新DOM节点

dl.innerText;  //获得值
dl.innerText = '李锦彪';  //修改值
dl.style.xxx = xxx;  //改变样式

7.3 删除DOM节点

步骤:先获取父节点,在通过父节点删除自己

<div class="cl1">
    <p id="p1">李锦彪</p>
    <h1>黄欣宇</h1>
</div>
----------------------------------------
var p1 = document.getElementById('p1');
var father = p1.parentElement;
father.removeChild(father.children[0])

7.4 插入节点

我们获得了某个DOM节点,假设这个DOM节点是空的,我们通过innerHTML就可以增加一个元素了,但是这个DOM节点已经存在元素了,我们就不能这么干!会产生覆盖

追加:

var d1 = document.getElementById('d1');
d1.appendChild(js);  //追加js节点

创建标签

var dd = document.getElementById('dd');

var newp = document.createElement('p'); //创建一个p标签
newp.id = 'newp';
newp.innerText = '人才啊';
dd.appendChild(newp);
----------------------------
//创建一个标签节点
var myScript = document.createElement('script');
myScript.setAttribute('type', 'text/javascript');

7.5 文本操作

d1.innerText = "<a href='www.baidu.com'>百度</a>";
d1.innerHTML = "<a href='www.baidu.com'>百度</a>";  //能够识别标签

7.6 属性操作

d1.setAttribute('age', 18);
d1.removeAttribute('age');

7.7 class的操作

var d = document.getElementById('oo');
d.classList;//获得这个标签的class属性的所有的值
d.classList.add('xx2'); //添加class值
d.classList,remove('xx2');  //删去class值
d.classList.contains('xx2');  //判断是否有xx2class属性。有返回true,否则false
d.classList.toggle('xx2'); //有就删除class  xx2,没有就添加 

7.8 事件

onclick  //当用户点击某个对象时调用的事件句柄
ondblclick  # 当用户双击某个事件时调用的事件句柄


================================================
onfocus  # 元素获得焦点
onblur  //# 元素失去焦点  应用场景:用于表单验证,用户离开某个输入框时,代表已经输完,我们可以对他进行验证
************************************************
//onfocus 事件获取光标
var inp = document.getElementById('username');
inp.onfocus = function (){
    var d = document.getElementById('d1');
    d.style.backgroundColor = 'pink';
}
//失去光标触发的时间
inp.onblur = function (){
    var d = document.getElementById('d1');
    d.style.backgroundColor = 'green';
}
************************************************
================================================   
    
onchange  # 域的内容被改变  应用场景:通常用于表单元素,当元素内容被改变时触发。(select联动)
*************************************************
<select name="select" id="select">
    <option value="ljb">李锦彪</option>
    <option value="jxy">锦欣宇</option>
    <option value="hxy">黄欣宇</option>
</select>
------------------------------------------------
//onchange 事件
var s = document.getElementById('select');
s.onchange = function (){
    //this.options:拿到所有标签   this.selectedIndex:拿到选中的标签
    console.log(this.options[this.selectedIndex].innerText+'好好看');
}

//onchange  input事件实时获取文本框内的内容
inp.onchange = function (){
    console.log(this.value);
}
*************************************************    
================================================    
    
onkeydown  //# 某个键盘按键被按下    应用场景:当用户在最后一个输入框按下回车按键时,表单提交
onkeypress  # 某个键盘按键按下并松开
onkeyup  # 某个键盘按键被松开
onload  # 一张页面或一幅画像完成加载
onmousedown  #鼠标按钮被按下
onmousemove  # 鼠标被移动
onmouseout  # 鼠标从某元素离开
onmouseover  # 鼠标移到某元素之上

onselect  # 在文本框中的文本被选中时发生

方式一

<div class="c1" id="d1" onclick="f1();">
    <p>李锦彪</p>
</div>
---------------------------------
function f1(){
    var d = document.getElementById('d1');
    d.style.backgroundColor = 'yellow';
}

方式二

流行

<div class="c1" id="d1">
    <p>李锦彪</p>
</div>
-----------------------------------------
var d = document.getElementById('d1');
d.onclick = function (){
    d.style.backgroundColor = 'yellow';
}

方式三

//this 表示当前标签
<div class="c1" id="d1" onclick="f1(this);">
    <p>李锦彪</p>
</div>
---------------------------
function f1(this){
	this.style.backgroundColor = 'yellow';
}

8 操作表单(验证)

表单是什么:

  1. 文本框 test
  2. 下拉框 select
  3. 单选框 radio
  4. 多选框 checkbox
  5. 隐藏域 hidden
  6. 密码框 password

获取提交的信息 加密

//引入md5 加密算法
<script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js"></script>


<!--
表单绑定提交事件
onsubmit = 绑定一个提交检测的函数,truefalse
将这个结果返回给表单,使用onsubmit接收
onsubmit="return f1()"  //return false 阻止提交, true同意提交
-->
<!--<form action="#" method="post" onsubmit="return f1()">-->
<form action="#" method="post">
    <p>
        用户名: <input type="text" name="username" id="username" required>
    </p>
    <p>密码:
<!--        隐藏提交-->
        <input type="password" id="input-password" required>
        <input type="hidden" id="md5-password" name="password">
    </p>

<!--    绑定事件-->
    <button onclick="f1()">提交</button>
</form>

---------------------------------------------------
// var input_text = document.getElementById('username');
// //得到输入框的值
// input_text.value;
// //修改输入框的值
// input_text.value = '123';

// var boy = document.getElementById('boy');
// var girl = document.getElementById('girl');
// //对于单选框、多选框等固定的值,.value 只能取到当前的值
// console.log(boy.checked); //查看返回结果 是否为true
// console.log(girl.checked); //查看返回结果

function f1(){
    var name = document.getElementById('username');
    var pswd = document.getElementById('input-password');
    var md5_pswd = document.getElementById('md5-password');
    md5_pswd.value = md5(pswd.value);

    return false;
}

9 jQuery

jQuery库:里面存在大量的js函数

jQuery对象和DOM对象

jQuery找到的标签是对象称为---jQuery对象
原生js找到的对象称为---DOM对象
DOM对象只能只用dom对象的方法
jQuery对象也是,不能使用dom对象的方法

转换
jQuery对象转dom对象 -- jQuery对象[0]  实例:$('#id1')[0];
dom对象转jQuery对象 -- $(dom对象);

获取jQuery

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--
公式:$(selector).action()
-->
<a href="" id="test-jquery">点我</a>

</body>
<script type="text/javascript" src="lib/jquery-3.6.0.js"></script>
<script type="text/javascript" src="js/ljb.js"></script>
</html>

-------------------------------------------------------
'use strict'

//选择器就是css的选择器
$('#test-jquery').click(function (){
    alert('hello jquery');
});

9.1 jQuery选择器

9.1.1 基本选择器
id选择器
$('#d1')

class选择器
$('.c1')

标签选择器
$('标签名')---$('div')

选择器找到的可能是多个标签,会放到数组里,但还是jQuery对象,能够直接使用jQuery的方法,意思是找到的所有标签进行统一设置,如果要单独设置选中的所有标签中的某个标签,可以通过索引取值的方式找到,通过索引取值拿到的标签,是个dom对象,
9.1.2 基本筛选器
<ul>
    <li>李锦彪</li>
    <li>锦欣宇</li>
    <li id="d3">黄欣宇</li>
    <li>憨熊</li>
    <li id="d5">大帅锅</li>
    <li>人才呦</li>
</ul>


:first  -- 实例:$('li:first')
:last
:eq(索引值) -- 实例:$('li:eq[2]')  支持负数
:odd  -- 找到所有奇数
:even -- 找到所有偶数
:gt(index) -- 匹配所有大于给定索引值的元素
:lt(index) -- 匹配所有小于给定索引值的元素
:not(元素选择器) -- 移出所有满足not条件的标签
:has(元素选择器) -- 选取所有包含一个或多个标签在其内的标签(指的是后代元素中)
9.1.3 属性选择器
$('[title]')
$('[title=xx]')

//多用于input标签
$('input[type=xx]')

9.1.4 表单筛选器
:text
:checkbox
:password
:file
:radio
:submit
:reset
:button

$(':enabled')  //可以用的
$(':checked')  // 选中的标签
$(':selected')  // 下拉框选中的标签

9.2 事件

//当网页加载完毕之后,响应事件
$(function (){
    $('#d1').mousemove(function (e){
        $('#dd').text('x:'+e.pageX+'y:'+e.pageY);
    });
});
$('#d1').mouseup(function (e){
    $('#dd').text('李锦彪');
});

9.3 筛选器方法

下:
$('#d1').next();  找到下一个兄弟标签
$('#d1').nextAll();  找到下面所有的兄弟标签
$('#d1').nextUntil('#dd3');  直到找到 id 为 dd3 的标签
上:
$('#d1').prev();
$('#d1').prevAll();
$('#d1').prevUntil('d0');
父亲元素:
$('#d1').parent()
$('#d1').parents()
$('#d1').parentsUntil('body')

a charset=“UTF-8”>
Title

点我

‘use strict’

//选择器就是css的选择器
$(‘#test-jquery’).click(function (){
alert(‘hello jquery’);
});


### 9.1 jQuery选择器

#### 9.1.1 基本选择器

```js
id选择器
$('#d1')

class选择器
$('.c1')

标签选择器
$('标签名')---$('div')

选择器找到的可能是多个标签,会放到数组里,但还是jQuery对象,能够直接使用jQuery的方法,意思是找到的所有标签进行统一设置,如果要单独设置选中的所有标签中的某个标签,可以通过索引取值的方式找到,通过索引取值拿到的标签,是个dom对象,
9.1.2 基本筛选器
<ul>
    <li>李锦彪</li>
    <li>锦欣宇</li>
    <li id="d3">黄欣宇</li>
    <li>憨熊</li>
    <li id="d5">大帅锅</li>
    <li>人才呦</li>
</ul>


:first  -- 实例:$('li:first')
:last
:eq(索引值) -- 实例:$('li:eq[2]')  支持负数
:odd  -- 找到所有奇数
:even -- 找到所有偶数
:gt(index) -- 匹配所有大于给定索引值的元素
:lt(index) -- 匹配所有小于给定索引值的元素
:not(元素选择器) -- 移出所有满足not条件的标签
:has(元素选择器) -- 选取所有包含一个或多个标签在其内的标签(指的是后代元素中)
9.1.3 属性选择器
$('[title]')
$('[title=xx]')

//多用于input标签
$('input[type=xx]')

9.1.4 表单筛选器
:text
:checkbox
:password
:file
:radio
:submit
:reset
:button

$(':enabled')  //可以用的
$(':checked')  // 选中的标签
$(':selected')  // 下拉框选中的标签

9.2 事件

//当网页加载完毕之后,响应事件
$(function (){
    $('#d1').mousemove(function (e){
        $('#dd').text('x:'+e.pageX+'y:'+e.pageY);
    });
});
$('#d1').mouseup(function (e){
    $('#dd').text('李锦彪');
});

9.3 筛选器方法

下:
$('#d1').next();  找到下一个兄弟标签
$('#d1').nextAll();  找到下面所有的兄弟标签
$('#d1').nextUntil('#dd3');  直到找到 id 为 dd3 的标签
上:
$('#d1').prev();
$('#d1').prevAll();
$('#d1').prevUntil('d0');
父亲元素:
$('#d1').parent()
$('#d1').parents()
$('#d1').parentsUntil('body')
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值