1. 程式人生 > >網頁開發學習(一):製作一份邀請函

網頁開發學習(一):製作一份邀請函

網頁開發設計是在面試創新實驗室時面試官給的二面試題,讓自己設計實現一個簡單的網頁。所以我決定來做一個邀請函網頁,並將開發過程寫在部落格上供有需要的朋友們檢視。
網頁開發工具有很多,我使用的是對新手較為友好的Dreamweaver,其優點在於簡便、直觀、功能豐富,簡稱為“傻瓜化”。下載請點選這裡。

1.1 建立首個HTML5頁面

在準備好的開發工具中,首先輸入第一行HTML程式碼,如下:

<!doctype html>

接下來,我們需要為頁面構建最基本的結構框架。首先要建立最外側的圍“圍牆”,來囊括整個頁面,這需要使用到< html >標籤,後續所有頁面內容都解除安裝這對標籤之內。而圍牆之內又分為“頭”和“身體”兩部分,分別用< head >和< body >標籤來指定。

<html>
    <head>
    </head>
    <body>
    </body>
</html>

< head >類似“身份證”,裡面需要兩項基本資訊,一項是“名字”和“語言”。
正如每個人都有一個名字,< head >中唯一必須的元素就是< title >,即頁面的標題。此外,還需要標註“語言”來使瀏覽器正確解讀我們的頁面而不會出現亂碼。

<head>
<meta charset="UTF-8">
<title>HTML5學習邀請函</title
>
</head>

< body >標籤中則包含了所有要呈現給瀏覽者的內容資訊。

<head>
Let's Learn HTML5
</head>

.

1.2 增加必要的頁面元素

為了對頁面內容加以充實,我們使用標題標籤。在HTML的各種標籤中,標題標籤有六個,按從大到小的層次結構為< h1 >到< h6 >。在這裡我們就用< h1 >。

<body>
    <h1>Let's Learn HTML5</h1>
</body>

接著要新增說明文字。說明文字放在段落標籤< p >裡。

<body>
    <h1>Let's Learn HTML5</h1>
    <p>發揮您的美感和想象力,探索Web開發的無限可能性,先誠邀您一同踏上HTML5的學習之路。</p>
</body>

最後是新增按鈕。按鈕的實質是文字連結,單擊後跳轉到某個URL。連結的標籤為< a >,跳轉的URL可以用該標籤的href屬性來指定,單擊跳轉到href所指”介面。

<body>
    <h1>Let's Learn HTML5</h1>
    <p>發揮您的美感和想象力,探索Web開發的無限可能性,先誠邀您一同踏上HTML5的學習之路。</p>
    <a href="invite.php">邀您參加</a>
</body>

儲存檔案,開啟之後顯示如下
這裡寫圖片描述

1.3 頁面中看不見的程式碼

頁面中加入區塊,可以將各種標籤放入不同的內容區域中,可以是頁面結構變得井井有條,便於後續的頁面美化。而此次使用的就是通用區塊< div >。修改程式碼如下:

<body>
    <div>
        <h1>Let's Learn HTML5</h1>
        <p>發揮您的美感和想象力,探索Web開發的無限可能性,先誠邀您一同踏上HTML5的學習之路。</p>
        <a href="invite.php">邀您參加</a>
    </div>
</body>

此外,區塊還可以進行命名,我們以便直接對應到這個區塊。新增一個id屬性,命名為container:

    <div id="container">
        <h1>Let's Learn HTML5</h1>
        <p>發揮您的美感和想象力,探索Web開發的無限可能性,先誠邀您一同踏上HTML5的學習之路。</p>
        <a href="invite.php">邀您參加</a>
    </div>

2.1 新增頁面背景

背景圖片要放置在和 index.html相同的路徑下。css樣式程式碼可以指定各種頁面元素的呈現形式,但是在建立css樣式程式碼之前,還需要在頭部建立style元素來作為樣式的容器。

