一、前端認知
1. 前端是做什么的?
前端是做 IT系統(tǒng)工程的,負責信息化系統(tǒng)的設(shè)計、建設(shè),包括設(shè)備、系統(tǒng)、數(shù)據(jù)庫、應(yīng)用系統(tǒng)的建設(shè)。
2. 開發(fā)流程

3. 前端開發(fā)的核心語言
- HTML——結(jié)構(gòu)
- CSS——樣式
- JS——行為
二、HTML
HTML(Hypertext Markup Language)翻譯過來就是 超文本標記語言。
超文本即超越文本,可以顯示 文字 圖片 視頻 音頻,最重要的是可以包含超鏈接。
標記語言:當我們把特定的英文單詞放入到我們的標記(單標記:</>、雙標記<></>)當中,我們的標記具有了新的語義,而由具有特定語義的標記的規(guī)范,我們可以稱之為標記語言。
當我們將英語單詞放入到標記當中,這時候我們可以稱之為 標簽(單標簽、雙標簽)。
HTML的基本結(jié)構(gòu)
<!DOCTYPE html>
<!--
文檔頭(類型)聲明
不是標簽,代表的是 HTML 5 的標準
-->
<html>
<!--
根元素
所有的標簽都要放在根元素中
-->
<head>
<!--
頭部
里面包含的絕大部分內(nèi)容都是不可見的,
里面的內(nèi)容主要用于輔助頁面的展示
-->
<title>頁面標題</title><!-- 定義頁面標題 -->
<meta charset="utf-8"/><!-- 定義頁面的元數(shù)據(jù) -->
<!-- chasrt="utf-8" 針對搜索引擎和解析格式的屬性 -->
</head>
<body>
<!--
里面包含的絕大部分在頁面中都是可見的,
主要用于搭建 HTML 結(jié)構(gòu)
-->
</body>
</html>
三、CSS
CSS(Cascading Style Sheets )翻譯過來就是層疊樣式表。
CSS 就是用來裝飾我們的 HTML 的。就像我用 HTML 寫了一段文字,但是文字的顏色,文字大小,字體等等就得依靠 CSS 來修飾了。
1. CSS 的引入方式
- 內(nèi)聯(lián)樣式表
<div style="width:100px;height:100px;background-color:red;"></div>

- 內(nèi)部樣式表
寫在<head></head>內(nèi)部
<head>
<style type="text/css">
div{
width: 100px;
height: 100px;
background: red;
}
</style>
</head>

- 外部樣式表
單獨寫在一個文件中,通過 link 進行引入
rel:當前引入文件和文件本身的關(guān)系
type:當前引入文件的編碼格式
href:用于書寫引入外部樣式所處位置
<head>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>

2. CSS 選擇器
當我們使用內(nèi)聯(lián)樣式的時候,CSS 樣式可以明確的修改我們想要修改樣式的標簽。如果我們把 CSS 樣式寫在內(nèi)部或者外部的時候,就需要通過 CSS 選擇器來選出我們想要修改樣式的標簽。
CSS 選擇器分為三種
- 標簽名選擇器
div{width:100px;...}
會直接選擇某一類標簽,會針對這一類標簽全部生效。
優(yōu)先級:1 - 類選擇器
.div{width:100px;...}
使用類選擇器時,需要我們給標簽寫上類名,如<div class="div"></div>。類選擇器會針對某一類具有相同類名的標簽,同名 class 可以存在多個。
優(yōu)先級:10 - ID 選擇器
#div{width:100px;...}
使用 ID 選擇器時,需要我們給標簽寫上 ID 名,如<div id="div"></div>。ID 選擇器就會針對這一個 ID 名的標簽,同名 ID 只能存在一個。
優(yōu)先級為:100
3. 引入方式的優(yōu)先級
內(nèi)聯(lián)>內(nèi)部 和 外部;
內(nèi)部 和 外部 誰生效
- 如果選擇器優(yōu)先級相同的話,誰后引入誰生效。
- 如果選擇器優(yōu)先級不同,選擇器優(yōu)先級高的生效。
四、盒模型
在 HTML 中,萬物皆是盒模型,只要是 HTML 中的標簽,我們都可以通過設(shè)置 盒模型 相關(guān)的內(nèi)容,對這個元素產(chǎn)生影響。
盒模型由四個部分組成,分別為 content、padding、border以及margin。如下圖所示。

1. content(盒子模型中的內(nèi)容)
下面通過一個 Demo 一起來學(xué)習(xí) 盒模型
<!DOCTYPE html>
<html>
<head>
<title>盒模型</title>
<meta charset="utf-8"/>
<style>
div{
width: 100px;
height: 100px;
background: red;
}
</style>
</head>
<body>
<div></div>
</body>
</html>

