計算機科學中,路徑是指向文件系統中某個位置的字符串。路徑可以是絕對的也可以是相對的。這篇文章將詳細解釋絕對路徑和相對路徑的區別,并通過例子來展示它們的使用。
絕對路徑是從文件系統的根目錄(在Windows系統中是驅動器的根,如C:\,在UNIX系統中是/)開始的完整路徑。它包含了從根目錄到目標文件或文件夾的所有目錄名,并以文件或文件夾名結束。
假設我們有一個位于Windows系統D盤的圖片文件,其路徑可能是:
D:\Photos\Holiday\beach.jpg
在UNIX系統中,如果有一個配置文件位于根目錄下的etc文件夾中,其路徑可能是:
/etc/nginx/nginx.conf
無論當前位置在哪里,上述路徑都準確指向了特定的文件。
相對路徑是相對于當前工作目錄的路徑。它不是從根目錄開始,而是從當前目錄開始描述如何到達目標文件或文件夾。
假設當前工作目錄是D:\Photos,要引用Holiday文件夾中的beach.jpg圖片,相對路徑將是:
Holiday\beach.jpg
如果需要引用同一級別目錄下的另一個文件夾中的文件,例如當前工作目錄是D:\Photos\Holiday,要引用Work文件夾中的report.docx文件,相對路徑將使用..來表示上一級目錄:
..\Work\report.docx
在UNIX系統中,如果當前工作目錄是/etc/nginx,要引用同一級別的apache2目錄下的apache2.conf文件,相對路徑將是:
../apache2/apache2.conf
在相對路徑中,有兩個特殊符號經常使用:
使用這些符號,可以在文件系統中向上或向下導航。
在創建網頁時,鏈接到CSS文件、JavaScript文件、圖片或其他網頁通常需要使用路徑。使用絕對路徑或相對路徑取決于資源的位置和你的特定需求。
假設網站的根目錄結構如下:
/ (根目錄)
|-- index.html
|-- about.html
|-- css
| |-- styles.css
|-- images
| |-- logo.png
|-- js
|-- scripts.js
如果在index.html中引用styles.css,相對路徑將是:
<link rel="stylesheet" type="text/css" href="css/styles.css">
如果在index.html中引用logo.png,相對路徑將是:
<img src="images/logo.png" alt="Logo">
如果網站的URL是http://www.example.com,那么引用logo.png的絕對路徑將是:
<img src="http://www.example.com/images/logo.png" alt="Logo">
絕對路徑和相對路徑都是定位文件系統中文件和文件夾的有效方式。絕對路徑提供了明確的位置,不依賴于當前工作目錄,而相對路徑則更加靈活,可以簡化文件的鏈接,尤其是在網頁設計和軟件開發中。理解這兩種路徑的差異和應用場景,對于任何與文件系統交互的活動都是至關重要的。
從本節我們開始正式學習前端開發的課程內容,首先我們從第一個網頁開始了解html和css的基本概念,并通過創建第一個網頁了解vscode的基本使用方法。
HTML的全稱是【超文本標記語言】,,超級文本標記語言是標準通用標記語言下的一個應用,也是一種規范,一種標準,它一個標記語言通過標記符號來標記要顯示的網頁中的各個部分。網頁文件本身是一種文本文件,示例代碼
<!-- demo01.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<p>我的第一個網頁</p>
</body>
</html>
HTML主要控制網頁的內容,通過在文本文件中添加標記符,可以告訴瀏覽器如何顯示其中的內容(如:文字如何處理,畫面如何安排,圖片如何顯示等)。瀏覽器按順序閱讀網頁文件,然后根據標記符解釋和顯示其標記的內容,對書寫出錯的標記將不指出其錯誤,且不停止其解釋執行過程,編制者只能通過顯示效果來分析出錯原因和出錯部位。但需要注意的是,對于不同的瀏覽器,對同一標記符可能會有不完全相同的解釋,因而可能會有不同的顯示效果如下所示:
不同的標簽具有不同的含義,HTML有上百個標簽,有些是不常用的,有些甚至已經被廢棄。很多初學者都會困惑,不知道自己到底要學習哪些標簽。慶幸的是有了這本《前端開發學習手冊》,只要掌握十幾個標簽,就能完成生動的網頁。
在下一節我們會列舉常用的HTML標簽。
CSS全稱【層疊樣式表(英文全稱:Cascading Style Sheets)】。剛才我們了解了,使用HTML可以設置網頁中的內容(標準通用標記語言的一個應用)等文件樣式的計算機語言,那么使用CSS就可以進一步裝飾這些內容,錄入設置文本的字體顏色,或是改變圖片的尺寸等等。如下面的代碼所示,CSS的代碼是在style標簽內部編寫的。示例代碼
<!-- demo02.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
p{
color:red;
}
</style>
</head>
<body>
<p>我的第一個網頁</p>
</body>
</html>
上面的代碼我們可以將p標簽的文字設置成紅色。CSS不僅可以靜態地修飾網頁,還可以配合各種腳本語言動態地對網頁各元素進行格式化。
關于CSS的更多內容,我們會在后續章節繼續討論。
上節我們簡單地概括了什么是HTML和CSS,接下來大家可以在vscode中編寫上面的兩個例子,步驟如下:
通過上面的六步,我們就可以訪問我們自己的第一個網頁了。
疊樣式表(Cascading Style Sheet,簡稱:CSS)是為網頁添加樣式的代碼。本節將介紹 CSS 的基礎知識,并解答類似問題:怎樣將文本設置為黑色或紅色?怎樣將內容顯示在屏幕的特定位置?怎樣用背景圖片或顏色來裝飾網頁?
和 HTML 類似,CSS 也不是真正的編程語言,甚至不是標記語言。它是一門樣式表語言,這也就是說人們可以用它來選擇性地為 HTML 元素添加樣式。舉例來說,要選擇一個 HTML 頁面里所有的段落元素,然后將其中的文本改成紅色,可以這樣寫 CSS:
p {
color: red;
}
不妨試一下:首先新建一個 styles 文件夾,在其中新建一個 style.css 文件,將這三行 CSS 保存在這個新文件中。
然后再將該 CSS 文件連接至 HTML 文檔,否則 CSS 代碼不會對 HTML 文檔在瀏覽器里的顯示效果有任何影響。(如果你沒有完成前幾節的實踐,請復習處理文件 和 HTML 基礎。在筆記本里有這個方面的內容!)
1、打開 index.html 文件,然后將下面一行粘貼到文檔頭(也就是 <head> 和 </head> 標簽之間)。
<link href="styles/style.css" rel="stylesheet">
2、保存 index.html 并用瀏覽器將其打開。應該看到以下頁面:
如果段落文字變紅,那么祝賀你,你已經成功地邁出了 CSS 學習的第一步。
讓我們來仔細看一看上述CSS:
整個結構稱為 規則集(通常簡稱“規則”),各部分釋義如下:
注意其他重要的語法:
如果要同時修改多個屬性,只需要將它們用分號隔開,就像這樣:
p {
color: red;
width: 500px;
border: 1px solid black;
}
也可以選擇多種類型的元素并為它們添加一組相同的樣式。將不同的選擇器用逗號分開。例如:
p, li, h1 {
color: red;
}
選擇器有許多不同的類型。上面只介紹了元素選擇器,用來選擇 HTML 文檔中給定的元素。但是選擇的操作可以更加具體。下面是一些常用的選擇器類型:
選擇器名稱 | 選擇的內容 | 示例 |
元素選擇器(也稱作標簽或類型選擇器) | 所有指定(該)類型的 HTML 元素 | p 選擇 <p> |
ID 選擇器 | 具有特定 ID 的元素(單一 HTML 頁面中,每個 ID 只對應一個元素,一個元素只對應一個 ID) | #my-id 選擇 <p id="my-id"> 或 <a id="my-id"> |
類選擇器 | 具有特定類的元素(單一頁面中,一個類可以有多個實例) | .my-class 選擇 <p class="my-class"> 和 <a class="my-class"> |
屬性選擇器 | 擁有特定屬性的元素 | img[src] 選擇 <img src="myimage.png"> 而不是 <img> |
偽(Pseudo)類選擇器 | 特定狀態下的特定元素(比如鼠標指針懸停) | a:hover 僅在鼠標指針懸停在鏈接上時選擇 <a>。 |
選擇器的種類遠不止于此,更多信息請參閱 選擇器。
譯注:再一次說明,中文字體文件較大,不適合直接用于 Web Font。
在探索了一些 CSS 基礎后,我們來把更多規則和信息添加至 style.css 中,從而讓示例更美觀。首先,讓字體和文本變得更漂亮。
第一步:找到之前Google Font 輸出的地址。并以<link>元素的形式添加進index.html文檔頭(<head>和</head>之間的任意位置)。代碼如下:
<link href="https://fonts.font.im/css?family=Open+Sans" rel="stylesheet" type="text/css">
以上代碼為當前網頁下載 Open Sans 字體,從而使自定義 CSS 中可以對 HTML 元素應用這個字體。
第二步:接下來,刪除 style.css 文件中已有的規則。雖然測試是成功的了,但是紅字看起來并不太舒服。
第三步:將下列代碼添加到相應的位置,用你在 Google Fonts 找到的字體替代 font-family 中的占位行。( font-family 意味著你想要你的文本使用的字體。)這條規則首先為整個頁面設定了一個全局字體和字號(因為 <html> 是整個頁面的父元素,而且它所有的子元素都會繼承相同的 font-size 和 font-family):
html {
/* px 表示 “像素(pixels)”: 基礎字號為 10 像素 */
font-size: 10px;
/* Google fonts 輸出的 CSS */
font-family: 'Open Sans', sans-serif;
}
注:CSS 文檔中所有位于 /* 和 */ 之間的內容都是 CSS 注釋,它會被瀏覽器在渲染代碼時忽略。你可以在這里寫下對你現在要做的事情有幫助的筆記。
譯注:/*``*/ 不可嵌套,/*這樣的注釋是/*不行*/的*/。CSS 不接受 // 注釋。
接下來為文檔體內的元素(<h1> (en-US)、<li>和<p>)設置字號。將標題居中顯示,并為正文設置行高和字間距,從而提高頁面的可讀性。
h1 {
font-size: 60px;
text-align: center;
}
p, li {
font-size: 16px;
/* line-height 后而可以跟不同的參數,如果是數字,就是當前字體大小乘上數字 */
line-height: 2;
letter-spacing: 1px;
}
可以隨時調整這些 px 值來獲得滿意的結果,以下是大體效果:
編寫 CSS 時你會發現,你的工作好像是圍繞著一個一個盒子展開的——設置尺寸、顏色、位置,等等。頁面里大部分 HTML 元素都可以被看作若干層疊的盒子。
并不意外,CSS 布局主要就是基于盒模型的。每個占據頁面空間的塊都有這樣的屬性:
這里還使用了:
開始在頁面中添加更多 CSS 吧!大膽將這些新規則都添加到頁面的底部,而不要糾結改變屬性值會帶來什么結果。
html{
background-color:#00539f;
}
這條規則將整個頁面的背景顏色設置為 所計劃的顏色。
body{
width:600px;
margin:0 auto;
background-color:#ff9500;
padding:0 20px 20px 20px;
border:5px solid black;
}
現在是 <body> 元素。以上條聲明,我們來逐條查看:
h1{
margin: 0;
padding:20px 0;
color: #00539f;
text-shadow:3px 3px 1px black
}
你可能發現頁面的頂部有一個難看的間隙,那是因為瀏覽器會在沒有任何 CSS 的情況下 給 <h1>en-US等元素設置一些默認樣式。但這并不是個好主意,因為我們希望一個沒有任何樣式的網頁也有基本的可讀性。為了去掉那個間隙,我們通過設置margin: 0;來覆蓋默認樣式。
至此,我們已經把標題的上下內邊距設置為 20 像素,并且將標題文本與 HTML 的背景顏色設為一致。
需要注意的是,這里使用了一個 text-shadow 屬性,它可以為元素中的文本提供陰影。四個值含義如下:
不妨嘗試不同的值看看能得出什么結果。
img{
display:block;
margin:0 auto;
}
最后,我們把圖像居中來使頁面更美觀??梢詮陀?body 的margin: 0 auto,但是需要一點點調整。<body>元素是塊級元素,意味著它占據了頁面的空間并且能夠賦予外邊距和其他改變間距的值。而圖片是內聯元素,不具備塊級元素的一些功能。所以為了使圖像有外邊距,我們必須使用display: block 給予其塊級行為。
注:以上說明假定所選圖片小于頁面寬度(600 pixels)。更大的圖片會溢出 body 并占據頁面的其他位置。要解決這個問題,可以:
1)使用 圖片編輯器 來減小圖片寬度; 2)用 CSS 限制圖片大小,即減小 <img> 元素 width 屬性的值(比如 400 px)。
注:如果你暫時不能理解 display: block 和塊級元素與行內元素的差別也沒關系;隨著你對 CSS 學習的深入,你將明白這個問題。
如果你按部就班完成本文的實踐,那么最終可以得到以下頁面
相關推薦:
前端新手看過來,手把手帶你輕松上手html的實操
*請認真填寫需求信息,我們會在24小時內與您取得聯系。