<head>
<meta charset="utf-8">
<title>HTML5學習邀請函</title>
<style type="text/css"></style>
</head>

新增背景需要建立background樣式:

<style type="text/css">
    body{background: url(file:///E:/HTML5/HTML52/images/timg2.jpg)}
    </style>

這裡寫圖片描述
這是網頁的預覽圖,有沒有發現什麼問題?網頁背景圖片沒有和網頁的大小相匹配,出現了兩張或好多張圖片一起填充網頁背景的情況。這是因為圖片解析度和瀏覽器的顯示解析度不同,因此要使圖片根據瀏覽器的解析度進行縮放。這就需要設定background屬性在橫向和縱向上的屬性,使其充滿全屏。

<style type="text/css">
    html,body{height: 100%;}
    body{
        background: url(file:///E:/HTML5/HTML52/images/timg2.jpg)center center;
    background-size:cover;
    }
    </style>

兩個center表示在水平和垂直方向上都是居中,cover表示“充滿”。如圖:
這裡寫圖片描述

想要改變字型顏色的話,需要使用color屬性:

    html,body{
        height: 100%;
        color: #ffffff;
    }

這裡寫圖片描述

2.2 調整區域位置

調整區域位置在網頁設計中很重要,就想寫微信推文,一個好的排版總能讓人心情愉悅想要繼續讀下去,網頁也一樣,不能總是把東西都堆在一塊,或者所有頁面千篇一律。
在這個頁面上,我想讓內容居中顯示,於是通過設定container這個容器(就是前面的id為container的div),使其寬度為100%,即橫向充滿整個螢幕,然後設定其中的文字居中:

#container{
        width: 100%;
        text-align: center;
    }

*在建立css樣式時,id型別的選擇器需要使用“#”來定義。

之後需要變成垂直居中,先對container的父級,即頁面的body做些屬性定義,然後通過改變top屬性來實現:

    body{
        background: url(file:///E:/HTML5/HTML52/images/timg2.jpg)center center;
        background-size:cover;
        margin: 0;
        padding: 0;
        position: relative;
    }
    #container{
        width: 100%;
        text-align: center;
        position: absolute;
        top: 50%;
    }

要控制container的top屬性,就要使container的定位方式為“絕對定位”,而這又需要body(container的父級)為“相對定位”。

top: 50%;使得container的頂部位於整個頁面的50%位置。

不過要使得內容區塊整體居中,還要使container向上移動其高度的一半。但問題在於container的高度是隨著後續的字型、按鈕樣式而不斷動態變化的值,所以不可以直接設定確定值,需要設定transform屬性,設定其translateY的數值,使其在Y軸上移動-50%,即向上移動其高度的一半而無需宣告container具體多高。程式碼如下:

    #container{
        width: 100%;
        text-align: center;
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        -ms-transform:translateY(-50%);
        -moz-transform:translateY(-50%);
        -webkit-transform:translateY(-50%);
        -o-transfrom:translateY(-50%);
    }

這裡多次重複定義是因為,不同瀏覽器對於transform屬性的支援並不相同,為了使得頁面在各種瀏覽器下都能夠正常顯示不得不這麼做。

2.3 調整字型和字號

考慮到不同電腦上字型庫的問題,可能同一個字在不同電腦上顯示不同或生僻字不能顯示,需要設定font-family屬性為sans-serif,即系統預設的無襯線字型;

    html,body{
        height: 100%;
        color: #ffffff;
        font-family: sans-serif;
    }

接下來要調整文字大小,將h1標題的字號設定為了更大的54畫素,並且小寫變大寫:

    h1{
        font-size: 54px;
        text-transform: uppercase;
        margin-bottom: 20px;
    }

設定說明文字的樣式,使段落文字字號更大,且拉開距離,程式碼如下:

    p{
        font-size: 21px;
        margin-bottom: 40px;
    }

測試以上頁面效果如圖:
這裡寫圖片描述

2.4 製作按鈕

按鈕是網頁中非常常見的部件,而近年來圓角細線按鈕頗為流行,其實要製作一個這樣的按鈕也很簡單,只有在按鈕周圍加上寬度為1個畫素的細細的白色邊框,然後給邊框設定一個非常小的圓角數值(通常為2~4畫素),就能完成這樣一個比較精沒美的按鈕。

    a{
        color: #fff;/*#fff是對#ffffff的簡寫。在css中,可以將#rrggbb格式的顏色用#rgb來表示。*/
        font-size:18px;
        border: 1px solid #fff;/*三個引數分別代表 邊框為1畫素寬、實線、白色*/
        border-radius: 3px;
    }

效果圖
這裡寫圖片描述

但是這個按鈕看著還是好醜啊!一個方框緊緊包圍著文字,看著就不舒服。那我們就來再給它加上垂直和水平方向上的內邊距:

    a{
        color: #fff;/*#fff是對#ffffff的簡寫。在css中,可以將#rrggbb格式的顏色用#rgb來表示。*/
        font-size:18px;
        border: 1px solid #fff;/*三個引數分別代表 邊框為1畫素寬、實線、白色*/
        border-radius: 3px;
        padding: 10px 100px;/*增加垂直和水平方向的內邊距*/
        text-decoration:none;/*屬性為none的作用是去掉了下劃線*/
    }

這樣我們就得到了這樣的按鈕樣式,是不是好看很多了呢?
這裡寫圖片描述


3.1 建立外部css檔案

不知不覺間,我們就已經寫了很多css樣式了,而這些樣式全都放在head的style元素中。幸好這個網頁的程式碼比較短,如果你寫了一個比較大比較好看的網頁時,其內部css程式碼會動輒成百上千行,而一旦出現bug…估計你會想掐死自己吧!

所以,為了使css樣式更方便管理,最好將其全部拿出來單獨寫一個.css檔案,然後在.html檔案中引入。注意.css檔案要和.html檔案放在統一路徑下。

新建.css檔案如下:

@charset "utf-8";
/* CSS Document */
    html,body{
        height: 100%;
        color: #ffffff;
        font-family: sans-serif;
    }
    h1{
        font-size: 54px;
        text-transform: uppercase;
        margin-bottom: 20px;
    }
    p{
        font-size: 21px;
        margin-bottom: 40px;
        margin-left: 25px;
        margin-right: 25px;
    }
    a{
        color: #fff;/*#fff是對#ffffff的簡寫。在css中,可以將#rrggbb格式的顏色用#rgb來表示。*/
        font-size:18px;
        border: 1px solid #fff;/*三個引數分別代表 邊框為1畫素寬、實線、白色*/
        border-radius: 3px;
        padding: 10px 100px;/*增加垂直和水平方向的內邊距*/
        text-decoration:none;/*屬性為none的作用是去掉了下劃線*/
    }
    #container{
        width: 100%;
        text-align: center;
        position: absolute;
        top: 50%;
        transform: translateY(-50%);/*IE9*/
        -ms-transform:translateY(-50%);/*Firefox*/
        -moz-transform:translateY(-50%);/*Safari Chrome*/
        -webkit-transform:translateY(-50%);
        -o-transfrom:translateY(-50%);
    }
    body{
        background: url(../HTML52/images/timg2.jpg) center center;
        background-size:cover;
        margin: 0;
        padding: 0;
        position: relative;
    }

