web开发 之 HTML、CSS、JavaScript、以及JavaScript的高级框架Vue(学习版1)

一、Web网站的开发流程

         我们在访问的网站的时候,一般就是在浏览器的网址栏里输入对应的域名,再敲个回车,我们就可以访问到我们想要的网站(比如京东)。 

        这是为什么呢?我们访问的浏览器是一个程序,京东也是一个程序,只是京东在人家电脑上运行着,我们只是远程访问了人家的前端页面。

        我们根据下图来讲解一下web网站的工作流程:

f04bb3fcff514a1893cf799736e48391.png

        我们在浏览器输入我们想要查找的域名,回车(搜索)后,会请求前端服务器,前端服务器接受到请求后会把相对应的前端代码返回给浏览器,浏览器会自动解析前端代码(因为内置了解析引擎),展示出页面效果。

        前端代码里由一句代码会是访问后端服务器的代码,然后浏览器会根据这个路径去(http://localhost:8080/item/selectAll)访问后端浏览器,后端浏览器又会去请求数据库服务器的数据,后端服务器又会将数据再返回给浏览器。

二、web前端开发 

(一)总述:

        我们所看到的网页都是前端代码浏览器的转化(解析和渲染)后所展现出来的。

58b5ce8d97a049838b28e97ca2ced7f4.png

(二)HTML CSS 

1.基础标签&样式 

(1)新浪新闻-标题

什么是HTML?

HTML: HyperText Markup Language,超文本标记语言。

  • 超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。

  • 标记语言:由标签 "<标签名>" 构成的语言

    • HTML标签都是预定义好的 。例如:使用 <h1> 标签展示标题,使用<a>展示超链接,使用<img>展示图片,<video>展示视频。

    • HTML代码直接在浏览器中运行,HTML标签由浏览器解析 。

 

标题排版

4809d4c8d073455a97486985dd0255f6.png

<!-- 文档类型 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <!-- 字符集类型 -->
    <meta charset="UTF-8">
    <!-- 电脑适配(兼容) -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>焦点访谈:中国底气 新思想夯实大国粮仓</title>
</head>
<body>
    <!--
    src:图片资源路径 
    width:宽度 px(像素) % 占父级元素的百分比
    height:高度 px(像素) % 占父级元素的百分比
    alt:图片加载失败时显示的文本
    -->
    <!-- 
    绝对路径:
        磁盘路径:D:\learn\web\img\news_logo.png
        网络路径:https://pics7.baidu.com/feed/f3d3572c11dfa9ec092ecf8a177c720d908fc162.jpeg@f_auto?token=fcab19a61930989e176d8d97fb3c80bd
    相对路径:
        ./同级目录
        ../上一级目录
        ../../上上级目录
    -->

    <!-- 不知道为啥:我的绝对路径显示不出来啥 ,后来发现是因为没有open in default browser-->
    <img src="https://pics7.baidu.com/feed/f3d3572c11dfa9ec092ecf8a177c720d908fc162.jpeg@f_auto?token=fcab19a61930989e176d8d97fb3c80bd" alt="这里是网络路径的图片">
    <img src="D:\learn\web\img\news_logo.png" alt="">
    <img src="./img/news_logo.png" alt="">

</body>
</html>

标题样式

f765e13a2fe740aca1ebda93d73a9251.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>焦点访谈</title>

    <!-- 内嵌式 -->
     <!-- <style>
        /* 标签选择器(或元素选择器) */
        h1{
            color:  rgb(77, 79, 83);
        }

     </style> -->
     
     <!-- 外联式 -->
      <link rel="stylesheet" href="./css/news.css">
</head>
<body>
    <!-- 
    css引入方式:
    行内式
    内嵌式
    外联式 
    -->
    <img src="./img/news_logo.png" alt="">新浪政务 > 正文
    <!-- 行内式 -->
    <!-- <h1 style="color: rgb(77, 79, 83);">焦点访谈</h1> -->
    <h1 >焦点访谈</h1>
    <hr>
    2023年03月02日 21:50 央视网
    <hr>

</body>
</html>

5a439d5d70a34f24809e5528068c7092.png

  

选择器写法示例示例说明
元素选择器元素名称 {...}h1 {...}选择页面上所有的<h1>标签
类选择器.class属性值 {...}.cls {...}选择页面上所有class属性为cls的标签
id选择器#id属性值 {...}#hid {...}选择页面上id属性为hid的标签
分组选择器选择器1,选择器2{...}h1,h2 {...}选择页面上所有的<h1>和<h2>标签
属性选择器元素名称[属性] {...}input[type] {...}选择页面上有type属性的<input>标签
元素名称[属性名="值"] {...}input[type="text"] {...}选择页面上type属性为text的<input>标签
后代选择器元素1元素2{...}form input {...}选择<form>标签内的所有<input>标签

 

标签作用属性/说明
<video>视频标签src:指定视频的url(绝对路径/相对路径)
controls:是否显示播放控件
width:宽度(像素/相对于父元素百分比);备注: 一般width 和 height 我们只会指定一个,另外一个会自动的等比例缩放。
height:高度(像素/相对于父元素百分比);备注: 一般width 和 height 我们只会指定一个,另外一个会自动的等比例缩放。
<img>图片标签src, width,height
<p>段落标签
<br>换行标签
<b> / <strong>加粗<strong> 具有强调语义
<u> / <ins>下划线<ins> 具有强调语义
<i> / <em>倾斜<em> 具有强调语义
<s> / <del>删除线<del> 具有强调语义
字符实体属性/说明
&nbsp;空格
&lt;<
&gt;>

 

 

超链接

0c9348ac7e1944f499e1d8d170112a52.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>焦点访谈</title>

      <link rel="stylesheet" href="./css/news.css">


      <style>
        #time{
            color: rgb(77,88 ,83 );
            font-size: 13px;
        }
        .t{
            font-size: 18px;
        }
        a{
            color: black;
            text-decoration: none;
        }
      </style>
