- JavaScript 從入門到項目實踐(超值版)
- 聚慕課教育研發中心
- 7675字
- 2019-12-06 15:23:52
第5章
JavaScript開發基礎——CSS知識
◎本章教學微視頻:20個 48分鐘
學習指引
使用CSS技術可以對文檔進行精細的頁面美化,CSS不僅可以對單個頁面進行格式化,還可以對多個頁面使用相同的樣式進行修飾,以達到統一的效果。本章將詳細介紹CSS的相關基礎知識,主要內容包括CSS的相關概念、CSS的基礎語法、CSS的編寫方法、CSS的選擇器以及CSS的調用樣式。
重點導讀
- 掌握CSS的相關概念。
- 掌握CSS的語法基礎。
- 掌握CSS的編寫方法。
- 掌握CSS選擇器的應用。
- 掌握調用CSS樣式的方法。
5.1 CSS的相關概念
CSS是英文Cascading Style Sheets(層疊樣式表單)的縮寫,通常又稱為風格樣式表(Style Sheet)或級聯樣式表,它是用來進行網頁風格設計的。給網頁添加CSS,最大的優勢就是在后期維護中只需要修改代碼即可。
5.1.1 CSS能做什么

通過在網頁中添加CSS樣式表,只要對相應的代碼做一些簡單的修改,就可以改變同一頁面的不同部分,或者不同網頁的外觀和格式。具體來講,CSS的作用有以下幾個方面。
- 在幾乎所有的瀏覽器上都可以使用。
- 以前一些非得通過圖片轉換實現的功能,現在只要用CSS就可以輕松實現,從而更快地下載頁面。
- 使頁面的字體變得更漂亮,更容易編排,使頁面真正賞心悅目。
- 用戶可以輕松地控制頁面的布局。
- 用戶可以將許多網頁的風格、格式同時更新,不用再一頁一頁地更新了。
- 用戶可以將站點上所有的網頁風格都使用一個CSS文件進行控制,只要修改這個CSS文件中相應的行,那么整個站點的所有頁面都會隨之發生變動。
5.1.2 瀏覽器與CSS

CSS制定完成之后,具有了很多新功能,即新樣式。但這些新樣式在瀏覽器中不能獲得完全支持,主要在于各個瀏覽器對CSS的很多細節處理上存在差異。例如,一個標簽的某個屬性被一種瀏覽器支持,而另外一種瀏覽器則不支持,或者兩個瀏覽器都支持,但其顯示效果不一樣。
各主流瀏覽器為了自己產品的利益和推廣,定義了很多私有屬性,以便加強頁面顯示樣式和效果,導致現在每個瀏覽器都存在大量的私有屬性。雖然使用私有屬性可以快速構建效果,但是對網頁設計者來說這是一個大麻煩,設計一個頁面需要考慮在不同瀏覽器上的顯示效果,一個不注意就會導致同一個頁面在不同瀏覽器上顯示效果不一致,甚至有的瀏覽器不同版本之間也具有不同的屬性。
如果所有瀏覽器都支持CSS樣式,那么網頁設計者只需要使用一種統一標簽,就會在不同瀏覽器上顯示統一樣式效果。
當CSS被所有瀏覽器接受和支持的時候,整個網頁設計將會變得非常容易,其布局更加合理,樣式更加美觀,到那個時候,整個Web頁面顯示會煥然一新。雖然現在CSS還沒有完全普及,各個瀏覽器對CSS的支持還處于發展階段,但CSS是一個新的、具有發展潛力很高的技術,在樣式修飾方面,是其他技術無可替代的。學習CSS技術,才能保證不落伍。
5.1.3 CSS的局限性

CSS的局限性主要體現在定位屬性上的局限性以及不同瀏覽器之間的限制。在使用絕對定位屬性的時候,由于元素的位置已經確定,并獨立于文檔之外,所以當元素中的內容發生變化時,其他元素無法根據絕對定位元素的變化而做出相應的調整,最終將會導致頁面中內容重疊或者產生空白。
在使用相對定位屬性的時候,由于頁面中會保留元素原來占有的位置,所以會在原有位置上產生空白區域,同時,由于相對定位的優先級高于普通元素,所以也可能造成元素內容的重疊。
瀏覽器支持的不一致性。瀏覽器的漏洞或缺乏支持的CSS功能,導致不同的瀏覽器顯示出不同的CSS版面編排效果。例如,在微軟IE 6.0的舊版本,執行了許多自己的CSS2.0屬性,曲解了很多重要的屬性,例如width、height和float。
CSS沒有父層選擇器,CSS選擇器無法提供元素的父層或繼承性,以符合某種程度上的標準。先進的選擇器(例如XPath)有助于進行復雜的樣式設計。
不能明確地指定繼承性樣式的繼承性,建立在瀏覽器中DOM元素的層級和具體的規則上。垂直控制的局限元素的水平放置普遍地易于控制,垂直控制則是非憑直覺性的、較迂回的,甚至是不可能的。
5.1.4 CSS的優缺點