通過上面的這一段代碼,我們可以在頁面中看到一個寬高分別為100px的紅色塊。從這里可以看出,盒模型中的content不僅可以設(shè)置寬高(內(nèi)聯(lián)元素除外)還可以加背景。(在瀏覽器中按F12即可打開如上圖的開發(fā)者工具)
1.1. background 的使用
-
background-color 設(shè)置背景顏色
屬性值即是顏色值有五種寫法- 英文 如 red,yellow,blue,cyan...
- 十六進制 如 #ffffff...
- 十六進制簡寫 如 #fff...
- rgb 如 rgb(255,0,255)...
- rgba 如 rgba(255,255,255,0.5)...
background-image 設(shè)置背景圖片
background-image=url("圖片路徑");background-position 設(shè)置背景定位
background-position 有兩個屬性值,第一個一般為橫向偏移量,第二個一般為縱向偏移量。如果只設(shè)置一個數(shù)值,另一個數(shù)值默認是 center。
屬性值可以用:left、right、top、bottom、center 以及 像素。-
backfround-repeat 設(shè)置背景的重復(fù)方式
- 默認值為 repeat 會將背景鋪滿整個盒模型。
- repeat-x 背景橫向平鋪。
- repeat-y 背景縱向平鋪。
- no-repeat 不重復(fù)。
background 的復(fù)合寫法
書寫順序為: 顏色、圖片、定位、重復(fù)方式。background-attachment 設(shè)置背景圖片是否隨頁面滾動
background-attachment 的默認值為 scroll 即背景圖片隨著頁面的滾動而滾動。也可以填寫 fixed 即背景圖片不會隨著頁面滾動,但是會造成偏移量,一般不使用。
接下來稍微修改一下 Demo,看一下例子。
<style>
div{
width: 70%;
height: 1000px;
background: red url("http://cdn-qn0.jianshu.io/assets/apple-touch-icons/
228-0765f118055a1d942fc286fb55f37773.png")center top no-repeat;
background-attachment: fixed;
}
</style>

可以看到簡書的背景圖是固定不動的,將
background-attachment: fixed;注釋掉即可觀察到偏移量了。
2. padding(盒子模型中的內(nèi)邊距)
還是用一個栗子來看看內(nèi)邊距到底是什么。
<!DOCTYPE html>
<html>
<head>
<title>盒模型</title>
<meta charset="utf-8"/>
<style>
div{
width: 100px;
height: 100px;
padding: 100px;
background: red;
}
</style>
</head>
<body>
<div></div>
</body>
</html>

當我的鼠標移到 div 標簽上是,顯示出來 div 的寬高是 300 x 300 。
這是因為我給 div 設(shè)置了 width: 100px; height: 100px;所以 div 的寬高為 100 x 100,中間那塊就是 100 x 100。
另外我給 div 設(shè)置了 padding: 100px;所以 div 的上右下左四個方向都有了 100px 的內(nèi)邊距,為圖中外面一圈所示的,因為內(nèi)邊距是在盒子內(nèi)部的,所以內(nèi)邊距會把我們的盒子撐大。
所以 div 的寬為:padding-left + width+ padding-right = 100 + 100 + 100。同理 div 的高為:padding-top + height + padding-bottom = 100 + 100 + 100。
從上面的式子中可以知道 padding 是分 上右下左 的,我們也可以給每一個邊設(shè)置不同的寬度。例如 上右下左 分別為 10px 20px 30px 40px 就可以這樣寫。
<style>
div{
padding-top: 10px;
padding-right: 20px;
padding-bottom: 30px;
padding-left: 40px;
}
</style>
但是這樣寫還是太過于麻煩了,還有一種更加簡潔的寫法。
<style>
div{
padding: 10px 20px 30px 40px;
}
</style>
這種寫法同樣能夠?qū)崿F(xiàn) 上右下左 分別為 10px 20px 30px 40px 的內(nèi)邊距。
當然,padding 的屬性值可以填寫 1 ~ 4 個不等,不同個數(shù)的屬性值所控制的方向如下圖所示。

3. border(盒子模型中的邊框)
在原來的基礎(chǔ)上給 div 加上 border
<style>
div{
border: 5px solid blue;
}
</style>

可以看到 border 也是算在盒模型之內(nèi)的,border 同樣會影響盒模型的大小。我用的是 border 的復(fù)合寫法,其中包括 邊框的寬度 、邊框的樣式、邊框的顏色,我們也可以拆開來寫。屬性的寫法見下圖。

4. margin(盒子模型中的外邊距)
margin 和 padding 比較相似,但是 margin 是在盒子之外的,用來控制盒子與盒子之間的位置。margin 可以設(shè)置負數(shù)。
margin 有兩種特殊情況
- 如果兩個元素是兄弟關(guān)系時,第一個元素的 margin-bottom 與 第二個元素的 margin-top 產(chǎn)生疊壓
<!DOCTYPE html>
<html>
<head>
<title>盒模型</title>
<meta charset="utf-8"/>
<style>
div{
width: 100px;
height: 100px;
margin: 100px;
}
.div_1{
background: red;
}
.div_2{
background: blue;
}
</style>
</head>
<body>
<div class="div_1"></div>
<div class="div_2"></div>
</body>
</html>

從代碼上來看,紅色塊與藍色塊的距離應(yīng)該是 紅色塊的 margin-bottom,加上藍色塊的 margin-top,但實際上是取盒子之間最大的 margin 值。但是 margin-right 與 margin-left 就不是這樣的情況。
- 如果兩個元素是父子關(guān)系,子級第一個元素的 margin-top 會傳遞給父級
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>盒模型</title>
<style>
.div_1{
width: 300px;
height: 300px;
background: cyan;
}
.div_2{
width: 100px;
height: 100px;
background: red;
}
</style>
</head>
<body>
<div class="div_1">
<div class="div_2"></div>
</div>
</body>
</html>
然后給 div_2 設(shè)置 margin-top: 50px;

這明明不是我想要的效果,那怎么才能夠解決這個問題呢?下面一起來看一下解決辦法。
- 給父級設(shè)置 border
- 給父級設(shè)置 padding
- 給父級設(shè)置
overflow:"hidden";
辦法已經(jīng)告訴你們了,具體的還得你們自己去試。
接下來看一下盒模型的實際大小的計算
橫向:border-left + padding-left + width + padding-right + border-right
縱向:border-top + padding-top + height + padding-bottom + border-bottom
如果文章對你有所幫助,那么請您點一下?
由于本人水平有限,如有錯誤,歡迎大家指正。如果你在操作過程中發(fā)現(xiàn)一些沒有講到的錯誤或者問題,歡迎在評論留言,一起探討,共同學(xué)習(xí)進步!
下一篇文章利用GitHub搭建一個你的博客