</head>
<body>
    <img src="./img/news_logo.png" alt=""><span class="t"><a href="https://gov.sina.com.cn/" target="_self">晓之女神</a> > 正文</span>
    <h1 >焦点访谈</h1>
    <hr>
    <span class="time" id="time">2023年03月02日 21:50</span> <span><a href="https://news.cctv.com/2023/03/02/ARTIUCKFf9kE9eXgYE46ugx3230302.shtml" target="_blank">性能</a></span>
    <hr>

</body>
</html>

(2)新浪新闻-正文

正文排版

59b7853130454671a494d6b04d893c6d.png

这里代码可以私我查看,应该涉证,审核不通过 

页面布局

69cbaf2b6c074673b5f67717db22f295.png

这里代码可以私我查看,应该涉证,审核不通过  

7d0c9520d3744324b91b860c81355d5a.png

盒子模型

 3c12d785fe7540bb8383990a32da7b9c.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>盒子模型</title>
<style>
    div{
        width: 200px;
        height: 200px;
        box-sizing: border-box;
        background-color: cadetblue;

        padding: 20px; /*内边距*/
        border: 10px solid blue; /*边框*/
        margin: 30px; /*外边距*/
    }
</style>

</head>
<body>
    <div>
    aaaaaaaaaaaa

    </div>
</body>
</html>

ddd693a8abc74d9abc3060c7dbefe4ba.png

盒子的大小,其实就包括三个部分: border、padding、content,而margin外边距是不包括在盒子之内的 

  • 上述的padding、margin属性值,可以是4个值、也可以是两个值、也可以是一个值,具体的含义如下:

  • padding: 20px 20px 20px 20px; -------> 表示上、右、下、左都是20px;

  • padding: 20px 10px; ----------------------> 表示上下是20px,左右是10px;

  • padding: 20px; -----------------------------> 表示上、右、下、左都是20px;

2.表格、表单标签  

标签 

de4e64c5e60448ca89246ac81085ae20.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表格标签</title>
    <style>
        td{
            text-align: center;
        }
    </style>
</head>
<body>

    <table border="1px"  cellspacing="0" width="700px">

        <tr>
            <th>序号</th>
            <th>品牌logo</th>
            <th>品牌名称</th>
            <th>企业名称</th>
        </tr>

        <tr>
            <td>001</td>
            <td><img src="./img/huawei.jpg" alt="" width="100px"></td>
            <td>华为</td>
            <td>华为技术有限公司</td>
        </tr>

        <tr>
            <td>002</td>
            <td><img src="./img/alibaba.jpg" alt="" width="100px"></td>
            <td>阿里</td>
            <td>阿里巴巴集团控股有限公司</td>
        </tr>

    </table>
    