CSS通過控制頁面結構的風格,進而控制整個頁面的風格,那么使用CSS控制網頁風格有什么優點與缺點呢?
使用CSS的優點如下。
(1)加速用戶的開發。CSS可以幫助用戶做好基礎工作,因此可以更快地開始開發。例如,如果兩個開發團隊一起工作,那么就可以共享彼此的CSS代碼,從而提高團隊的工作效果。
(2)可以使用跨瀏覽器功能。CSS已經編寫成跨瀏覽器兼容了,所以用戶可以專注于自定義和創建內容而不是調整基礎的樣式,更好的是CSS還會消除瀏覽器特定的bug。
(3)給用戶干凈和對稱的布局。基于網格的CSS建立了一個預定義寬度的多列布局,所以用戶可以專注于創建內容而不是排列文本塊。
(4)強制使用好的網頁設計習慣。CSS強制使用好的習慣,如引入打印樣式表。它還提供了一系列的選擇器,用戶可以在所有使用框架的網站或Web應用中使用,這使得網頁設計具有一致性。
使用CSS的缺點如下。
(1)限制開發自由。因為CSS有標準的網格、選擇器和其他代碼,所以限制了用戶可以設計的東西,如布局大小、網格寬度、按鍵類型、樣式等。
(2)添加額外代碼。CSS不可避免地有一些用戶不需要的代碼,因此需要被迫接受一些額外的代碼。
(3)強迫用戶使用語法。通過使用CSS,用戶需要被迫接受語法的變化,特別是在使用非標準命名模式的情況下。
5.2 CSS的基礎語法
在網頁中加入CSS樣式的目的是將網頁結構代碼與網頁格式風格代碼分離開來,從而使網頁設計者可以對網頁的布局進行更多的控制。
5.2.1 CSS構造規則

構造CSS的規則由3部分組成,分別是選擇符(selector)、屬性(property)和屬性值(value),其基本格式如下:

(1)selector:指選擇符,可以采用多種形式,可以為文檔中的HTML標簽,例如<body>、<table>、<p>等,但是也可以是XML文檔中的標簽。
(2)property:指屬性,是選擇符指定的標簽所包含的屬性。
(3)value:指屬性值,如果定義選擇符的多個屬性,則屬性和屬性值為一組,組與組之間用分號(;)隔開。其基本格式如下:

下面就給出一條樣式規則,如下所示:

該樣式規則選擇符是p,具體作用是為段落標簽<p>提供樣式;color為指定文字顏色屬性;red為屬性值。此樣式表示標簽<p>指定的段落文字為紅色。
如果要為段落設置多種樣式,則可以使用下列語句:

5.2.2 CSS注釋語句

CSS注釋可以幫助用戶對自己寫的CSS文件進行說明,如說明某段CSS代碼所作用的地方、功能、樣式等。
CSS的注釋樣式如下:

5.3 CSS的編寫方法
CSS文件是純文本格式文件,在編寫CSS時,常用的編寫方法有兩種:一種是使用簡單純文本編輯工具,如記事本;另一種是使用專業的CSS編輯工具,如Dreamweaver。
5.3.1 使用記事本編寫CSS

使用記事本編寫CSS,首先打開記事本,然后輸入相應CSS代碼。具體步驟如下。
第一步:打開記事本,輸入HTML網頁代碼,如圖5-1所示。

圖5-1 輸入HTML網頁代碼
第二步:添加CSS代碼。在<head>和</head>標簽中間,添加CSS樣式代碼,如圖5-2所示。從窗口中可以看出,在<head>和</head>標簽中間,添加了一個<style>和</style>標簽,即CSS樣式標簽。在<style>標簽中間,對p樣式進行了設定,設置段落居中顯示并且顏色為紅色。
第三步:運行網頁文件。網頁編輯完成后,使用IE瀏覽器打開,可以看到段落在頁面中間以紅色字體顯示。如圖5-3所示。

