WEB前端--Day4 (javascript基础)

一、css的属性

1.形变和过渡

形变:tranform

过渡:transition

1.1形变

rotate(degree):旋转,指定的标签需要旋转的度数,degree表示度数

scale():指定的标签放大或者缩小【拉伸或者缩放】

代码演示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            #transform{
                width: 200px;
                height: 200px;
                background-color: orange;
                
                /*外边距*/
                margin: 100px;
                
                
                /*设置旋转点*/
                /*center left right top bottom*/
                transform-origin: center left;
                
                /*设置旋转的角度*/
                /*默认情况下沿着z轴旋转的
                 * rotateX()
                 * rotateY()
                 * deg--->degree
                 */
                /*transform: rotate(60deg);*/
                
                /*拉伸形变*/
                /*默认情况下横向拉伸和纵向拉伸是同时进行的
                 * scaleX(num)   scaleY(num)
                 * num > 1  :表示放大num倍
                 * 0<num<1 :表示缩小num倍
                 */
                /*transform: scale(1);*/
                
                transform: scale(2) rotate(30deg);  
            }
        </style>
    </head>
    <body>
        <div id="transform"></div>
    </body>
</html>

1.2过渡

transition-duration:过渡的时间

transition-property:需要过渡的标签

代码演示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            #transition{
                width: 200px;
                height: 200px;
                background-color: orange;
                
                /*外边距*/
                margin: 100px;
                
                transform: rotate(-90deg);
                
                color: white;
                
                /*添加过渡
                 * 哪个标签需要过渡
                 * 发生过渡的时间
                 */
                transition-duration: 5s;
                transition-property: all;
                
            }
        </style>
    </head>
    <body>
        <div id="transition">形变和过渡</div>
    </body>
</html>

1.3案例:照片墙

代码演示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            #box{
                width: 100%;
                height: 700px;
                /*auto:表示自动适配*/
                margin: 50px auto;
                
                background-color: orange;
            }
            
            /*共性*/
            img{
                width: 180px;
                height: 220px;
                border: solid 3px white;
                
                margin: 15px;
                
                /*过渡*/
                transition-duration: 2s;
                /*指定某个属性发生变化的时候触发过渡属性*/
                transition-property: transform;
            }
            
            /*个性*/
            /*每张图片旋转不同的角度*/
            div img:nth-child(1){
                transform: rotate(15deg);
            }
            div img:nth-child(2){
                transform: rotate(5deg);
            }
            div img:nth-child(3){
                transform: rotate(-15deg);
            }
            div img:nth-child(4){
                transform: rotate(10deg);
            }
            div img:nth-child(5){
                transform: rotate(-5deg);
            }
            div img:nth-child(6){
                transform: rotate(15deg);
            }
            div img:nth-child(7){
                transform: rotate(5deg);
            }
            div img:nth-child(8){
                transform: rotate(-10deg);
            }
            div img:nth-child(9){
                transform: rotate(15deg);
            }
            
            /*设置鼠标悬浮*/
            #box > img:hover{
                transform: scale(1.2) rotate(0deg); 
            }
            
        </style>
    </head>
    <body>
        <div id="box">
            <img src="img/photowall/pic1.jpg"/>
            <img src="img/photowall/pic2.jpg"/>
            <img src="img/photowall/pic3.jpg"/>
            <img src="img/photowall/pic4.jpg"/>
            <img src="img/photowall/pic5.jpg"/>
            <img src="img/photowall/pic6.jpg"/>
            <img src="img/photowall/pic7.jpg"/>
            <img src="img/photowall/pic8.jpg"/>
            <img src="img/photowall/pic9.jpg"/>
        </div>
    </body> 
</html>

2.动画

2.1使用

animation,主要是结合形变和过渡使用