</body>
</html>

表单 

45833ee712334f69b44a53cbf9bdf754.png

get方式: 

a152437be56244c4915be57ad8fa316b.png

post方式:(从后台可以看到数据) 

1506b01ed5c24429a240f6ab42f14030.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表单标签</title>
</head>
<body>
    
    <!-- form
        action:表单数据提交的地址
        method:
            get:将表单数据提交在url地址后面,以问号的形式拼接 ?username=lcc&age=20 默认为get 长度有限制
            post:表单数据提交在请求体中,没有长度限制

        注意:表单中的所有表单项,要想能够正常的采集数据,在提交的时候能提交到服务端,表单项必须指定name属性。 否则,无法提交该表单项。
    -->

    <form action="" method="get">

        <input type="text" name="username">用户名
        <input type="text" name="age">年龄

        <input type="submit" value="提交">

    </form>


</body>
</html>

表单项 

6c96c9df651548bf9ac9192a60735a41.png

18fa4be1f25546588b2932153486e3f4.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表单项</title>
</head>
<body>
    <form action="" method="post">
        姓名:<input type="text" name="username"><br><br>
        密码:<input type="password" name="password"><br><br>

        <!--label标签可以提高用户的体验-->
        <label for="">性别:<input type="radio" name="gender" value="1">男</label>
        <label for=""><input type="radio" name="gender" value="2">女</label><br><br>
    
        爱好:<label for=""><input type="checkbox" name="hobby" value="java">java</label>
        <label for=""><input type="checkbox" name="hobby" value="game">game</label>
        <label for=""><input type="checkbox" name="hobby" value="sing">sing</label><br><br>

        图像:<input type="file" name="image"><br><br>
        生日:<input type="date" name="birthday"><br><br>
        时间:<input type="time" name="time"> <br><br>
        时间日期:<input type="datetime-local" name="datetime"><br><br>

        邮箱:<input type="email" name="email"><br><br>
        年龄:<input type="number" name="age"><br><br>

        学历:<select name="degree" id="">

            <option value="">------请选择------</option>
            <option value="1">小学</option>
            <option value="1">高中</option>
            <option value="1">本科</option>
            <option value="1">硕士</option>
            <option value="1">博士</option>

        </select><br><br>

        描述:<textarea name="description" cols="30" rows="10" id=""></textarea> <br><br>

        <!-- 隐藏 -->
        <input type="hidden" name="id" value="1">
        
        <input type="button" value="按钮">
        <input type="reset" value="重置">
        <input type="submit" value="提交">


    </form>
</body>
</html>

而对于<input type="hidden">,是一个隐藏域,在表单中并不会显示出来,但是在提交表单的时候,是会提交到服务端的。 接下来,我们就点击提交按钮,来提交当前表单,看看提交的数据: 

 

 3.flex布局

 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    #container {
      display: flex;
      /* justify-content: space-between; */ /* 先两边贴边,再平分剩余空间 */
      /* justify-content: flex-start;*/ /* 从头开始排列  */
      /* justify-content: flex-end; */ /* 从尾开始排列 */
      /* justify-content: center; */ /* 居中排列 */
      /* justify-content: space-around; */ /* 两边留白,中间平分,平分剩余空间 */
      flex-direction: row;
      justify-content: space-between;
      background-color: #aeea6a;
      width: 400px;
      height: 300px;
    }

    #container div {
      background-color: #e866ef;
      width: 100px;
      height: 50px; 
    }
  </style>
</head>
<body>
  <div id="container">
    <div>Flex Item</div>
    <div>Flex Item</div>
    <div>Flex Item</div>
  </div>
</body>
</html>

 

属性说明取值含义
display模式flex使用flex布局
flex-direction设置主轴row主轴方向为x轴,水平向右。(默认)
column主轴方向为y轴,垂直向下。
justify-content子元素在主轴上的对齐方式flex-start从头开始排列
flex-end从尾部开始排列
center在主轴居中对齐
space-around平分剩余空间
space-between先两边贴边,再平分剩余空间

如果主轴设置为row,其实就是横向布局。 主轴设置为column,其实就是纵向布局。

 

 

 

(三)JS 

1.js引入方式

 37bcfc0a4de74edda4a63250e4e95edc.png