圖5-2 添加CSS代碼

圖5-3 運行網頁文件
5.3.2 使用Dreamweaver編寫CSS

Dreamweaver的CSS編輯器具有提示和自動創建CSS功能,深受開發人員喜愛。使用Dreamweaver創建CSS步驟如下。
第一步:創建HTML文檔。使用Dreamweaver創建HTML文檔,此處創建了一個名稱為Chap5.2.html文檔,輸入內容如圖5-4所示。

圖5-4 輸入網頁內容
第二步:添加CSS樣式。在設計模式中,選中“春花秋月何時了……”段落后,右擊并在彈出的快捷菜單中選擇“CSS樣式”→“新建”菜單命令,彈出“新建CSS規則”對話框,在“為CSS規則選擇上下文選擇器類型”下拉列表中,選擇“標簽(重新定義HTML元素)”選項,如圖5-5所示。
第三步:單擊“確定”按鈕,彈出“body的CSS規則定義”對話框,在其中設置相關的類型,如圖5-6所示。
第四步:單擊“確定”按鈕,即可完成段落樣式的設置。設置完成后,HTML文檔內容發生變化。從代碼模式窗口中可以看到,在<head>和</head>標簽中間增加了一個<style>和<\style>標簽,用來放置CSS樣式。其樣式用來修飾段落,如圖5-7所示。

圖5-5 “新建CSS規則”對話框

圖5-6 設置CSS樣式

圖5-7 增加<style>標簽
第五步:運行HTML文檔。在IE瀏覽器中預覽該網頁,其顯示結果如圖5-8所示。可以看到字體顏色設置為淺紅色,大小為12px,字體較粗。

圖5-8 預覽網頁效果
5.4 理解CSS選擇器
選擇器是CSS中很重要的概念,所有HTML中的標簽都是通過不同的CSS選擇器進行控制的。用戶只需要通過選擇器對不同的HTML標簽進行控制,賦予各種樣式聲明,即可實現各種效果。
5.4.1 標簽選擇器

標簽選擇器又稱為標記選擇器,在W3C標準中,又稱為類型選擇器(Type Selector)。CSS標簽選擇器用來聲明HTML標簽采用哪種CSS樣式,也就是重新定義了HTML標簽。因此,每一個HTML標簽的名稱都可以作為相應的標簽選擇器的名稱。
例如,p選擇器就是用于聲明頁面中所有<p>標簽的樣式風格。同樣,可以通過h1選擇器來聲明頁面中所有的<h1>標簽的CSS樣式風格。具體代碼如下所示:

以上CSS代碼聲明了HTML頁面中所有<h1>標簽。文字的顏色都采用紅色,大小都為14px。
每一個CSS選擇器都包括選擇器、屬性和值,其中屬性和值可以為一個,也可以設置多個,從而實現對同一個標簽聲明多種樣式風格的目的,如圖5-9所示。
在這種格式中,既可以聲明一個屬性和值,也可以聲明多個屬性和值,根據具體情況而定。當然,還有另外一種常用的聲明格式,如圖5-10所示。

圖5-9 CSS選擇器格式

圖5-10 CSS選擇器聲明格式
在這種格式中,每一個聲明都不帶分號,而是在兩個聲明之間用分號隔開。同樣,既可以聲明一個屬性和值,也可以聲明多個屬性和值。
注意:CSS對于所有的屬性和值都有相對嚴格的要求。如果聲明的屬性或值不符合該屬性的要求,則不能使該CSS語句生效。
【例5-1】(實例文件:ch05\Chap5.1.html)標簽選擇器的應用示例。

相關的代碼示例請參考Chap5.1.html文件,然后雙擊該文件,在IE瀏覽器里面運行的結果如圖5-11所示。可以看到段落以藍色字體顯示,大小為30px。如果在后期維護中,需要調整段落顏色,只需要修改color屬性值即可。

圖5-11 標簽選擇器應用示例
5.4.2 類別選擇器

類別選擇器允許以一種獨立于文檔元素的方式來指定樣式。該選擇器可以單獨使用,也可以與其他元素結合使用。常用語法格式如下所示:

classValue是選擇器的名稱,具體名稱由CSS制定者自己命名。
【例5-2】(實例文件:ch05\Chap5.2.html)類別選擇器的應用示例。

