果說論壇近期最火的設備,PNA家的nBridge+無疑會是眾人的首選,nBridge+「事件」最初原因何起九段也沒有詳細爬文,但最終的結果對于發燒友來說一定是件好事。也正是因為這一事件,九段對于nBridge+這臺設備突然有了濃厚的興趣,加之手中正好有dCS bridge等等幾臺同類型產品,遂于近日入手一臺,對比把玩多有感悟,利用年末小閑暇亂寫幾句。
不知道喜歡音樂的你是從何時開始聆聽串流音樂的?在九段身邊的很多「老」燒友現在還是不聽的,因為他們覺得串流太復雜總是弄不清細節,還有「香爐」太多,不能很好的把控最終的聲音。
但九段自己是聽串流音樂的,而且聽了好多年。早些年,串流音樂還不盛行,數字播放器仍停留在簡單的外掛硬盤或抓軌再播放等簡單功能上,九段在那個時候就開始接觸數字播放產品。后來,九段購入了iPhone 4手機,我開始透過Apple Airport Express做無線播放,還記得設定完成后,第一次透過手機選曲、播放,那種感覺真的好棒,直至今天依然記憶猶新。
不過,那個時候九段與身邊的「老」音響迷們一樣,認為這種數字串流播放根本就是花拳繡腿,與實體唱片相比根本不在一個量級。因為之后的好多年時間,我在自家系統上依然堅持聆聽實體唱盤,而串流播放只是一個點綴。
直到一日,Apple推出了Apple Music,偶然的機會九段訂閱了一年的服務,這才算是一入「泥潭」再無回身可能。雖然當時的Apple Music國區資源還不夠豐富,好在它的資料庫成長速度驚人,大廠名篇基本都有涉獵,實在找不到的還可以換到美區去緩存下來。對于一名傳統唱盤用家,Apple Music的全新使用感受真的太具吸引力。不足之處,Apple Music的資源多為256kbps的AAC,音質非常欠奉,隨身路上聆聽是可以接受的,但回到家中安靜聆聽卻是很難讓人「安坐」。
很快,一類叫做Roon Ready的器材出現了,配合Roon軟件使用,這簡直就是為音樂發燒友量身定做的產品,從此一用成癮,就此幾乎徹底拋棄iRiver與iTunes。利用Roon的整合功能,九段輕松的把Tidal、Qubuz的服務加入Roon。即使在一些并不高班的Roon Ready設備下,Tidal、Qubuz上的這些音樂資源,哪怕是普通的16bit/44.1kHz的音樂也有著非常優異的聽感。當然,最讓人興奮的還是你一下擁有了成千上萬首頂級品質的音樂曲庫,而且它還在不斷的更新中。這種全新的、超越以往實體唱片可以給予的美妙感受也是促使九段開始研究并入手高級「Bridge」的最大動力。
拿今天要講的PNA nBridge+為例,簡單來說它就是一部連接音樂與硬件DAC解碼的「橋梁」。嚴格來說,這座「橋梁」是專門為數字音樂串流來服務的,包括本地數字音樂以及網路上的串流資源。比如,PNA nBridge+內置了Roon、UPnP以及HQ Player三種主流APP來實現對網上及網內數字音樂的管理、傳輸與播放。
我們只需要將PNA nBridge+插上網線聯入家中的局域網,通過手機瀏覽器APP輸入pna.local網址就可以進入機器的設置界面,然后整個機器的所有操作均可以在這個「簡單」的界面里完成。具體的操作與控制方式我就不在此做過多介紹了,如果有興趣了解的小伙伴可以參考一下耳機俱樂部小白版主與長弓版主的使用分享(http://www.headphoneclub.com/thread-729073-1-5.html;http://www.headphoneclub.com/thread-732691-1-5.html)。
做完以上,我們就可以把PNA nBridge+后面通過USB、RCA同軸、AES甚至I2S等數字信號線連接到自己的DAC解碼器上開始正常使用了。自此你已經可以完全擺脫實體唱片的束縛,不再需要費心調試播放參數,更換碟片,購置唱片架。。。。。。坐在自己的系統前,掏出手機,輕輕點動手指,美妙的音符就飄進了耳中。
九段在使用PNA nBridge+的這段時間里發現其在設計上有一些高明之處,首先是軟件方面。PNA的控制是由登陸自己內置的網頁來實現的,不同于一些品牌產品必須安裝獨立的控制APP,不管是iOS用戶還是Android用戶,都無需擔心適配。同時,不管是用Roon集成Tidal、Qubuz來聆聽網路串流音樂,還是使用各種免費UPnP軟件來播放局域網內電腦、NAS上的本地音樂,甚至直接把硬盤/U盤插入PNA nBridge+直接播放,PNA nBridge+在軟件上都是全面支持的。
然后是硬件方面,這也是PNA最大的優勢部分。雖然PNA是一家新晉品牌,但它的研發團隊卻在業內擁有相當的名氣。PNA的核心設計師脫身于華為網絡設備研發部門,同時也是港灣科技的開創團隊成員之一。港灣科技是一家脫胎于華為的創業公司,曾經創造了中國網絡公司三年銷售額超過十億元人民幣的奇跡。這家公司當年掌控了路由器核心芯片自主研發能力,因為成長速度過快甚至嚴重威脅到了業界龍頭華為的江湖地位,所以其在創立第六個年頭被華為動用100億現金「殺死」。以上,這些硬實力在PNA nBridge+的設計上體現的淋漓盡致。
比如大家最為關心的信號隔離方面,PNA nBridge+使用內置的6節松下18650電池采用3并2串的方式為機器的內網部分供電,而線性電源則負責機器的外網線路供電及電池充電,做到了最大限度的隔離內外網路的串擾以及市電雜訊對于機器內部信號的影響。同時,機器內部采用獨立模塊安裝,數字、網路、供電以及模擬部分全部采用獨立位置封閉安裝,有效避免了各系統間的信號二次干擾。除此,PNA還使用了多層電路板來優化傳輸線路間的干擾問題,并通過取消無線功能、顯示器以及小型繼電器等明顯擁有干擾的功能與配件的使用,從而讓PNA nBridge+的信號純度得到了最佳的優化,這么徹底的信號隔離設計在業界是罕見的。
還有一點設計非常方便,也是九段最愛的功能,那就是PNA nBridge+支持I2S數字輸出。而熟悉I2S數字輸出的小伙伴一定非常清楚這種同步前端ARM,高質量傳輸的源頭數字信號質量是明顯好過AES/EBU等數字接口的,但它也有一個非常「惱人」的問題就是I2S接口接線定義并不統一,每一家品牌都有所不同,所以以往這種接口多只能用于統一品牌的兩臺數字設備間的傳輸,比如dCS、Accuphase、Esoteric等等。但是,PNA nBridge+這次通過軟硬件配合實現了I2S接口定義的靈活設置,用戶通過網頁控制界面可以方便的把PNA nBridge+的I2S接口定義為Gustard、PS Audio、W4S、Holo Audio、L.K.S、Rockna、Denafrip等等主流DAC廠商標準,從而使這些DAC都可以享受PNA nBridge+的I2S高質量數字信號。
九段多年來把玩過不下十臺數字音源,各種檔次類型的產品都有,它們之間最大的差異就是聲音的「模擬」味。這里的「模擬」味與「數字」聲相對,并非指老LP、電子管機器發出的那種信噪比不高的聲音,而是指沒有「鋒利」高頻毛刺、清瘦聲音骨架以及干薄低頻的聲音。尤其是低頻部分,有重量且兼顧解析的低音被老燒友稱為「權威」的低頻,九段一直認為這是判別一臺音響設備檔次高與低的最直觀標準。這次,PNA nBridge+的表現如何呢?
九段以Alice Sara Ott彈奏、Thomas Hengelbrock指揮慕尼黑愛樂的老柴第一鋼琴協奏曲為例。第一樂章開始,作曲家寫下一個辨識度極高的樂曲類型,由法國號起首的四個下行音符響起,然后接上一聲樂團齊奏,繼而是鋼琴以固定三組和弦的上行加入,就此揭開樂曲序幕。這個雄壯的序幕,PNA nBridge+給予音樂十足的勁力,輕松超過九段的NAIM CDX2 CD唱機的聽感。現場的那種沖擊感與恢弘都是非常出眾的,聽鋼琴一直向下的獨奏,重壓和弦下琴弦震動的質地,這些畫面實在寫實,而且和弦帶有十足的重量感與權威感,說服力充足。Alice雖然是一介女子,但彈到這里絲毫不讓須眉,那勁道委實攝人。第二主題情緒漸緩,Alice指下的鋼琴更佳柔美,不僅跟樂團對話,自己雙手也以不同聲部對話著,音樂的層次就這樣展開。木管悠然的唱和,弦樂緩緩輕語,這里的樂器質感非常突出。PNA nBridge+不僅能發揮前面雄渾開朗的齊唱,還能詮釋這里委婉而柔美的氣質。而且,不管是鋼琴張力十足地以和弦直探低音,或是低音弦樂用以襯底的弄弦聲浪,聽起來皆是實實在在,很有存在感的。
再舉一張人聲演唱為例,Sarah Vaughan在1985年的巴黎現場演唱會。「Wave」一曲中,Sarah的聲腔多變,音色多端,加上她善用拉長音來制造尾音的多重變化,加上音量起伏,單是她的歌聲,就夠精彩的了。三重奏輕柔地相伴,大多時候,貝斯、鼓組和鋼琴都在扮演節奏的角色,但鋼琴時而會跳出來轉成合音或對唱。PNA nBridge+讓Sarah的歌聲聽起來特別有血有肉,卻不因添附的厚度和溫度以致失去活潑性,反倒因此讓我們更聚焦在Sarah的歌聲上。PNA nBridge+讓她的歌聲從一個漆黑的舞臺上,以探照燈照射出天后的身影。那時候Sarah已經年過六旬,但歌聲卻顯出成熟老練,那些轉音、抖音、滑音的技巧都堪稱完美,歌唱之間,顯出十足的自信。聽完「Wave」之后,再去聽全然清唱的「Summertime」,就能了解那個舞臺和探照燈的比喻了,也就能認識到年逾花甲的天后那讓后輩汗顏的歌唱實力。
PNA nBridge+的聲音有別于大部分九段聽過的數字音源產品,它擁有非常可觀的素質,但它對于素質的表達并不是傳統數字音源常用的方式,PNA nBridge+不刺激不追求極限更沒有一耳朵越級PK的能力,但它在播放高水準數字音樂時給出了明顯好過同價位傳統CD轉盤的素質,同時還保留了優秀實體唱片的聽感,一種「實在」、「真實」的聽感。尤其是在中低頻部分完全聽不出任何的「數字」味道,我想這也是很多「老燒友」抵觸數字音源的最主要原因。
對于這臺最新版本的PNA nBridge+,九段準備長期留用下去,如果正好你也準備選購一臺類似的頂級數字音源,不妨可以了解試聽下這臺機器,我想它一定可以改變你對于數字音源的一些認知。
我是九段,咱們下期再見!「完」
近在開發一個個人項目時,我冒出了一個嘗試讓瀏覽器說話的想法。不知道該怎么做,于是,我在網上尋找了一下答案,在MDN上,我找到了答案。讓我們來看看如何通過JavaScript讓瀏覽器說話。
讓我們來創建一個基礎函數,這個函數的參數為我們想說的話或者詞,最后讓我們的瀏覽器說出來。我們將利用在大多數現代瀏覽器上都可以使用的原生APIspeechSyntehsis。
function speak(sentence) {
const utterance = new SpeechSynthesisUtterance(sentence)
window.speechSynthesis.speak(utterance)
}
// test
speak('hello world');
信不信由你,以上的代碼就是讓大部分瀏覽器說出一句話所需要的一切!讓我們來看看這里具體發生了什么。
我們創建的speak()函數,該函數以詞句為參數。我們創建了一個發聲對象,他實際上是一個語言請求對象,其中包含了有關說什么和如何說相關的所有數據。
讓我們做一個稍微復雜一點的示例,嘗試修改說出來的單詞的速度和音調。
/**
* @param sentence:要說的句子
* @param pitch: 音調,取值范圍(0 - 2) 默認值:1
* @param rate: 語速,取值范圍(0.1 - 10) 默認值:1
*/
function speak(sentence, pitch, rate) {
const utterance = new SpeechSynthesisUtterance(sentence)
utterance.rate = rate
utterance.pitch = pitch
window.speechSynthesis.speak(utterance)
}
在上面的示例中,我們基于原來函數增加了音調和語速2個參數。在我們創建了發聲對象之后,我們可以直接在發聲對象上直接修改某些屬性。但是,目前還不能通過構造函數或者setter方法來修改。
pitch(音調)是一個浮點數,取值范圍是0到2,默認值是1。這個值的效果可能受到引擎或者聲音的限制。
rate(語速)是一個浮點數,取值范圍是0.1到10,默認值是1。
現在,如果我們使用簡單的句子調用上面的代碼,我們的瀏覽器就會以正常的語速和音調說出下面的話:
npm i -g typescript
我們也可以像調整音調和速度一樣調整音量,讓我們來快速了解一下如何實現
/**
* @param sentence:要說的句子
* @param volume: 音量,取值范圍(0 - 1) 默認值:0.5
*/
function speak(sentence, volume) {
const utterance = new SpeechSynthesisUtterance(sentence)
utterance.volume = volume
window.speechSynthesis.speak(utterance)
}
修改之前的代碼,我們現在傳入音量參數。音量也是一個浮點數,取值范圍0到1,默認值是0.5。
同樣,目前沒有辦法通過構造函數或者setter方法來設置音量。現在,我們給這個函數傳入自己想要的句子和音量就能聽到想要的結果了。
speechSynthesis對象有一些可以派得上用場的函數。我們可以暫停、恢復、甚至取消語言的進度。讓我們快速瀏覽一下:
const utterance = new SpeechSynthesisUtterance('Hello world');
window.speechSynthesis.speak(utterance);
// 暫停
window.speechSynthesis.pause();
// 恢復
window.speechSynthesis.resume();
// 取消
window.speechSynthesis.cancel();
上面的代碼將會說出我們想要的句子,并且這段語音會暫停、恢復,最終取消。你也可以在你的瀏覽器里面試一試上面的代碼。
我們也可以通過speechSynthesis對象上的paused屬性來直接判斷該段音頻是否被暫停,它將會返回一個布爾值來表示該段音頻是否被暫停了。
window.speechSynthesis.paused // Boolean
如果還有一些積壓的等待讀出來的句子怎么辦?嗯,還有一個屬性pending,用來檢查是否有任何等待說出來的語音。它返回一個布爾值,指示是否有待處理的語音。
const utterThis = new SpeechSynthesisUtterance('Hello world');
const utterThat = new SpeechSynthesisUtterance('Hello javascript');
window.speechSynthesis.speak(utterThis);
window.speechSynthesis.speak(utterThat);
window.speechSynthesis.pending;
執行上面的代碼時,將會有兩段語音排隊,并且他們會按照順序播放。當我們獲取pending屬性時,這個值將返回true,因為,有第二段語音在等待播放。
注意:如果你只有一段語音,這個pending屬性將會一直返回false,因為沒有排隊等待播放的語音。
當我們使用SpeechSynthesisUtteranceapi時,我們可以監聽幾個比較有用的事件。讓我們一起看一下:
const utterance = new SpeechSynthesisUtterance('Hello world')
utterance.addEventListener('start', () => console.log('Utterance start'))
utterance.addEventListener('pause', () => console.log('Utterance paused'))
utterance.addEventListener('resume', () => console.log('Utterance resumed'))
utterance.addEventListener('end', () => console.log('Utterance end'))
window.speechSynthesis.speak(utterance)
希望這篇文章足以讓你在瀏覽器里面玩轉“合成語音”啦!你現在應該掌握了如何開始,停止和暫停語音,以及調整語音的速率,音調和音量。
我是一個莫得感情的代碼搬運工,每周會更新1至2篇前端相關的文章,有興趣的老鐵可以掃描下面的二維碼關注或者直接微信搜索前端補習班關注。
精通前端很難,讓我們來一起補補課吧!
好啦,翻譯完畢啦,原文鏈接在此 Use JavaScript to Make Your Browser Speak。
能夠寫出基本的頁面(里面包含圖片、各種標簽和鏈接)
我們主要用的開發工具有chrome、hbuilder、Photoshop
瀏覽器是網頁顯示、運行的平臺,常用的瀏覽器有IE、火狐(Firefox)、谷歌(Chrome)、Safari和Opera等。我們平時稱為五大瀏覽器。
瀏覽器內核又可以分成兩部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎。
渲染引擎 :它負責取得網頁的內容(HTML、XML、圖像等等)、整理訊息(例如加入 CSS 等),以及計算網頁的顯示方式,然后會輸出至顯示器或打印機。瀏覽器的內核的不同對于網頁的語法解釋會有不同,所以渲染的效果也不相同。
JS 引擎 則是解析 Javascript 語言,執行 javascript語言來實現網頁的動態效果。
最開始渲染引擎和 JS 引擎并沒有區分得很明確,后來 JS 引擎越來越獨立,內核就傾向于只指渲染引擎。有一個網頁標準計劃小組制作了一個 ACID 來測試引擎的兼容性和性能。內核的種類很多,如果加上沒什么人使用的非商業的免費內核,可能會有10多種,但是常見的瀏覽器內核可以分這四種:Trident、Gecko、Blink、Webkit。
了解一點:移動端的瀏覽器內核主要說的是系統內置瀏覽器的內核。
Android手機而言,使用率最高的就是Webkit內核,大部分國產瀏覽器宣稱的自己的內核,基本上也是屬于webkit二次開發。
iOS以及WP7平臺上,由于系統原因,系統大部分自帶瀏覽器內核,一般是Safari或者IE內核Trident的
結構標準:結構用于對網頁元素進行整理和分類,咱們主要學的是HTML。 最重要
表現標準:表現用于設置網頁元素的版式、顏色、大小等外觀樣式,主要指的是CSS。
行為標準:行為是指網頁模型的定義及交互的編寫,咱們主要學的是 Javascript
HTML(英文Hyper Text Markup Language的縮寫)中文譯為“超文本標簽語言”。是用來描述網頁的一種語言。
所謂超文本,因為它可以加入圖片、聲音、動畫、多媒體等內容,不僅如此,它還可以從一個文件跳轉到另一個文件,與世界各地主機的文件連接。
<h1> 我是一個大標題 </h1>
注意: 體會 文本 標簽 語言 幾個詞語
總結: HTML 作用就是用標記標簽來描述網頁,把網頁內容在瀏覽器中展示出來。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
1.HTML標簽:
作用所有HTML中標簽的一個根節點。 最大的標簽 根標簽
2 head標簽: 文檔的頭部
文檔的頭部描述了文檔的各種屬性和信息,包括文檔的標題、在 Web 中的位置以及和其他文檔的關系等。絕大多數文檔頭部包含的數據都不會真正作為內容顯示給讀者。
注意在head標簽中我們必須要設置的標簽是title
3.title標簽: 文檔的標題
作用:讓頁面擁有一個屬于自己的標題。
4.body標簽:文檔的主體 以后我們的頁面內容 基本都是放到body里面的
body 元素包含文檔的所有內容(比如文本、超鏈接、圖像、表格和列表等等。)
在HTML頁面中,帶有“< >”符號的元素被稱為HTML標簽,如上面提到的 HTML、head、body都是HTML骨架結構標簽。所謂標簽就是放在“< >” 標簽符中表示某個功能的編碼命令,也稱為HTML標簽或 HTML元素
1.雙標簽
<標簽名> 內容 </標簽名>
該語法中“<標簽名>”表示該標簽的作用開始,一般稱為“開始標簽(start tag)”,“</標簽名>” 表示該標簽的作用結束,一般稱為“結束標簽(end tag)”。和開始標簽相比,結束標簽只是在前面加了一個關閉符“/”。
比如 <body>我是文字 </body>
2.單標簽
<標簽名 />
單標簽也稱空標簽,是指用一個標簽符號即可完整地描述某個功能的標簽。
比如 <br />
標簽的相互關系就分為兩種:
1.嵌套關系
<head> <title> </title> </head>
2.并列關系
<head></head> <body></body>
首先 HTML和CSS是兩種完全不同的語言,我們學的是結構,就只寫HTML標簽,認識標簽就可以了。 不會再給結構標簽指定樣式了。
HTML標簽有很多,這里我們學習最為常用的,后面有些較少用的,我們可以查下手冊就可以了。
排版標簽
單詞縮寫: head 頭部. 標題 title 文檔標題
為了使網頁更具有語義化,我們經常會在頁面中用到標題標簽,HTML提供了6個等級的標題,即
<h1>、<h2>、<h3>、<h4>、<h5>和<h6>
其基本語法格式如下:
<hn> 標題文本 </hn>
<p> 文本內容 </p>
<hr />是單標簽
<br />
div span 是沒有語義的 是我們網頁布局主要的2個盒子 css+div
div 就是 division 的縮寫 分割, 分區的意思 其實有很多div 來組合網頁。
span, 跨度,跨距;范圍
語法格式:
<div> 這是頭部 </div> <span>今日價格</span>
在網頁中,有時需要為文字設置粗體、斜體或下劃線效果,這時就需要用到HTML中的文本格式化標簽,使文字以特殊的方式顯示。
b i s u 只有使用 沒有 強調的意思 strong em del ins 語義更強烈
使用HTML制作網頁時,如果想讓HTML標簽提供更多的信息,可以使用HTML標簽的屬性加以設置。其基本語法格式如下:
<標簽名 屬性1="屬性值1" 屬性2="屬性值2" …> 內容 </標簽名>
在上面的語法中,
1.標簽可以擁有多個屬性,必須寫在開始標簽中,位于標簽名后面。
2.屬性之間不分先后順序,標簽名與屬性、屬性與屬性之間均以空格分開。
3.任何標簽的屬性都有默認值,省略該屬性則取默認值。
采取 鍵值對 的格式 key="value" 的格式
比如:
<hr width="400" />
屬性 是 寬度
值 是 400
單詞縮寫: image 圖像
HTML網頁中任何元素的實現都要依靠HTML標簽,要想在網頁中顯示圖像就需要使用圖像標簽,接下來將詳細介紹圖像標簽<img />以及和他相關的屬性。其基本語法格式如下:
該語法中src屬性用于指定圖像文件的路徑和文件名,他是img標簽的必需屬性。
<img src="圖像URL" />
單詞縮寫: anchor 的縮寫 [???k?(r)] 。基本解釋 錨, 鐵錨 的
在HTML中創建超鏈接非常簡單,只需用標簽環繞需要被鏈接的對象即可,其基本語法格式如下:
<a href="跳轉目標" target="目標窗口的彈出方式">文本或圖像</a>
href:用于指定鏈接目標的url地址,當為標簽應用href屬性時,它就具有了超鏈接的功能。 Hypertext Reference的縮寫。意思是超文本引用
target:用于指定鏈接頁面的打開方式,其取值有self和blank兩種,其中self為默認值,blank為在新窗口中打開方式。
注意:
1.外部鏈接 需要添加 http:// www.baidu.com
2.內部鏈接 直接鏈接內部頁面名稱即可 比如 < a href="index.html"> 首頁
3.如果當時沒有確定鏈接目標時,通常將鏈接標簽的href屬性值定義為“#”(即href="#"),表示該鏈接暫時為一個空鏈接。
4.不僅可以創建文本超鏈接,在網頁中各種網頁元素,如圖像、表格、音頻、視頻等都可以添加超鏈接。
通過創建錨點鏈接,用戶能夠快速定位到目標內容。
創建錨點鏈接分為兩步:
1.使用“a href=”#id名>“鏈接文本"</a>創建鏈接文本(被點擊的) <a href="#two"> 2.使用相應的id名標注跳轉目標的位置。 <h3 id="two">第2集</h3>
base 可以設置整體鏈接的打開狀態
base 寫到 <head> </head> 之間
把所有的連接 都默認添加 target="_blank"
在HTML中還有一種特殊的標簽——注釋標簽。如果需要在HTML文檔中添加一些便于閱讀和理解但又不需要顯示在頁面中的注釋文字,就需要使用注釋標簽。其基本語法格式如下:
<!-- 注釋語句 --> ctrl + / 或者 ctrl +shift + /
注釋內容不會顯示在瀏覽器窗口中,但是作為HTML文檔內容的一部分,也會被下載到用戶的計算機上,查看源代碼時就可以看到。
實際工作中,通常新建一個文件夾專門用于存放圖像文件,這時再插入圖像,就需要采用“路徑”的方式來指定圖像文件的位置。
根目錄 當前目錄
路徑可以分為: 相對路徑和絕對路徑
以引用文件之網頁所在位置為參考基礎,而建立出的目錄路徑。因此,當保存于不同目錄的網頁引用同一個文件時,所使用的路徑將不相同,故稱之為相對路徑。
絕對路徑以Web站點根目錄為參考基礎的目錄路徑。之所以稱為絕對,意指當所有網頁引用同一個文件時,所使用的路徑都是一樣的
“D:webimglogo.gif”,或完整的網絡地址,例如“http://www.itcast.cn/images/l...”。
無序列表的各個列表項之間沒有順序級別之分,是并列的。其基本語法格式如下:
<ul> <li>列表項1</li> <li>列表項2</li> <li>列表項3</li> ...... </ul>
注意:
有序列表即為有排列順序的列表,其各個列表項按照一定的順序排列定義,有序列表的基本語法格式如下:
<ol> <li>列表項1</li> <li>列表項2</li> <li>列表項3</li> ...... </ol>
所有特性基本與ul 一致。
但是實際工作中, 較少用 ol img src="media/1.jpg" />
定義列表常用于對術語或名詞進行解釋和描述,定義列表的列表項前沒有任何項目符號。其基本語法如下:
<dl> <dt>名詞1</dt> <dd>名詞1解釋1</dd> <dd>名詞1解釋2</dd> ... <dt>名詞2</dt> <dd>名詞2解釋1</dd> <dd>名詞2解釋2</dd> ... </dl>
在HTML網頁中,要想創建表格,就需要使用表格相關的標簽。創建表格的基本語法格式如下:
<table> <tr> <td>單元格內的文字</td> ... </tr> ... </table>
在上面的語法中包含三對HTML標簽,分別為 table</table、tr</tr、td</td,他們是創建表格的基本標簽,缺一不可,下面對他們進行具體的解釋
1.table用于定義一個表格。
2.tr 用于定義表格中的一行,必須嵌套在 table標簽中,在 table中包含幾對 tr,就有幾行表格。
3.td /td:用于定義表格中的單元格,必須嵌套在<tr></tr>標簽中,一對 <tr> </tr>中包含幾對<td></td>,就表示該行中有多少列(或多少個單元格)。
注意:
1. <tr></tr>中只能嵌套<td></td> 2. <td></td>標簽,他就像一個容器,可以容納所有的元素
表頭一般位于表格的第一行或第一列,其文本加粗居中,如下圖所示,即為設置了表頭的表格。設置表頭非常簡單,只需用表頭標簽th</th替代相應的單元格標簽td</td即可。
在使用表格進行布局時,可以將表格劃分為頭部、主體和頁腳(頁腳因為有兼容性問題,我們不在贅述),具體 如下所示:
<thead></thead>:用于定義表格的頭部。
必須位于<table></table> 標簽中,一般包含網頁的logo和導航等頭部信息。
<tbody></tbody>:用于定義表格的主體。
位于<table></table>標簽中,一般包含網頁中除頭部和底部之外的其他內容。
表格的標題: caption
定義和用法
caption 元素定義表格標題。
<table> <caption>我是表格標題</caption> </table>
caption 標簽必須緊隨 table 標簽之后。您只能對每個表格定義一個標題。通常這個標題會被居中于表格之上。
跨行合并:rowspan 跨列合并:colspan
合并單元格的思想:
將多個內容合并的時候,就會有多余的東西,把它刪除。 例如 把 3個 td 合并成一個, 那就多余了2個,需要刪除。 公式: 刪除的個數 = 合并的個數 - 1
合并的順序 先上 先左
表格的學習要求: 能手寫表格結構,并且能合并單元格。
表單控件:
包含了具體的表單功能項,如單行文本輸入框、密碼輸入框、復選框、提交按鈕、重置按鈕等。
提示信息:
一個表單中通常還需要包含一些說明性的文字,提示用戶進行填寫和操作。
表單域:
他相當于一個容器,用來容納所有的表單控件和提示信息,可以通過他定義處理表單數據所用程序的url地址,以及數據提交到服務器的方法。如果不定義表單域,表單中的數據就無法傳送到后臺服務器。
在上面的語法中,input /標簽為單標簽,type屬性為其最基本的屬性,其取值有多種,用于指定不同的控件類型。除了type屬性之外,input /標簽還可以定義很多其他的屬性,其常用屬性如下表所示。
label 標簽為 input 元素定義標注(標簽)。
作用: 用于綁定一個表單元素, 當點擊label標簽的時候, 被綁定的表單元素就會獲得輸入焦點
如何綁定元素呢?
for 屬性規定 label 與哪個表單元素綁定。
<label for="male">Male</label> <input type="radio" name="sex" id="male" value="male">
如果需要輸入大量的信息,就需要用到textarea/textarea標簽。通過textarea控件可以輕松地創建多行文本輸入框,其基本語法格式如下:
<textarea cols="每行中的字符數" rows="顯示的行數"> 文本內容 </textarea>
使用select控件定義下拉菜單的基本語法格式如下
<select> <option>選項1</option> <option>選項2</option> <option>選項3</option> ... </select>
注意:
在HTML中,form標簽被用于定義表單域,即創建一個表單,以實現用戶信息的收集和傳遞,form中的所有內容都會被提交給服務器。創建表單的基本語法格式如下:
<form action="url地址" method="提交方式" name="表單名稱"> 各種表單控件 </form>
常用屬性:
注意: 每個表單都應該有自己表單域。
如需轉載,請注明出處,否則將追究法律責任。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。