18a76b831a8149589972b7b2830cd7e2.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-引入方式</title>
    <!-- 内部引入 -->
     <!-- <script>
        alert('hello js');

     </script> -->
     <!-- 外部引入 -->
      <script src="./js/demo1.js"></script>
</head>
<body>
    

</body>
</html>

2.js基础语法

(1)书写语法        

28a34abfeed042a6932b87bc16b8e0ac.png

e2ccb15fcc6d41db9af1900410444388.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js基础语法-输出语句</title>
</head>
<body>
    
</body>

<script>

// <!-- 方式一:弹出警告框 -->
    window.alert('hello js');
    // <!-- 方式二:输出在html页面当中 -->
    document.write('heiheiehi js');

    // <!-- 方式三:输出在控制台 -->
     console.log('yayayayya js');
</script>
   
</html>

9dbee850fc074a989cdac02b6ed235dd.png

9d611b6d6d1745feae89b71a6de7a793.png

(2)变量

e66204e9fbb244509af4b9a092aef6b4.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-基础语法-变量</title>
</head>
<body>
</body>

<script>

    // var变量 作用范围比较大 全局变量,里面的值能更改
    {
        var a = 1;
        var a = '开心就好';
        // alert(a);

    }
    alert(a);


    //let局部变量,不允许重复声明
    {
        let b = 2;
        b=4;
        // let b = 5;//不允许重复声明
        // alert(b);//输出4
    }
    alert(b);//没有弹窗,说明是局部变量


    //const常量,里面的值不能更改
    {
        const c = 3;
        // c=4;//没有弹窗显示,说明常量不能修改
        alert(c);
    }
    // alert(c);//没有弹窗显示,说明是局部变量

</script>

</html>

(3) 数据类型、运算符、流程控制语句

dccd17b310994a2cb67a2cc556f80d4f.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-基础语法-数据类型</title>
</head>
<body>
    
</body>

<script>
    //原始数据类型
    alert(typeof 1);//number
    alert(typeof 3.2);//number

    alert(typeof 'nkas');//string
    alert(typeof 'A');//string

    alert(typeof true);//boolean
    alert(typeof false);//boolean

    alert(null);//null

    var a;
    alert(typeof a);//undefined

</script>
</html>

137a8e87c4104cba99bc6e88a141a2bc.png

d409843b409b435e9275c234b4d92241.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-基础语法-运算符</title>
</head>
<body>
    
</body>

<script>
    // 运算符
    // 这里区别一下== 和===
    // ==会进行类型的转换
    // ===不会进行类型的转换
    var a = 10;
    alert(a == '10');
    alert(a === '10');
    alert(a === 10);

    //类型转换

    //字符串类型转换成数字 :
    alert(parseInt('12')); //12
    alert(parseInt('12as34'));//12
    alert(parseInt("as43"));//NaN no a number

    //其他类型转换成Boolean类型
    // 1.数字转换成boolean类型,除了0和NaN,其他都是true
    if(0){
        alert('0是false');
    }
    if(NaN){
        alert('null是false');
    }
    if(-1){
        alert('除了0和NaN,其他都是true');
    }
    // 2.string转换成boolean类型,除了空字符串,其他都是true
    if(''){
        alert('空字符串转Boolean类型是false');
    }
    if(' '){
        alert('除了空字符串,其他都是true')
    }
    if('bjs'){
        alert('除了空字符串,其他都是true')
    }
    //3.null和undefined转换成boolean类型都是false
    if(null){
        alert('null转化成boolean类型是false');
    }
    if(undefined){
        alert('undefined转化成boolean是false');
    }


</script>
</html>

3.js函数

fd729dfdd86c4dc2a903705a3deeceef.png

f98b9e587e034d44b8b8881a70207b2b.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js函数</title>
</head>
<body>
    
</body>

<script>
    //1.函数声明法一,参数可以不用指定类型
    // function add(a,b){
    //     return a+b;
    // }
    //1.函数声明法二
    var add = function(a,b){
        return a+b;
    }
    //2.函数调用
    var result = add(20,30);
    alert(result);//结果都是50
</script>
</html>

4.js对象

(1)array

cdee7a51396e438d8f865c99612d9d05.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-array数组</title>
</head>
<body>
    
</body>