代码演示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            div{
                width: 200px;
                height: 200px;
                background-color: purple;
                
                /*设置旋转的轴点*/
                transform-origin: left top;
                
                /*给标签添加动画*/
                /*参数:动画名称  动画持续的时间  动画的形式  动画执行的次数
                 
                 * 动画名称:自定义
                 * 动画持续的时间:单位为秒,表示当整个动画执行一次需要的时间
                 * 动画的形式:
                 *      线性动画:linear
                 *      由快到慢:ease
                 * 
                 *动画执行的次数:默认为1次,无限次:infinite 
                 * 
                 * */
                animation:animate  5s  linear;
            }
            
            /*使用animation的时候,动画需要手动设置
             
             * animate-----》动画的名称
             * 表示方法一
             * from:起始动画状态
             * to:最终动画状态
             * 
             * 表示方法二
             * 可以使用百分比,取值范围0%~100%
             * 
             * */
            /*注意:动画执行完毕之后会恢复到最初状态*/
            @keyframes animate{
                /*from{margin-left: 200px;}
                to{transform: rotate(180deg);}*/
                
                0%{
                    background-color: blue;
                }
                10%{
                    background-color: green;
                }
                
                25%{
                    transform: rotate(50deg);
                }
                
                60%{
                    background-color: orange;
                    transform: scale(1.2);
                }
                
                100%{
                    margin-right: 10px;
                }
            }
            
        </style>
    </head>
    <body>
        <div></div>
    </body>
</html>

2.1案例:时钟

代码演示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            #clock{
                width: 300px;
                height: 300px;
                
                border-radius: 50%;
                border: solid 10px gray;
                
                margin: 150px auto;
                
                /*设置父标签的有效定位,充当其他标签的参照物*/
                position: relative;
            }
            
            /*刻度*/
            /*共性*/
            #clock .line{
                width: 5px;
                height: 310px;
                
                position: absolute;
                left: 50%;
                
                background-color: gray; 
            }
            
            /*个性*/
            .line2{
                transform: rotate(30deg);
            }
            .line3{
                transform: rotate(60deg);
            }
            .line4{
                transform: rotate(90deg);
            }
            .line5{
                transform: rotate(1200deg);
            }
            .line6{
                transform: rotate(150deg);
            }
            
            
            /*覆盖层*/
            #cover{
                position: absolute;
                width: 260px;
                height: 260px;
                border-radius: 50%;
                background-color: white;
                
                left:20px;
                top:20px;
                
                z-index: 1;
            }
            
            /*设置针*/
            #clock .zhen{
                position: absolute;
                /*设置旋转点*/
                transform-origin: center bottom;
            }
            
            /*秒针*/
            #clock .seconds{
                width: 2px;
                height: 140px;
                
                background-color: blue;
                
                top:10px;
                left:151.5px;
                
                z-index: 2;
                
                animation: circle  60s steps(60) infinite;
            }
            
            /*分针*/
            #clock .minute{
                width: 4px;
                height: 120px;
                
                background-color: purple;
                
                top:30px;
                left:149.5px;
                
                z-index: 2;
                
                animation: circle  3600s infinite linear;
            }
            
            /*时针*/
            #clock .hour{
                width: 6px;
                height: 100px;
                
                background-color: red;
                
                top:50px;
                left:148px;
                
                z-index: 2;
                
                animation: circle  43200s infinite linear;
            }
            
            /*圆心*/
            #dotted{
                width: 20px;
                height: 20px;
                border-radius: 50%;
                background-color: gray;
                
                position: absolute;
                left:141px;
                top:140px;
                
                z-index: 3;
            }
            
        
            @keyframes circle{
                from{transform: rotate(0deg);}
                to{transform: rotate(360deg);}
            }
            
            
            
            
            
        </style>
    </head>
    <body>
        <div id="clock">
            <!--覆盖层-->
            <div id="cover"></div>
            <!--时分秒-->
            <div class="hour zhen"></div>
            <div class="minute zhen"></div>
            <div class="seconds zhen"></div>
            <!--刻度-->
            <div class="line line1"></div>
            <div class="line line2"></div>
            <div class="line line3"></div>
            <div class="line line4"></div>
            <div class="line line5"></div>
            <div class="line line6"></div>
            <!--圆心-->
            <div id="dotted"></div>
        </div>
    </body>
</html>

二、综合案例

三、javascript简介

1.概念

是基于对象和事件驱动的脚本语言,主要应用在客户端【浏览器】,简称js

MoCha

​ 基于对象:提供好了很多对象,可以直接使用

​ 事件驱动:html做网站静态效果,js实现动态效果【可以和用户交互】

js的作用:操作html和css