相關的代碼示例請參考Chap5.2.html文件,然后雙擊該文件,在IE瀏覽器里面運行的結果如圖5-12所示。可以看到第一個段落以藍色字體顯示,大小為20px;第二段落以紅色字體顯示,大小為22px;標題同樣以紅色字體顯示,大小為22px。

圖5-12 類別選擇器應用示例
5.4.3 ID選擇器

ID選擇器允許以一種獨立于文檔元素的方式來指定樣式,在某些方面,ID選擇器類似于類別選擇器,不過也有一些重要差別。首先,ID選擇器前面有一個#號,如圖5-13所示。

圖5-13 ID選擇器結構示意圖
例如,下面的兩個ID選擇器,第一個可以定義元素的顏色為紅色,第二個定義元素的顏色為綠色:

下面的HTML代碼中,id屬性為red的p元素顯示為紅色,而id屬性為green的p元素顯示為綠色。

注意:id屬性只能在每個HTML文檔中出現一次。
【例5-3】(實例文件:ch05\Chap5.3.html)ID選擇器的應用示例。

相關的代碼示例請參考Chap5.3.html文件,然后雙擊該文件,在IE瀏覽器里面運行的結果如圖5-14所示。可以看到標題以藍色字體顯示,大小為20px;第一個段落以紅色字體顯示,大小為22px;第二段落以紅色字體顯示,大小為22px。

圖5-14 ID選擇器應用示例
5.4.4 屬性選擇器

屬性選擇器可以根據元素的屬性及屬性值來選擇元素。如果希望選擇有某個屬性的元素,而不論屬性值是什么,可以使用簡單屬性選擇器。
例如希望把包含標題的所有元素變為紅色,可以寫作:

【例5-4】(實例文件:ch05\Chap5.4.html)屬性選擇器的應用示例。

相關的代碼示例請參考Chap5.4.html文件,然后雙擊該文件,在IE瀏覽器里面運行的結果如圖5-15所示。

圖5-15 屬性選擇器應用示例
5.4.5 子選擇器

子選擇器用來選擇一個父元素直接的子元素,不包括子元素的子元素,它的符號為大于號(>)。請注意這個選擇器與后代選擇器的區別,子選擇器(Child Selector)僅是指它的直接后代,或者可以理解為作用于子元素的第一個后代;而后代選擇器是作用于所有子后代元素。后代選擇器通過空格來進行選擇。
【例5-5】(實例文件:ch05\Chap5.5.html)子選擇器的應用示例。

相關的代碼示例請參考Chap5.5.html文件,然后雙擊該文件,在IE瀏覽器里面運行的結果如圖5-16所示。

圖5-16 子選擇器應用示例
5.4.6 選擇器的嵌套

在CSS選擇器中,可以通過嵌套的方式,對特殊位置的HTML進行聲明,例如當<p>和</p>標簽之間包含<b>和</b>標簽時,就可以使用相應的控制,例如:

表示在類選擇器標簽下的一個id=one標簽的樣式。嵌套聲明代碼如下所示:

以上嵌套聲明代碼表示<p>標簽中的<b>標簽的內容會采用此樣式。在下例中,用戶可以為所有p元素定義一種樣式,另外又為嵌套在marked類別選擇器里的p元素定義另一種樣式。
【例5-6】(實例文件:ch05\Chap5.6.html)嵌套選擇器的應用示例。

相關的代碼示例請參考Chap5.6.html文件,然后雙擊該文件,在IE瀏覽器里面運行的結果如圖5-17所示。

圖5-17 選擇器的嵌套應用示例
提示:選擇器的嵌套在CSS的編寫中可以大大減少對class和id的聲明。因此在構建頁面HTML框架時通常只給外層標簽(父標簽)定義class或者id,內層標簽(子標簽)能通過嵌套表示的則利用嵌套的方式,而不需要再定義新的class或者專用id。只有當子標簽無法利用此規則時,才單獨進行聲明,例如一個<ul>標簽中包含多個<li>標簽,而需要對其中某個<li>標簽單獨設置CSS樣式時才賦給該<li>標簽一個單獨id或者類別,而其他<li>標簽同樣采用“ul li{...}”的嵌套方式來設置。
5.4.7 選擇器的集體聲明