<script>
    //1.定义数组
    var arr = new Array(1,2,3,4);
    var arr = [1,2,3,4];

    //2.访问数组
    
    console.log(arr[0]);
    console.log(arr[1]);

    //数组长度是可变的,并且可以存储任意类型的数据
    arr[10] = 10;
    console.log(arr[10]);
    console.log(arr[13]);

    arr[7] = 'happyhappy';
    arr[8] = true;
    console.log(arr[7]);
    console.log(arr[8]);

    console.log(arr);

    
</script>
</html>

 56e018e8165b44efae231ba2150f1e71.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-array数组</title>
</head>
<body>
    
</body>

<script>
    // //1.定义数组
    // var arr = new Array(1,2,3,4);
    // var arr = [1,2,3,4];

    // //2.访问数组 
    // console.log(arr[0]);
    // console.log(arr[1]);

    // //数组长度是可变的,并且可以存储任意类型的数据
    // arr[10] = 10;
    // console.log(arr[10]);
    // console.log(arr[13]);

    // arr[7] = 'happyhappy';
    // arr[8] = true;
    // console.log(arr[7]);
    // console.log(arr[8]);

    // console.log(arr);

    //3.遍历数组
    var array = [1,2,3,4,5,6];
    array[10] = 10;

    //for循环是所有的值都遍历
    for(var i = 0 ;i <= array.length; i++){
        console.log(array[i]);
    }  

    //forEach 只遍历有值的元素
    array.forEach(function(e){
        console.log(e);
        
    })

    //ES6 箭头函数 用来简化函数的写法
    array.forEach((e) => {
        console.log(e);        
    })

    // 给数组的末尾加值
    array.push(23,24,25,26);
    console.log(array);
    
    //从数组中删除元素
    array.splice(3,2);
    console.log(array);  
</script>
</html>

(2)string

 e96788a59a004081b412198b4217b1df.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>string字符串</title>
</head>
<body>
    
</body>
<script>
    //1.创建字符串对象
    // var str = new String("hello world");
    var str = "  hello world ";
    console.log(str);

    //2.字符串的属性(长度)
    console.log(str.length);

    //3.字符串的方法
    // charAt某个位置的字符
    console.log(str.charAt(2));

    // indexof返回字符串的位置
    console.log(str.indexOf('lo'));
    

    // trim去掉字符串两边的空格
    console.log(str.trim());

    //substring返回指定索引之间的字符串,含头不含尾
    console.log(str.substring(0,5));
    
</script>
</html>

aac8fe2a00fd4eb78a29f2dca2447431.png

(3)json

5da8296ef98f404eb997ed7f15959b14.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-JSON</title>
</head>
<body>
    
</body>

<script>
    //自定义对象
    var person = {
        name : 'lcc',
        age : 19,
        gender : 'female',
        eat : function(){
            alert('eat');
        },
        sleep(){
            alert('sleep');
        }
    }
    alert(person.name);
    person.eat();
    person.sleep();

</script>
</html>

 93642192305646a8939128d2a2fde85e.png

130b12e83ddf4df18f3316916fe8a261.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-JSON</title>
</head>
<body>
    
</body>

<script>
    //自定义对象
    var person = {
        name : 'lcc',
        age : 19,
        gender : 'female',
        eat : function(){
            alert('eat');
        },
        sleep(){
            alert('sleep');
        }
    }
    alert(person.name);
    person.eat();
    person.sleep();

    //JSON对象
    var jsonstr = ' {"name":"lcc", "age":19, "gender":"female", "address":{"province":"shanxi","city":"xian"}, "likefood":true, "clothes": ["shirt","dress"]}';
    alert(jsonstr.name);//undefined,因为是字符串,我们要转换成一个json对象

    var jsonobj = JSON.parse(jsonstr);
    alert(jsonobj.name);

    //json对象在转换成字符串
    alert(JSON.stringify(jsonobj));

</script>
</html>

(4)bom

5c104f2f9aee44a78a1d65118dccda81.png

12a8986b523b459c8aa512dd96f52952.png

159b78f40c274dd68f1286b99cf599fb.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>对象-Bom对象</title>
</head>
<body>
    
</body>