在.html檔案中,刪去< style >標籤,改用< link >標籤來引入.css檔案:

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

4.1 建立互動

在前面的步驟中,寫了.html檔案和.css檔案,但是在網頁開發中,其實是包含三大部分的,剩下的一部分就是.js檔案。.js檔案就是JavaScript,網頁中的動畫、互動等功能基本都是由js來完成的。HTML、CSS和JS三者的關係就像身體、衣服和行為之間的關係。

想讓按鈕在發生點選事件後發生變化(例如文字變成“報名成功”,背景變成綠色),就要修改按鈕< a >連結的單擊事件,在裡面加入功能程式碼。不過在此之前,還要給它起個名字,使得JavaScript能夠快速找到這個按鈕。

修改.html檔案中的超連結標籤:

<a href="invite.php" id="enroll">邀您參加</a>

然後要建立< script >標籤,用來寫JavaScript程式碼。但是這個標籤放在哪呢?
答案就是放在頭上(head)和肚子上(body)都可以,但是最好放在肚子最下面(body的底部),因為這樣可以提高載入速度,還能避免JavaScript程式碼的提前解析執行。

<script type="text/javascript"></script>

js中需要定義變數來對應按鈕。要定義變數,就需要使用var關鍵字;而要對應到按鈕元素,可以使用document物件的getElementById方法來獲取id為“enroll”所對應的元素。