2.特点

a.交互性【实现信息的动态交互】

b.安全性【不可以直接访问磁盘上的文件】

c跨平台型【只要是可以解析js的浏览器都可以执行,与平台无关】

3.和java的关系

a.开发公司

​ Java是由Sun公司开发的,后来被Oracle收购了

​ js是Netscape【网景公司】开发的

b.对象

​ Java是面向对象

​ js是基于对象

c.数据类型

​ Java是强类型语言【每种变量都有确定的数据类型】 int num = 10

​ js是弱类型语言,类似于Python【变量的类型由值决定】var num = 10

4.组成

a.ECMAScript

​ 由ECMA定义的基本语法,包括变量,语句,函数,运算符等

b.BOM

​ Broswer Object Model,浏览器对象模型

c.DOM

​ Document Object Model,文档对象模型

5.和html的结合方式

5.1使用script标签

<script type="text/javascript">js代码</script>

注意:可以写在head中,也可以写在body中

代码演示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script>
            alert("head~~~~~hello")
        </script>
    </head>
    <body>
        <script>
            alert("body~~~~~hello~~~~~~1")
        </script>
        
        <script>
            alert("body~~~~~hello~~~~~~2")
        </script>
        
        <!--script标签可以额出现在head或者body中
            在同一个html文件中,script标签可以出现多次,按照先执行head,然后执行body中【按照顺序执行】
        -->
    </body>
</html>

5.2引入外部的js文件

仍然使用scrip标签,只是引入一个外部的js文件

<script type="text/javascript" src="js的相对路径"></script>

代码演示:

js文件

alert("hello  你好啊")

html文件

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript" src="js/text01.js">
            
        </script>
        <script>
            alert("hgisijrhksrhsekhjt")
        </script>
        
        <!--注意:在一个script标签中如果引用了外部的就是文件,则将不能在标签中再书写js代码,否则无效-->
        <!--注意:一般将script标签写在body中,原因:先加载head,然后加载body,
        而js的作用就是为了操作html和css,当script标签写在head中的时候,如果要操作某个html标签,则这个标签还未加载出来-->
    </head>
    <body>
    </body>
</html>

6.注释

html:<!-- xxx -->
css:/* xxx */
js:
    单行注释://xxxxxxx【ctrl+/】                 #
    多行注释:/* xxx */【ctrl+shift+/】           """"""

四、ECMAScript基本语法

1.变量的定义

使用关键字var定义变量,其他的写法和Python完全相同

举例:

Python:num = 10

js: var num = 10;

注意:在js中,每条语句的结尾最好添加一个分号,表示语句的结束

代码演示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            //1.先声明,后赋值
            var age;
            age = 18;
            
            //2.在声明的同时给变量赋值
            var age1 = 20;
            
            //3.可以同时定义多个变量
            //注意:多个变量之间使用逗号隔开,var关键字只需要出现一次
            var name = "hello",age2 = 10;
            
            //4.js是弱类型的语言
            //特点:容错性较高,在赋值的时候才能确定变量的数据类型
            var b;
            b = 15;
            b = "abc";
            
            //5.打印语句
            //弹出一个提示框
            //alert(age);
            //向浏览器的文档对象中写入一个数据
            document.write(age);
            //在控制台打印日志
            console.log(age)
            
        </script>
    </body>
</html>

2.命名规范

a.变量名可以是字母,数字,下划线以及美元符[$]

b.第一个字符不能为数字

c.不能使用关键字

d.区分大小写

e.遵循驼峰命名法

3.数据类型

Python:数字类型,字符型,列表,元组,字典,集合,函数,类,布尔

3.1一般数据类型

Boolean:布尔类型

Number:数字类型【整型和浮点型】

String:字符串类型

Object:对象类型

Array:数组

Function:函数

RegExp:正则表达式

3.2特殊数据类型

Null:是一个只有一个值的数据类型,null,他表示一个空对象的引用【指针】,类似于Python中的None,使用typeof操作符检测null返回的结果为object

Undefined:未定义的变量,定义一个变量,但是没有给该变量父初始值【var a; a是Undefined类型】

NaN:Not A Number,不是一个数字