選擇器可以單獨聲明,也可以進行集體聲明,同樣的樣式如果單獨聲明,就會產生很多重復的代碼,所以具有共同屬性的最好進行集體聲明,而且方便控制,達到一改全改的效果。
如h1,h2,table,div{color:red;font-size:20px}對于一些實際頁面的效果,我們希望所有的網頁元素都是用同一種樣式,但又不希望逐個來加入集體聲明,這時可以利用“*”做全局聲明,例如:

注:既然是集體聲明,那么就應該是所有的選擇器都可以放在一起。
CSS集體聲明書寫規范如下:

表示對h1、h2、h3等所有涉及的標簽進行同時CSS屬性修飾。
【例5-7】(實例文件:ch05\Chap5.7.html)選擇器的集體聲明示例。

相關的代碼示例請參考Chap5.7.html文件,然后雙擊該文件,在IE瀏覽器里面運行的結果如圖5-18所示。

圖5-18 選擇器的集體聲明
5.5 調用CSS的樣式
CSS樣式表能很好地控制頁面顯示,以達到分離網頁內容和樣式代碼。CSS樣式表控制HTML頁面達到好的樣式效果,其方式通常包括行內樣式、內嵌樣式、鏈接樣式和導入樣式。
5.5.1 行內樣式

行內樣式是最為簡單的CSS設置方式,需要給每一個標簽都設置style屬性。顧名思義,它和樣式所定義的內容在同一代碼行內。其格式如下所示:

【例5-8】(實例文件:ch05\Chap5.8.html)行內樣式的應用示例。

相關的代碼示例請參考Chap5.8.html文件,然后雙擊該文件,在IE瀏覽器里面運行的結果如圖5-19所示,可以看出各段的文字以不同的效果顯示。

圖5-19 行內樣式的應用示例
行內樣式是最為簡單的CSS使用方法,但由于需要為每一個標簽設置style屬性,后期維護成本依然很高,而且網頁文件容易過大,因此不推薦使用。
5.5.2 嵌入樣式

在HTML頁面內部定義的CSS樣式表,叫作嵌入式CSS樣式表,也就是在HTML文檔的頭部標簽中,使用<style>標簽并在該標簽中定義一系列CSS規則。其格式如下所示:

【例5-9】(實例文件:ch05\Chap5.9.html)嵌入樣式的應用示例。

相關的代碼示例請參考Chap5.9.html文件,然后雙擊該文件,在IE瀏覽器里面運行的結果如圖5-20所示。可以看到網頁背景以綠色顯示,圖片以300px×300px大小顯示。

圖5-20 嵌入樣式的應用示例
5.5.3 鏈接樣式

鏈接式CSS樣式表是使用頻率最高,也是最為實用的方法。它將HTML頁面本身與CSS樣式風格分離為兩個或者多個文件,實現了頁面框架HTML代碼與美工CSS代碼的完全分離,使得前期制作和后期維護都十分方便。
鏈接樣式是指在外部定義CSS樣式表并形成以.css為擴展名的文件,然后在頁面中通過<link>鏈接標簽鏈接到頁面中,而且該鏈接語句必須放在頁面的<head>標簽區,如下所示:

(1)rel指定鏈接到樣式表,其值為stylesheet。
(2)type表示樣式表類型為CSS樣式表。
(3)href指定了CSS樣式表所在位置,此處表示當前路徑下名稱為1.css文件。
【例5-10】(實例文件:ch05\Chap5.10.html)鏈接樣式的使用。

【例5-11】(實例文件:ch05\Chap5.11.css)鏈接文件。

相關的代碼示例請參考Chap5.10.html文件,然后雙擊該文件,在IE瀏覽器里面運行的結果如圖5-21所示。可以看到標題和段落以不同樣式顯示。

圖5-21 鏈接樣式的應用示例
5.5.4 導入樣式

導入樣式和鏈接樣式基本相同,都是創建一個單獨的CSS文件,然后再引入到HTML文件中,只不過語法和運作方式有差別。采用導入樣式的樣式表,在HTML文件初始化時,會被導入到HTML文件內,作為文件的一部分,類似于內嵌效果。而鏈接樣式是在HTML標簽需要樣式風格時才以鏈接方式引入。
導入外部樣式表是指在內部樣式表的<style>標簽中,使用@import導入一個外部樣式表,例如:

導入外部樣式表相當于將樣式表導入到內部樣式表中,其方式更有優勢。導入外部樣式表必須在樣式表的開始部分、其他內部樣式表上面。
【例5-12】(實例文件:ch05\Chap5.12.html)導入樣式的應用示例。

【例5-13】(案例文件:ch05\Chap5.13.css)鏈接文件。

相關的代碼示例請參考Chap5.12.html文件,然后雙擊該文件,在IE瀏覽器里面運行的結果如圖5-22所示。可以看到標題和段落以不同樣式顯示,標題居中顯示顏色為藍色,段落大小為20px并加粗顯示。

圖5-22 導入樣式的應用示例
導入樣式與鏈接樣式相比,最大的優點就是可以一次導入多個CSS文件,其格式如下所示:

5.6 典型案例——制作網頁導航菜單

使用CSS,導航菜單作為網站必不可少的組成部分,關系著網站的可用性和用戶體驗。下面就來制作一個網頁導航菜單。
【例5-14】(實例文件:ch05\制作網頁導航菜單.html)制作網頁導航菜單。
具體步驟如下所示。
第一步:構建HTML頁面。創建HTML頁面,完成基本框架的創建。其代碼如下所示:

在IE 11.0中瀏覽效果如圖5-23所示。
第二步:使用內嵌樣式。如果要對網頁背景進行修飾,需要添加CSS,此處使用內嵌樣式,在<head>標簽中添加CSS。其代碼如下所示:

在IE 11.0中瀏覽效果如圖5-24所示,可以看到此時背景發生了顏色變化。

圖5-23 創建頁面基礎框架

圖5-24 添加頁面背景顏色
第三步:改變文字樣式。添加CSS代碼,改變導航文字的字體樣式,其代碼如下所示:

在IE 11.0中瀏覽效果如圖5-25所示,可以看到字體樣式為Arial。
第四步:去除項目符號。去除標簽UL前面的項目符號,其代碼如下所示:

在IE 11.0中瀏覽效果如圖5-26所示,可以看到文字前面的項目符號取消了。

圖5-25 設置字體樣式

圖5-26 取消項目符號
第五步:添加下畫線。使用CSS樣式為導航文字添加下畫線,其代碼如下所示:

在IE 11.0中瀏覽效果如圖5-27所示,可以看到每個文字下方都添加了一個下畫線。
第六步:修飾導航文字。使用CSS可以為導航菜單添加邊框、區塊等元素。其代碼如下所示:

在IE 11.0中瀏覽效果如圖5-28所示,可以看到導航菜單文字添加了邊框、區塊等元素。

圖5-27 添加文字下畫線

圖5-28 修飾導航文字
第七步:添加背景顏色。在CSS樣式中,為每個導航菜單添加背景顏色,其代碼如下所示:

在IE 11.0中瀏覽效果如圖5-29所示,可以看到每個導航菜單都顯示了背景顏色。
第八步:添加鼠標經過效果。使用CSS可以為導航添加鼠標經過效果,其代碼如下所示:

在IE 11.0中瀏覽效果如圖5-30所示,當鼠標指向某個導航菜單時,背景顏色發生了改變。

圖5-29 添加背景顏色

圖5-30 添加鼠標經過效果
5.7 就業面試技巧與解析
5.7.1 面試技巧與解析(一)
面試官:你覺得你個性上最大的優點是什么?
應聘者:我認為我具有沉著冷靜、條理清楚、樂于助人、關心他人、適應能力強等優點。我相信經過一到兩個月的培訓及項目實踐,我能勝任這份工作。
5.7.2 面試技巧與解析(二)
面試官:你對公司加班有什么看法?
應聘者:如果是工作需要我會義不容辭地加班,再加上我現在單身,沒有任何家庭負擔,可以全身心地投入工作。但同時,我也會提高工作效率,減少不必要的加班。
- iOS Game Programming Cookbook
- Learn Type:Driven Development
- Arduino by Example
- PHP+MySQL網站開發技術項目式教程(第2版)
- 匯編語言程序設計(第3版)
- Microsoft Dynamics GP 2013 Reporting, Second Edition
- Advanced Oracle PL/SQL Developer's Guide(Second Edition)
- Multithreading in C# 5.0 Cookbook
- 智能手機故障檢測與維修從入門到精通
- 區塊鏈架構之美:從比特幣、以太坊、超級賬本看區塊鏈架構設計
- Learning Android Application Testing
- Keil Cx51 V7.0單片機高級語言編程與μVision2應用實踐
- Java 9:Building Robust Modular Applications
- Mastering Python
- 陪孩子像搭積木一樣學編程:Python真好玩+Scratch趣味編程(全2冊)