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中的語句
程式碼演示: