1. 程式人生 > >HTML5基礎知識3

HTML5基礎知識3



## 1.Mac桌面

### 1.1新建一個Mac桌面專案



### 1.2搭建整體框架





### 1.3設計預設和背景樣式

```
/*替換萬用字元,提高效率*/
a, address, b, big, blockquote, body, center, cite, code, dd, del, div, dl,
dt, em, fieldset, font, form, h1, h2, h3, h4, h5, h6, html, i, iframe, img,
ins, label, legend, li, ol, p, pre, small, span, strong, u, ul, var {
    margin: 0;

    padding: 0;
}

body{
    /*背景*/
    background: url("../image/bg_apple.jpg");
    /*縮放效果*/
    background-size: cover;
}
```



### 1.4設計頭部背景樣式

```
#top{
    background: rgba(255,255,255,0.8);
    height: 35px;
    /*背景陰影:下邊給黑色陰影*/
    box-shadow: 0px  3px black;
}
```



### 1.5實現頭部的內容和佈局



```
        <!--左邊選單-->
        <ul class="top-left">

            <li><a href="" class="glyphicon glyphicon-apple"></a></li>
            <li><a href="">520IT</a></li>
            <li><a href="">檔案</a></li>
            <li><a href="">編輯</a></li>
            <li><a href="">顯示</a></li>

            <li><a href="">幫助</a></li>
        </ul>
        <!--右邊選單-->
        <ul class="top-right">
            <li ><a href="" class="glyphicon glyphicon-volume-up"></a></li>
            <li ><a href="" class="glyphicon glyphicon-align-left"></a></li>
            <li ><a href="" class="glyphicon glyphicon-question-sign"></a></li>
            <li ><a href="" class="glyphicon glyphicon-leaf"></a></li>
        </ul>
```



### 1.6設計頭部樣式

```

#top{

    background: rgba(255,255,255,0.8);
    height: 35px;
    width: 100%;
    /*背景陰影:下邊給黑色陰影*/
    box-shadow: 0px  3px black;

    /*設計行高*/
    line-height: 35px;

    /*相對於瀏覽器定位*/
    position: fixed;
    left: 0;
    top:0;
}

a{
    /*字型變黑*/
    color: black;
    /*去除下劃線*/
    text-decoration: none;
    font-size: 15px;
    margin: 0 3px;
}

#top ul{
    /*去掉圓點*/
    list-style: none;
}

/*左浮動*/
#top .top-left {
    float: left;
    margin-left: 10px;
}
/*右浮動*/
#top .top-right{
    float: right;
    margin-right: 10px;
}

/*改變標籤型別*/
#top ul li{
    display: inline-block;
}
```



### 1.7設計低部背景樣式

```
#bottom{
    background: red;
    height: 70px;

    /*相對瀏覽器定位*/
    position: fixed;
    left: 0;
    bottom: 0;

    width: 100%;
}
```

### 1.8設計低部背景樣式

1.修改html



2.新增樣式

```
#bottom .dock{
    background: url("../image/dock_bg.png");
    width: 60%;
    height: 100%;

    /*水平居中*/
    margin: 0 auto;

    border-top-left-radius: 5px;
    border-top-right-radius:5px;
}
```



### 1.9低部欄新增圖片



```
         <!--底部新增圖片-->
            <ul>
                <li><a href="#"><img src="image/zurb-icon.png"></a></li>
                <li><a href="#"><img src="image/linkedin-icon.png"></a> </li>
                <li><a href="#"><img src="image/notable-icon.png"></a> </li>
                <li><a href="#"><img src="image/lastfm-icon.png"></a> </li>
                <li><a href="#"><img src="image/facebook-icon.png"></a> </li>
                <li><a href="#"><img src="image/google-icon.png"></a> </li>
                <li><a href="#"><img src="image/notable-icon.png"></a> </li>
                <li><a href="#"><img src="image/lastfm-icon.png"></a> </li>
                <li><a href="#"><img src="image/facebook-icon.png"></a> </li>
                <li><a href="#"><img src="image/google-icon.png"></a> </li>
                <li><a href="#"><img src="image/lastfm-icon.png"></a> </li>
            </ul>
```



### 2.1低部欄新增圖片樣式

```

#bottom{
    ...
    line-height: 70px;
    /*水平居中*/
    text-align: center;
}

/**給圖片設計寬高*/
#bottom .dock img{
    width: 55px;
    margin: 0 5px;
}

/**改變標籤型別*/
#bottom .dock ul{
    display: inline-block;
}

/**改變標籤型別*/
#bottom .dock li{
    display: inline-block;
}
```



### 2.2低部欄圖片新增過度動畫

**transform** 動畫

  -webkit-transform   動畫效果

  -webkit-transform-origin  參照座標

  -webkit-transition:過度動畫效果

```

#bottom .dock li{
    display: inline-block;

    /*平移過度效果*/
    -webkit-transition:  0.25s linear;  /* Safari 和 Chrome */
    -moz-transition: 0.25s linear;    /* Firefox 4 */
    -ms-transition: 0.25s linear   /* IE 9 */
    -o-transition: 0.25s linear;  /* Opera */
    transition: 0.25s linear;    /* W3C */
}

#bottom .dock li:hover {
    /*參照座標*/
    transform-origin: center bottom;
    /*放大效果*/
    -webkit-transform: scale(1.5,1.5);
    -moz-transform: scale(1.5,1.5);
    -ms-transform: scale(1.5,1.5);
    -o-transform: scale(1.5,1.5);
    transform: scale(1.5,1.5);
}
```

### 2.3實現中間內容和結構



### 2.4設計中間內容樣式

```

#middle{
    margin-top: 50px;
    margin-left: 15px;
     width: 90px;
}
/**設計圖片的寬*/
#middle .file img{
    width: 90px;
}
/**設計文字顏色..*/
#middle .file p{
    color: white;
    text-align: center;
}
```



## 2.什麼是JavaScript 

**什麼是JavaScript** 

  [JavaScript]()是一門廣泛用於[瀏覽器客戶端]()[指令碼語言]() (解析執行,不是編譯執行)由Netspace公司設計,當時跟Sun公司合作,所以名字起得像Java,  業內一般簡稱JS



**JS的常見用途**

   1)**動態效果** 和 **資料載入**都是js實現

   2)HTML **DOM操作**(節點操作,比如新增、修改、刪除節點)

  3)給HTML網頁增加**動態**功能,比如動畫

  4)**事件處理**:比如監聽滑鼠點選、滑鼠滑動、鍵盤輸入



## 3.JavaScript的書寫方式

JS常見的書寫方式有2種

頁內JS:

  在當前網頁的script標籤中編寫 (  script標籤一般在body標籤中  )

  ```
  </body>
      ...
      ...
      <script type="text/javascript">
          /*寫指令碼語言*/
      </script>    
  </body>
  ```


外部JS

  ```
  /**  引用外部的js檔案,src 指定js檔案路徑  */
  <script src="index.js">    </script>
  ```

## 4.JS簡單應用..

### 4.1JavaScript輸出.

彈窗輸出
控制檯輸出
打斷點

**案例:**

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>輸出helloWorld</title>
</head>
<body>
    <script>
        /*彈窗輸出*/
        alert('hello World !');
        /*除錯輸出*/
        console.log('java','android');
        console.log('java','android');
        /*打斷點*/
        debugger;
        console.log('java','android');
    </script>
</body>
</html>
```





## 5.JS資料型別.

1. 基本資料型別 (  java : int float  long double ...   ;  javaScript :  number string boolean object )
2. 列印真實型別 (  typeof  xxx  )
3. 運算(+   -   *  /  % ....)
4. 面試題
5. 陣列
6. 遍歷陣列
7. 陣列的增刪(壓棧,出棧)
8. 函式庫Math
9. 等號運算子

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS語法</title>
</head>
<body>

<script>
//    1. 基本資料型別
        /*number*/
        var age=100;
        var money=100.02;
        console.log(age,money);

        /*string*/
        var name='jack';
        name2='rose';
        console.log(name,name2);

        /*boolean*/
        var result1=false;
        var result2=true;
        console.log(result1,result2);

        /*object*/
        var score=null;
        console.log(score);

        /*number*/
        var number1 =1,number2=2;
        console.log(number1,number2);


//    2. 列印真實型別
        console.log(typeof money,typeof  name,typeof  result1,typeof score);

//    3. 運算(+   -   *  /  % ....)
        var str=name+'-'+result2+'-'+score;
        console.log(str);

//    4. 面試題
        var str1=(10+'10')+10;
        var str2=(10+10)+'10';
        var str3='10'+('10'+10);
        console.log(str1,str2,str3);//101010 2010 101010

//    5. 陣列
//        var arrs=new Array();
        var arr=[];
        console.log(typeof arr);
            arr[0]='java';
            arr[1]=12;
        console.log(arr);
        var numbers=['android',12,false,[12,34]];
        console.log(numbers);

//    6. 遍歷陣列
        var num=[100,500,200,600];
//        for(var i=0;i<num.length;i++){
//            console.log(num[i]);
//        }
//        for(i=0;i<num.length;i++){
//            console.log(num[i]);
//        }
//        for(i in num){
//            console.log(num[i]);
//        }

//    7. 陣列的增刪(壓棧,出棧)
        num.push(900);//壓棧
        console.log(num);
        num.pop();//出棧
        console.log(num);

//    8. 函式庫Math
       var maxVaule=Math.max(100,400,300);
        console.log(maxVaule);
        console.log(Math.min(100,200,600));

        var maxV=Math.max.apply(this,num);
        var minV=Math.min.apply(this,num);
        console.log(maxV,minV);

//    9.等號運算子
        /*
        * ==  等於 (值)
        * === 全等(值和型別)
        */
        var a=5;
        var b='5';
        console.log(a==5);//true
        console.log(b==5);//true

        console.log(a===5);//true
        console.log(b===5);//false

</script>

</body>
</html>
```