<script>
    // //获取Bom对象
    alert("window");
    window.alert("window浏览器对象");

    //BOM对象当中的方法
    var flag = confirm('你确定要退出吗?'); //返回的是true或false
    alert(flag);

    //按指定周期性(一毫秒计算)调用函数或表达式
    var i = 0;
    setInterval(function(){
        console.log('这是执行的'+i+'次');
        
    },2000);

    //按指定毫秒后执行函数或表达式
    setTimeout(function(){
        alert('点击我,看我还会不会出现')
    },3000)



    //location对象,设置或返回地址栏的url
    alert(location.href); //先弹出当前页面的地址栏的url

    location.href = 'http://www.baidu.com';//然后直接跳转到百度页面
</script>
</html>

(5)dom 

 406ac15c7c8a44dda23e0cc650c68af9.png

d4536e699acd4e1181b23b2ee64cde76.png

87c79fba3c3843ab9b54687a403450db.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>对象-Dom对象-获取元素</title>
</head>
<body>
    <img id="img1" src="./img/off.gif" alt="" ><br><br>

    <div class="cla">传智教育-黑马程序员</div><br><br>
    <div class="cla">好好学习 为了自己!</div><br><br>

    <input type="checkbox" name="hobby">跑步
    <input type="checkbox" name="hobby">羽毛球
    <input type="checkbox" name="hobby">电影

    <script>

        //1.获取元素对象
        //根据id获取
        var img = document.getElementById("img1"); //弹窗出现一次[object HTMLImageElement]
        alert(img);

        //根据标签获取
        var tags = document.getElementsByTagName("div");
        for (let index = 0; index < tags.length; index++) { //弹窗出现两次[object HTMLDivElement]
            alert(tags[index]);
            
        }

        //根据class获取
        var clas = document.getElementsByClassName("cla");
        for (let index = 0; index < clas.length; index++) { //弹窗出现两次[object HTMLDivElement]
            alert(clas[index]);
            
        }
        //根基name获取
        var nams = document.getElementsByName("hobby");
        for (let i = 0; i < nams.length; i++) { //弹窗出现三次[object HTMLInputElement]
            alert(nams[i]);
            
        }

        //2.调用元素对象当中的方法、属性
        //修改文本
        // var tags1 = tags[0];
        // tags1.innerHTML = "传智教育超级厉害!!!";
        for (let I = 0; I < tags.length; I++) {
            const element = tags[I];
            element.innerHTML =+ "<font color='red'>GOOD</font>";//别忘记外面的双引号,里面的red是单引号
        }

        //修改图片的src属性
        img.src='./img/on.gif';
        

        //修改复选框的选中状态
        for (let i = 0; i < nams.length; i++) { //弹窗出现三次[object HTMLInputElement]
            nams[i].checked = true;
            
        }
       
    </script>
</body>
</html>

5.js事件监听

事件绑定 

c6f654062a974ec8946fa9ce93cd7534.png

29df1120b8d54f848982cf025a864b9d.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-事件绑定</title>
</head>
<body>
    <input type="button" id="bt1" value="按钮一" onclick="bt1()">
    <input type="button" id="bt2" value="按钮二">
</body>


<script>
    //事件绑定
    //方式1:直接在html标签中绑定
    function bt1(){
        alert("按钮一被点击了");
    }
    //方式2:在js代码中绑定
    document.getElementById("bt2").onclick=function(){
        alert("按钮二被点击了");
    }

</script>
</html>

常见事件 

7ffcae2ae77649259b6052e0614ae7d8.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-常见事件</title>
</head>

<body onload="fn1()">

    <form action="" style="text-align: center;" onsubmit="fn8()">
        <input type="text" name="username" onblur="fn3()" onfocus="fn4()" onkeydown="fn5()">
        <input type="submit" value="提交" id="b1">
        <input type="button" value="单击事件" id="b1" onclick="fn2()">
    </form>
    <br><br>

    <table width="800px" border="1" align="center" cellspacing="0" onmouseover="fn6()" onmouseout="fn7()">
        <tr>
            <th>学号</th>
            <th>姓名</th>
            <th>分数</th>
            <th>评语</th>
        </tr>

        <tr align="center">
            <td>001</td>
            <td>张三</td>
            <td>90</td>
            <td>很优秀</td>
        </tr>

        <tr align="center">
            <td>002</td>
            <td>李四</td>
            <td>92</td>
            <td>非常优秀</td>  
        </tr>

        <tr align="center">
            <td>003</td>
            <td>王五</td>
            <td>83</td>
            <td>很努力,不错</td>
        </tr>

        <tr align="center">
            <td>004</td>
            <td>赵四</td>
            <td>67</td>
            <td>还待提高,继续加油</td>
        </tr>


    </table>