代码演示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            //1.null
            var c = null;
            document.write(c);
            
            
            //注意:在js中如果要操作html的标签,不能直接使用,必须通过js代码操作
            document.write("<br />");
            
            
            document.write("hello");
            
            document.write("<br />");
            
            //2.Undefined
            //注意:在使用变量之前最好能赋值
            var b;
            document.write(b);
            
            document.write("<br />");
            
            //undefined派生自null,表示值相同的
            document.write(undefined == null);//true
            //类型,两个变量属于不同的数据类型
            document.write(typeof c == typeof b);//false
            
            document.write("<br />");
            
            //3.NaN
            var a = 0 / 0;
            document.write(a);
            
            //isNaN():判断一个变量是否不是一个数字,是number返回false,不是数字返回是true
            document.write(isNaN("hello"));
            document.write("<br />");
            
            //注意:isNaN除了可以判断之外,还可以将字符串试图转换,如果能转换为number则仍然返回false
            document.write(isNaN("123"));
            document.write("<br />");
            
            document.write(isNaN(123));
            document.write("<br />");
            
            //注意:在js中,布尔值可以被当做数字使用,true代表是1,false代表的是0
            document.write(isNaN(true));
            document.write("<br />");
            
            document.write(1 + true);
            document.write("<br />");
            document.write(1 + false);
        
        </script>
    </body>
</html>

4.运算符

4.1算术运算符

++:自增运算符

--:自减运算符

代码演示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            //++和--一般使用在变量的前面或者后面
            //基本用法:可以让变量本身增1或者减1,可以单独使用
            var n = 2;
            var r = ++n;
            
            var n1 = 2;
            var r1 = n1++;
            
            
            document.write(n);  //3
            document.write("<br />");
            document.write(n1);  //3
            document.write("<br />");
            
            document.write(r);   //3
            document.write("<br />");
            document.write(r1);  //2
            document.write("<br />");
            //注意1;不管++出现在变量的前面还是后面,变量本身都自增了1
            //注意2:将n++或者++n赋值给某一个变量,该变量的值取决于++出现在变量的前面还是后面
            //如果++出现在变量的前面,先原变量自增1,然后将结果赋值给新变量
            //如果++出现在变量的后面,先将原变量的值赋值给新变量,然后原变量自增1
            
            //参与运算
            //++
            var num1 = 3;
            var r1 = ++num1 + 2;
            document.write(num1); //4
            document.write("<br />");
            document.write(r1);  //6
            document.write("<br />");
            
            
            var num2 = 3;
            var r2 = num2++ + 2;
            document.write(num2); //4
            document.write("<br />");
            document.write(r2);  //5
            document.write("<br />");
            
            //--
            num1 = 3;
            r1 = --num1 + 2;
            document.write(num1); //2
            document.write("<br />");
            document.write(r1);  //4
            document.write("<br />");
            
            
            num2 = 3;
            r2 = num2-- + 2;
            document.write(num2); //2
            document.write("<br />");
            document.write(r2);  //5
            document.write("<br />");
            
            
            var a = 3;
            //a++  ++a
            a = a + 1
            a += 1
            
            //+:拼接运算符
            //在Python中,只能拼接字符串
            //在js中,字符串和任意类型的变量相加,得到的结果都是字符串
            document.write("abc" + 10);
            document.write("<br />");
            document.write("abc" + true);
            document.write("<br />");
            document.write("abc" + "123");
            document.write("<br />");
            document.write("abc" + null);
            document.write("<br />");
            document.write("abc" + undefined);
            document.write(typeof ("abc" + 10));
                
        </script>
    </body>
</html>

4.2关系运算符

作用:

a.应用在if语句或者循环语句中

b.运算的结果都是布尔值

c.如果两个number'类型的变量比较大小,则比较大小

d.如果是两个字母比较,则比较的是字符的ASCII

4.3逻辑运算符

与:&&

或:||

非:!

注意:和Python中的and,or和not的用法相同的,也存在短路原则

4.4三目运算符【三元运算符】

格式:关系运算符?值1:值2;

说明:

a.值1和值2可以是常量,可以是变量,也可以是表达式

b.工作原理:如果关系运算符成立,则整个运算符的结果是值1,否则为值2

c.作用:实际上实现了二选一的操作,类似于if-else语句