在script中新增程式碼:

var enroll = document.getElementById("enroll");

定義好變數之後,怎麼能知道是否對應成功了呢?
簡單,做個測試就好了。新增一行程式碼:

alert(enroll);

如果成功了,瀏覽器會彈出一個包含了連結地址的提醒框。
測試成功後就可以刪掉這行程式碼了。

下一步就是修改單擊事件(enroll的onclick事件)對應的函數了。這個函式裡做了三件事:
1.阻止單擊後瀏覽器預設的URL跳轉;
2.修改按鈕文字從“邀您參加”到“報名成功”;
3.修改按鈕背景顏色為綠色;
在script中新增程式碼:

enroll.onclick = function(e){
    e.preventDefault();//<!--阻止單擊連線後瀏覽器預設的URL跳轉-->
    enroll.innerHTML = "報名成功";//<!--修改enroll元素的innerHTML屬性-->
    enroll.style.background = "#27cb8b";//<!--設定按鈕底色和邊框的顏色-->
    enroll.style.borderColor = "#27cb8b";
}

當然,這只是一個非常簡單的修改,也可以不阻止瀏覽器的跳轉,而把跳轉連結換成你寫的另一個網頁或者其他任何網頁,文字部分的修改也可以根據自己的喜歡隨意更改。

和css檔案一樣,JavaScript也可以拿出來單獨建立一個 .js檔案。
enroll.js檔案程式碼如下:

var enroll = document.getElementById("enroll");
//alert(enroll); //<!--測試,如果定義的變數成功對應到按鈕的話,瀏覽器將彈出一個包含了連結地址的提醒框 -->
enroll.onclick = function(e){
    e.preventDefault();//<!--阻止單擊連線後瀏覽器預設的URL跳轉-->
    enroll.innerHTML = "報名成功";//<!--修改enroll元素的innerHTML屬性-->
    enroll.style.background = "#27cb8b";//<!--設定按鈕底色和邊框的顏色-->
    enroll.style.borderColor = "#27cb8b";
}

而在.html檔案中,修改script為:

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

至此為止我們的頁面就已經完成了!
來看下完整的網頁截圖吧:
這裡寫圖片描述
這裡寫圖片描述


5.1 頁面的移動化

雖然這個網頁在電腦可以很好地顯示出來,但是在手機上呢?
在智慧手機時代,如果一個網頁不能在手機上很好的顯示出來,那…涼了啊兄dei。
其實要想在手機上顯示也很簡單,調整一下文字和邊框的邊距即可:

    p{
        font-size: 21px;
        margin-bottom: 40px;
        margin-left: 25px;
        margin-right: 25px;
    }

這樣可以防止出現文字被擠成一團團的情況發生(那樣真的好醜!)

小技巧:其實在瀏覽器中,都可以在開發者選項中找到“響應式設計檢視”,在這裡就可以進入移動端測試模式,來看看你的網頁在移動端上的顯示情況如何。


背景圖獻上
這裡寫圖片描述

是不是很棒呢~
這裡寫圖片描述