</body>

<script>
    //1.onload事件,页面加载完成后执行
    function fn1(){
        console.log('页面加载完成。');
        
    }

    //2.onclick事件,点击事件
    function fn2(){
        console.log('点击事件。');
        
    }

    //3.onblur事件,失去焦点事件

    function fn3(){
        console.log('失去焦点事件。');

    }

    //4.onfocus事件,得到焦点事件
    function fn4(){
        console.log('得到焦点事件。');
        
    }

    //4.onkeydown事件,键盘按下事件
    function fn5(){
        console.log('键盘按下事件。');
        
    }

    //5.onmouseover事件,鼠标移入事件
    function fn6(){
        console.log('鼠标移入事件');
        
    }

    //6.onmouseout事件,鼠标移出事件
    function fn7(){
        console.log('鼠标移出事件');
        
    }
    //7.onsubmit事件,表单提交事件
    function fn8(){
        alert('表单提交事件');
        
    }
</script>
</html>

事件案例 

d67acfb9b4844486a69d6968f26b6520.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-事件案例</title>
</head>
<body>
    <img src="./img/off.gif" alt="" id="light"><br>
    <input type="button" value="点亮" onclick="fn1()">
    <input type="button" value="熄灭" onclick="fn2()"><br><br>
    <!-- <input type="text" value="ITCAST" onfocus="fn3()" onblur="fn4()"> <br><br> -->
    <input type="text" value="ITCAST" onfocus="down()" onblur="upper()" id="text"> <br><br>

    <input type="checkbox" name="hobby">电影
    <input type="checkbox" name="hobby">旅游
    <input type="checkbox" name="hobby">游戏<br><br>
    <input type="button" value="全选" onclick="fn5()">
    <input type="button" value="反选" onclick="fn6()">
</body>

<script>
    //dom和事件的综合运用,先获取元素对象,再绑定事件,最后写事件处理函数
    //1.点亮和熄灭
    function fn1(){
        document.getElementById('light').src = './img/on.gif';
    }
    function fn2(){
        document.getElementById('light').src = './img/off.gif';
    }

    //2.文本框获得焦点和失去焦点,获得焦点时显示小写,失去焦点时显示大写
    //第一种方式
    // function fn3(){
    //     document.getElementsByTagName('input')[2].value = 'itcast';

    // }
    // function fn4(){
    //     document.getElementsByTagName('input')[2].value = 'ITCAST';
    // }

    //第二种方式
    function upper(){
        var upper = document.getElementById('text');;
        upper.value = upper.value.toUpperCase();
    }
    function down(){
        var upper = document.getElementById('text');;
        upper.value = upper.value.toLowerCase();
    }

    //3.复选框全选和反选
    function fn5(){
        var hobby = document.getElementsByName("hobby");
        for (let i = 0; i < hobby.length; i++) {
            hobby[i].checked = true;
            
        }
    }
    function fn6(){
        var hobby = document.getElementsByName("hobby");
        for (let i = 0; i < hobby.length; i++) {
            hobby[i].checked = !hobby[i].checked;

        }
    }
</script>
</html>

(四)Vue 

1.总述 

04bb18dc668c4c5aa7b0bce9616f39d1.png

808822d8ee044b9a99398ca31075c07e.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue快速入门</title>
    <!-- 先引入js对象 -->
     <script src="./js/vue.js"></script>
</head>
<body>
    
    <!-- 最后是视图层 -->
     <div id="app">
        <input type="text" v-model="message"> <!-- v-model进行数据的双向绑定,显示数据模型里的数据,当你改变视图里的数据,数据模型里的数据也跟着改变-->
        {{message}}<!-- 正则表达式,直接将数据模型里的数据显示 -->
     </div>
     

</body>

<script>
    //再创建vue对象
    new Vue({
        el : '#app', //指定vue对象的管理范围
        data : {
            message : 'hello vue' //定义数据模型
        }
    })
</script>
</html>

2.vue常用指令 

50857a293edb431d9f870e6418684638.png

7ec2d00cadb14e9dbc3e2c9acdd437dd.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue-指令-v-bind和v-model</title>
    <!-- 先引入js -->
     <script src="./js/vue.js"></script>