代码演示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            //需求:判断一个数是否是偶数
            var num = 10;
            
            //常量
            var result1 = num % 2 == 0?"偶数":"奇数";
            document.write(result1);
            var result2 = num % 2 == 0?true:false;
            
            
            //变量
            var r1 = true;
            var r2 = false;
            var result3 = num % 2 == 0?r1:r2;
            
            //表达式
            var result4 = num % 2 == 0?3 != 5:3 == 5;
            
            //注意:三目运算符本质上是一个运算符,所以运算完成之后必定会得到一个结果,一般使用一个 变量将结果接出来
            
            //实现了二选一的操作
            /*result = ""
             * if num % 2 == 0:
             *      result = "偶数"
             * else:
             *      result = "奇数"
             */
            
        </script>
    </body>
</html>

4.5赋值运算符

=

+= -=

4.6特殊用法

代码演示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            //1.除法只有一个:/    
            //Python: /   //
            
            //2.js中的字符串可以进行相加或者相减的操作
            var str = "456";
            
            //注意:字符串和基本数据类型使用+,则表示拼接,得到的结果为字符串
            document.write(str + 1);
            document.write("<br />"); //4561
            //如果字符串可以转换为数字,使用-则表示数学上的减法运算,否则结果为NaN
            document.write(str - 1);  //455
            document.write("<br />");
            document.write("abc" - 1);//NaN
            
            
            //3.boolean类型也可以进行相加或者相减的操作
            document.write(true + 10); //11
            document.write(false + 10); //10
            
            document.write("<br />");
            
            
            //4.== ===
            //==比较的值,不关心类型
            var aa = "5";
            if (aa == 5){
                document.write("ok");
            }
            else{
                document.write("不ok");
            }
            //ok
            
            //===比较的是类型和值
            if (aa === 5){
                document.write("ok");
            }
            else{
                document.write("不ok");
            }
            //不ok
        </script>
    </body>
</html>

5.js中的语句

三大流程控制语句

​ 顺序:

​ 分支:

​ 循环:

Python :

​ 分支:if,if-else,if-elif-else

​ 循环:while for-in

js:

​ 分支:if ,if-else,if-else if -else,switch-case

​ 循环;简单for,for-in,while,do-while

5.1f语句

语法:

单分支:

if (条件表达式){

}

双分支:

if (条件表达式){

}else{

}

多分支:

if (条件表达式1){

} else if(条件表达式2){

}

...

else{

}

说明:如果执行语句只有一行代码,则可以省略花括号

代码演示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            //单分支:要么执行,要么不执行
            var num1 = 10;
            if (num1 < 100){
                document.write("hello");
            }
            
            
            //双分支:实现了二选一的操作,类似于三目运算符,可以进行相互转换
            if (num1 % 2 == 0){
                document.write("偶数");
            }else{
                document.write("奇数");
            }
            
            //多分支:实现多选一的操作【每次只执行其中的一个分支,执行完成之后则整个多分支语句结束】
            var n = 3;
            if(n > 1){
                document.write("1");
            }else if(n > 2){
                document.write("2");
            } else if(n > 3){
                document.write("3");
            }else{
                document.write("4")
            }
            
            //嵌套if语句
            if(n > 1){
                if(n > 2){
                    document.write("ok");
                }
            }
            
            //等价于
            if(n > 1 && n > 2){
                document.write("ok");
            }
            
            //书写一个永远成立的if语句
            if(true){
                
            }
            if(1){
                
            }
            
            //0,0.0,false,null代表是假
            
        </script>
    </body>
</html>

5.2switch语句

作用:类似于if语句中的多分支,实现多选一的操作

语法:

switch(变量){

​ case 常量1:{

​ 执行语句1;

​ break;

​ }

​ case 常量2:{

​ 执行语句2;

​ break;

​ }

​ 。。。

​ default:{

​ 执行语句n;

​ }

}

工作原理:根据变量的值进行匹配,如果在case分支匹配到了常量,则执行case后面的语句,则整个switch-case语句结束;如果所有的case分支都不匹配,则执行default中的语句

代码演示:

猜你喜欢

转载自blog.csdn.net/wx_yiyi_xixi/article/details/84865271