## 6.JS函式.

### 6.1JS函式格式

**1.普通函式格式**

​          **function  函式名 (引數列表 ...){**

​           **//函式體**

​         **return  返回值;**

​           **}**

**2.匿名函式格式**

  ​    **var  函式別名 =function (引數列表 ...){**

  ​           **//函式體**

  ​         **return  返回值;**

  ​    **}**

  注意:想讓<script> 標籤中的指令碼程式碼一定執行 ,  可使用匿名函式:**(   function(){ }   )()**

**案例:**

1. 加法運算
2. 多個數相加(引數為陣列)
3. 內建陣列(每個函式都會自帶的一個內建陣列,把傳入的所有東西存到一個預設的陣列arguments中)
4. 匿名函式

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>03-JS函式</title>
</head>
<body>

<script>

//    1. 加法運算
        function sum(num1,num2) {
            return num1+num2;
        }
        var result1=sum(12,3);
        console.log(result1);
//    2. 多個數相加(引數為陣列)
        function sum2(arrays) {
            var result=null;
            for(i in arrays){
                result+=arrays[i];
            }
            return result;
        }
        var  result2=sum2([12,3,5]);
        console.log(result2);

//     3.內建陣列(函式自帶的一個內建陣列,把傳入的所有東西存到一個預設的陣列arguments中)

        function sum3() {
            var result=null;
            for(i in arguments){
                result +=arguments[i];
            }
            return result;
        }
        var result3=sum3(1,2,3,4);
        console.log(result3);

//      4.匿名函式

        var sum4=function () {
            console.log('我是匿名函式,別名是sum4');
        }

        var result4=sum4();

</script>
</body>
</html>
```







## 7.JS物件

### 7.1JS產生物件.

#### 1.第一種

格式:var dog=**{ }**

**案例:**

1. 定義一隻狗物件
2. 給狗物件新增屬性
3. 給狗物件新增方法
4. 呼叫狗物件中的屬性和方法

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>04-JS產生物件</title>
</head>
<body>
    <script>
//        1. 定義一隻狗物件
        var dog={
            //2. 給狗物件新增屬性
            age:12,
            name:'jack',
            height:50,

            firends:['rose','lili'],

            //3. 給狗物件新增方法
            eat:function (food) {
                console.log(this.name+'  --吃--'+food);
            },
            run:function () {
                console.log(this.name+'  -- 跑--');
            }

        };
//        4. 呼叫狗物件中的屬性和方法
        console.log(dog.age,dog.name,dog.height,dog.firends);
        dog.eat('骨頭');
        dog.run();
    </script>
</body>
</html>
```



#### 2.第二種(批量產生物件)

建構函式 可以new物件。

普通函式   -->    升級  -->   建構函式,。(通過new 關鍵字升級)

格式:var dog=**new  函式名() ;**

**案例:**

1. 建立多隻狗物件
2. 給狗的建構函式新增屬性和方法
3. 給狗物件的屬性賦值
4. 呼叫狗物件中的屬性和方法
5. 把狗的建構函式封裝到一個獨立的js檔案

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>05-批量產生物件</title>
</head>
<body>
    <script>
        /**讓下面的js程式碼一定執行*/
        (function () {
            /*定義一個函式*/
//            function dog() {
//                console.log('dog');
//            }
//            dog();

            /*升級函式為構造器函式*/
//            function dog() {
//                console.log('dog');
//            }
//            var dog1=new dog();
//            var dog2=new dog();

            /*類似java中的一個類*/
            function dog() {
                //2. 給狗的建構函式新增屬性和方法
                this.name=null;
                this.age=null;
                this.height=null;
                this.firends=[];

                this.eat=function () {
                    console.log('---eat---');
                };
                this.run=function () {
                    console.log('---run---');
                };
            }
//            1. 建立多隻狗物件
            var dog1=new dog();
            var dog2=new dog();

//            3. 給狗物件的屬性賦值
            dog1.age=12;
            dog1.name='jack';

            dog2.age=8;
            dog2.name='rose';
            console.log(dog1);
            console.log(dog2);

//            4. 呼叫狗物件中的屬性和方法
            console.log(dog1.age,dog1.name);
            dog1.eat();
//            5. 把狗的建構函式封裝到一個獨立的js檔案
        })();

    </script>


</body>
</html>
```



## 8.JS內建物件..

### 8.1window

window是javaScript的內建物件之一

#### 1.window的第一作用:

1)所有的[全域性變數]()都是[window]()[屬性]()

2)所有的[全域性函式]()都是[window]()[方法]()



**案例:**

1. 全域性變數(屬於window的屬性)
2. 全域性函式(屬於window的方法)
3. 列印window物件

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01-window</title>
</head>
<body>

<script>

//    1. 全域性變數(屬於window的屬性)
    var age=12;
    console.log(age);
    console.log(window.age);

//    2. 全域性函式(屬於window的方法)
    function dog() {
        console.log('--dog--');
    }
    dog();
    window.dog();
//    3. 列印window物件
    function person() {
        console.log(this);
    }

    window.person();//this 代表是window
    new person();//this 代表是person物件

    /*window的屬性*/ 
    window.alert('哈哈');
    window.console.log('呵呵');

</script>

</body>
</html>
```

屬性:

height、innerHeight、outerHeight的區別詳解:

http://www.365mini.com/page/jquery-height-vs-innerheight-vs-outerheight.htm

#### 2.window的第二作用:

1) [動態跳轉]()

**案例:**

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01-window</title>
</head>
<body>
<button onclick="startToSee();">點選跳轉到小碼哥官網</button>

<script>
    /*點選跳轉到小碼哥官網*/
    function startToSee() {
        window.location.href='http://www.520it.com';
    }
</script>

</body>
</html>
```



### 8.2document DOM 操作( 一)..

#### 1.documnet的兩大作用

[1.動態的獲取到整個網頁中的所有標籤(元素、節點...)]()

[2.對拿到的標籤進行CRUD(增刪改查)]()

#### 案例1.:

動態往body中新增文字和標籤(增加標籤)

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>02-documnet</title>
</head>
<body>
    <script>
//        1. 動態往body中新增文字和標籤
        document.write('hello world !');
        document.write('<button>我是一個button</button>');
        document.write('<img src="image/image_01.jpg" alt="">');

    </script>
</body>
</html>
```



#### 案例2:

切換圖片(獲取和修改標籤)



```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01-圖片的切換</title>
</head>
<body>

<img id="images" src="image/image_01.jpg" alt="">

<button onclick="changeImage();">切換圖片</button>
    <script>
        function changeImage() {
            //1.拿到img標籤
//            var img=document.getElementsByTagName('img')[0];//通過tag獲取物件
            var img=document.getElementById('images');//通過id獲取物件
            //2.修改標籤
            img.src='image/image_02.jpg';
        }
    </script>
</body>
</html>
```



來回切換圖片



```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>02-來回切換圖片</title>
</head>
<body>

<img src="image/image_01.jpg" alt="">
<button >來回切換圖片</button>


<script>

    //1.拿到img標籤的物件
    var img=document.getElementsByTagName('img')[0];
    //2.拿到button標籤的物件
    var button=document.getElementsByTagName('button')[0];

    //3.給button新增一個點選事件
    button.onclick=function () {
        //4.判斷
        console.log(img.src);
//        if(img.src=='image/image_01.jpg'){//有問題
        /**indexOf 、 lastIndexOf: 有某個字元竄,則返回任意任意正數,沒有找到則返回-1  */
        if(img.src.indexOf('image/image_01.jpg')!=-1){
            img.src='image/image_02.jpg';
        }else{
            img.src='image/image_01.jpg';
        }
    };
</script>

</body>
</html>
```



#### 案例3:

圖片的顯示和隱藏(獲取和修改標籤)



```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>03-顯示和隱藏</title>
</head>
<body>
<img id="icon" src="image/image_01.jpg" alt="">
<br>
<p  name="word" >很美的圖片...</p>


<button class="btn"> 隱藏</button>
<script>
    //1.拿到標籤
    var icon=document.getElementById('icon');
    var word=document.getElementsByName('word')[0];
    var btn=document.getElementsByClassName('btn')[0];

    //2.監聽按鈕的點選事件
    btn.onclick=function () {
        if(btn.innerText=='隱藏'){
            //icon.style:是獲取到標籤的樣式
            icon.style.display='none';
            word.style.display='none';
            btn.innerText='顯示';
        }else{
            //icon.style:是獲取到標籤的樣式
            icon.style.display='inline-block';
            word.style.display='block';
            btn.innerText='隱藏';
        }
    }

</script>
</body>
</html>
```



#### 總結:

1)Document的**DOM操作**就是對HTML中的**標籤**進行**增刪改查**

2)想操作哪個標籤,就要先拿到該**標籤的物件**



## 9.JS中DMO操作(二)

### 9.1JS常用事件

   **JS中的事件函式**都是以**on開頭**,類似Android中的點選事件

1. 當視窗載入完畢事件
2. 滑鼠事件(類似android中的手指點選事件)
3. 獲取焦點事件

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>04-JS常用的事件</title>
</head>
<body>
<img class="icon" src="image/image_01.jpg" alt="">
<input type="text" id="inputs">
<script>
//    1. 當視窗載入完畢事件
        window.onload=function () {
            console.log(' ---視窗載入完畢 回撥 ---')
//    2. 滑鼠事件(類似android中的手指點選事件)
        var icon=document.getElementsByClassName('icon')[0];
        //滑鼠進入
        icon.onmouseover=function () {
            console.log('-- 滑鼠進入 --');
        }
        //滑鼠移動
        icon.onmousemove=function () {
            console.log('-- 滑鼠移動 --');
        }
        //滑鼠離開
        icon.onmouseout=function () {
            console.log('-- 滑鼠離開 --');
        }

//    3. 獲取焦點事件
        var inputs=document.getElementById('inputs');
        inputs.onfocus=function () {
            inputs.style.width='300px';
            inputs.style.height='60px';
            inputs.style.outline='none';
            /*inputs.style.border='1px solid blue';*/
        }
        }
</script>
</body>
</html>
```



### 9.2.圖片瀏覽器


```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>05-圖片瀏覽器</title>
</head>
<body>

<img src="image/image_01.jpg" alt="" class="icon">

<br>

<button class="pre">上一張</button>
<button class="next">下一張</button>

<script>
        //1.找到標籤
        var icon=document.getElementsByClassName('icon')[0];
        var pre=document.getElementsByClassName('pre')[0];
        var next=document.getElementsByClassName('next')[0];
        var currentIndex=1;
        var  min=1;
        var  max=3;
        //2.點選上一張
        pre.onclick=function () {
            if(currentIndex==min){
                currentIndex=3;
            }else{
                currentIndex-=1;
            }
            icon.src='image/image_0'+currentIndex+'.jpg';
            console.log('上一張'+icon.src);
        }
        //3.點選下一張
        next.onclick=function () {
            if(currentIndex==max){
                currentIndex=1;
            }else{
                currentIndex+=1;
            }
            icon.src='image/image_0'+currentIndex+'.jpg';
            console.log('下一張'+icon.src);
        }

</script>
</body>
</html>
```





### 9.3JS實現定時器





```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>06-定時器</title>
    <style>
        body{
            background-color: black;
            text-align: center;
        }
        p{
            color: red;
            font-size: 60px;
            display: none;
        }
        img{
            display: none;
        }
        div{
            color: red;
            font-size: 160px;
            margin-top: 100px;
        }
    </style>
</head>
<body>

<img src="image/flower.gif" alt="">
<p>I LOVE YOU </p>
<div>10</div>

<script>
    //1.拿到要操作的標籤
    var icon=document.getElementsByTagName('img')[0];
    var word=document.getElementsByTagName('p')[0];
    var div=document.getElementsByTagName('div')[0];
    //2.新增定時器
    //var time
    this.time=setInterval(function () {
        console.log(' -- -- ')
        div.innerText-=1;
        if(div.innerText==0){
                //3.停止定時
                clearInterval(this.time);
                //4.顯示和隱藏
                icon.style.display='inline-block';
                word.style.display='block';
                div.style.display='none';