</head>
<body>
    <div id="app">
        <a v-bind:href="url" value="按钮1">按钮1</a>
        <a :href="url" value="按钮2">按钮2</a>

        <input type="text" v-model="url">
    </div>
</body>

<script>
    // 定义vue对象
    new Vue({
        el: '#app',
        data : {
            url:'https://www.baidu.com'
        }
    })
</script>
</html>

ccdb7e8f0d784590a29c0615e8d78fcd.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>v-on</title>
    <script src="./js/vue.js"></script>
</head>
<body>
    <div id="app">
        <input type="button" value="点我一下" v-on:click="handle()">
        <input type="text" value="点我一下" @click="click()">
    </div>

</body>
<script>
    //创建vue对象
    new Vue({
        el: '#app',
        data: {

        },
        methods: {
            handle : function(){
                alert('我被点了一下。。。')
            }
        },

    })
</script>
</html>

9600d3b2d8434f86a42b213969fc20fc.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue-指令-v-if和v-show</title>
    <script src="./js/vue.js"></script>
</head>
<body>
    

    <div id="app">
        <!-- v-if :页面只选择条件符合的去渲染-->
        年龄:<input type="text" v-model="age"><br>
        将判定为:<br>
        <span v-if="age <= 35">年轻人</span>
        <span v-else-if="age > 35 && age <= 60">中年人</span>
        <span v-else="age > 60">老年人</span>
        <!-- v-show :将所有可能的都给渲染了,只不过是通过display属性决定是否展现在页面上-->
         <br><br><br>
        年龄:<input type="text" v-model="age"><br>
        将判定为:<br>
        <span v-show="age <= 35">年轻人</span>
        <span v-show="age > 35 && age <= 60">中年人</span>
        <span v-show="age > 60">老年人</span>
    </div>
</body>

<script>
    //创建vue对象
    new Vue({
        el:'#app',
        data:{
            age :20,
        },
        methods: {
            
        },
    })
</script>
</html>

99a4d6f9080d4e98aa174e30f8c3d931.png

4465cc170f3b4802b52bee3223e22d5f.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue-指令-v-for</title>
    <script src="./js/vue.js"></script>
</head>
<body>
    <div id="app">
        <div v-for="address in arrs">{{address}}</div><br>
        <div v-for="(address, index) in arrs" >{{index}}:{{address}}</div><br>
        <div v-for="(address, index) in arrs" >{{index+1}}:{{address}}</div>
        
    </div>
</body>

<script>
    new Vue({
        el:'#app',
        data:{
            arrs:['北京', '上海', '广州', '西安', '西藏'] //当是数据模型是数组时,里面的元素要带引号
        }
    })
</script>
</html>

15f1da66ea754e90b6cc7d10cd414c08.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue指令案例</title>
    <script src="./js/vue.js"></script>
</head>
<body>
    <div id="app">
        <table cellspacing="0" border="1" width="800px" align="center">
            <tr>
                <th >编号</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>性别</th>
                <th>成绩</th>
                <th>等级</th>
            </tr>
            <tr v-for="(user, index) in users" >
                <td>{{index+1}}</td>
                <td>{{user.name}}</td>
                <td>{{user.age}}</td>
                <td>
                    <span v-if="user.gender == 1">男</span>
                    <span v-if="user.gender == 2">女</span>
                </td>
                <td>{{user.score}}</td>
                <td>
                    <span v-if="user.score >= 85">优秀</span>
                    <span v-else-if="user.score >= 65 ">及格</span>
                    <span v-else="user.score < 65" style="color: red;">不及格</span>
                </td>
            </tr>
        </table>
    </div>
</body>

<script>
    new Vue({
        el: '#app',
        data: {
            users:[{
                name: '张三',
                age:20,
                gender:1,
                score:78
            },{
                name: '李四',
                age:18,
                gender:2,
                score:86
            },{
                name: '王五',
                age:26,
                gender:1,
                score:90
            },{
                name: '赵六',
                age:30,
                gender:1,
                score:52
            }]
        }
    })
</script>
</html>

3.vue生命周期 

f63e3c5467e247e08c0c654ac9151afa.png

5bee3be9bc0e4c0aa068d172b229b3c9.png

e3704261b5c442ed96ee972cd977eb2f.png

b733e8ad60ae4e5ea8a2f2ebd3ab0426.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值