壓縮。
我是沒想到還是有人會說,沒有基礎的人才會問html空格的問題,這些細節沒有什么用,而我這里給大家簡單的匯報一下。
首先第一個問題,標簽和標簽之間空格的問題。先看一下這個家伙,這個例子,這兩種寫法有什么區別?直接看這里的例子。第一種寫法包含了一個奇怪的空格,但是第二種寫法是不包含空格的。
這個東西在html里面,它的解析,它的Dome節點中看是看不出來的,而我們看它們的表現完全一致的,要怎么去理解?畢竟寫的代碼不是所有的都會去掛工程畫,這個地方是animate和note的區別,它們的內存結構是不一樣的。
比如第一個節點,它下面包含了5個字節點,有3個是文本節點。再看第二個節點,這個節點下面只有兩個節點,只有兩個span的標簽。去看html的時候,它的表現是字符,標簽是字符的一種結構,但是最終使用的時候是document,它是節點,中間是有轉換的,這是理論。
這里聊的就是text文本節點,而對于文本節點,那里面的東西就非常惡心了,東西就特別多了。比如現在就要這三個字,無壓縮它的寬度,要怎么去計算?找一下無壓縮節點,找的是無壓縮里面文案的節點,它是沒有寬度的,上面可以看到它的寬度是144,這是它渲染出來的,它的寬度是沒有的,這個節點里面是不給提供它的寬高的,這是很惡心的一件事情。
必須得基于容器,基于它外側的容器,來去獲取到它最終的寬度,計算中文的寬度是多少,大家有見過這樣的需求吧。
再說一個,現在要節點信息的位置,比如這里做了個例子,現在要定義文案的偏移量,要怎么去計算?當用第一種方式里面寫的有SPA標簽以后,直接獲取標簽,用行內的標簽來去進行獲取,里面包含了左邊定位的信息,三百八十七。
·但現在要計算第二個節點,它的問題跟剛才的問題是一樣的,如何去獲取到text的節點?它的寬高獲取不到的,沒有偏移量的信息,得進行特殊的計算,這就是其中一個比較大的區別,這個東西就比較操蛋了。
·再來一個跨局跟行內元素的規則,規則包含哪些?標準的規則是所有的子元素,塊菊元素當中所有的子元素要么都是塊菊,要么都是內聯的。看一下它們兩個這種寫法上有沒有區別?這兩種寫法是沒有任何區別的,因為它是跨極,它是內聯的,而內聯和跨極是不允許進行交叉使用的。
它的寫法相當于它的外層又包含了一個隱匿的跨句元素,直接看頁面中表現的效果,它倆的表現效果是一致的,雖然標簽不一樣,但是最終展示的結果是一樣的,它倆的表現形式是一樣的。
如果這個邏輯知道,再解釋一下下面這種寫法,這兩種寫法是一樣的,解釋一下為什么?已知div是跨距元素,跨距元素當中里面所有的節點全部都是跨距元素或者是行內元素,而又知道空格會轉換成text的節點,而Tech的節點是行內元素,所以它的外層又會包成一行隱匿的節點,它是div,所以這里包含div,這里又包含div,有3個空格。
塊級:所有的子元素都是塊,中間兩偏差的兩個一,這兩個元素它倆的表現是一樣的,可以看到它最終表現的效果。
這里引出的額外的概念就是塌陷,沒有內容,沒有div它的content是0,它的高度必須得是0,否則這種實現就會跟理解是有差異的,而這種實現又會產生一些額外的其他的問題。
舉一個例子,往from表單里面,往table里面插入元素,恰巧那一行的數據它就是為空,后端返回這個空詞無串,這個時候要不要進行特殊處理?比如圖中這個table,這個table它就是沒有數據,這兩行就是沒有數據,最終展示的時候可能就是第一行它是正常的,它的高度可能是40,第二行第三行它就是癟了,發現了因為沒有內容產生的原因。
要怎么去解決這個問題?phone表格也是一樣的,它也會有類似的問題。當然還會有一些其他的比較惡心的要求,現在是復文本,現在是編輯代碼,而要求內容跟寫的結構一樣,現在要再怎么去處理第三類?使用PRE標簽,刷新一下,空殼這個問題又得到了一個處理。
這里就涉及到了具體的解析結構、規則,而這些問題聊完以后又可以回到上一個問題,HM中有哪些標簽?關于如何分類的?標簽的分類其實按功能分、按和模型去區分,沒問題都沒問題,但至少所有的類型得加上。
比如hider meter,它們是行類的還是塊兒級?包括直播的時候彈幕上已經提到過行內塊級,有些內容是說錯的,講道理當時就是聽個響,因為答案太普通了。可以按照另外的一種結構來去區分,可以基于轉換后的元素進行區分,而它包含很多。
·第一種:空元素,沒有內容的元素,它的核心是什么?現在寫一個image標簽,里面的標簽內容不要那樣寫,非要這樣去寫,里面加一個奇怪的標簽內容,肯定是標加不進去的,是沒有辦法放到image里面的。包括heart,包括這些里面的其他的標簽全部都是這樣的,最終會做一些特殊的操作來去處理里面的span或者里面文案的內容。
·第二個元素,模板元素。它是用來定義下面模板用的,是比較特殊的,里面的內容不會進行額外的解析。比如現在寫了一個奇怪的標簽,里面加了一個script,這個時候刷起甲會怎樣?刷新一下標簽會進行執行。當然是如果用time play就不會進行執行,它是一個元素的,是一個模板類的標簽,刷新一下不會進行執行。
·第三類,原始文本元素。這類元素其實往下看,主要是看這兩個元素包含可轉移和不可轉移,一般是兩個,提示器寫的也行,一般是兩個。這兩個會進行解析,需要其他的解析器來對里面的代碼去進行解析。但是textl里邊放的這些元素是不會進行解析的。
比如現在把tablet改成taxl,大家注意里面的節點會怎么處理?會去執行嗎?不會執行,并且會把里面的內容放到里面的內容,這個東西也是以前代替template的核心原因。去看一些比較老的實現的時候,比如百度中里面會用一些taxl代替template,因為以前沒這個元素。
·第五個,這兩原始文本算兩個,第五個就是外來元素,這里寫的又比較清楚,非HTML規范的一些元素。特殊的一些元素,外來的不是html里面規范的。
最后就是普通元素,打鼓本身就是筆試題的平替,但是它的內容跟筆試是不一樣的,筆試是有標準答案的,是要打分的,60分以后繼續聊,沒有超過60分就可以走了。
但打鼓不是,拋出一個問題,永遠是論述題,大家來相互的溝通,有可能面試官的這個點不會沒關系,完全可以主動地去提。面試官我覺得這個點不重要,我更了解瀏覽器中編語原理的部分,了解瀏覽器中關于渲染引擎的這一部分,可以基于這個問題來探討一下關于節點,關于剛才這些問題到底是有一個什么樣的答案,這是沒有問題的。
反正一句話,我是不認可沒有技術的人才會問hmr空格問題的,更不認可這些細節問題沒有任何用的言論。
① B/S架構:Browser/Server(瀏覽器/服務器的交互形式。)
② C/S架構:Client/Server(客戶端/服務器的交互形式。)
① 什么是HTML?② 怎么開發HTML?③ 怎么運行HTML?
?由大量的標簽組成,每一個標簽都有開始標簽和結束標簽。
?超文本:圖片、聲音、視頻等
?編輯器有:HBuilder、vscode等
③ 直接采用瀏覽器打開HTML文件就能運行
④ HTML是誰制定的?
?W3C制定了HTML的規范:每個瀏覽器生產廠家都會遵守規范。HTML也會按照規范去寫代碼
?HTML規范目前最高的版本是:HTML5.0,簡稱H5
?我們現在主要學的HTML4.0(基本用法)
?w3school:先出現的,和W3C無關
?w3cschool:后出現的,和W3C無關
?W3C制定了很多規范:HTML/XML/http協議/https協議……
頁面效果圖:
超鏈接的作用:
通過超鏈接可以從瀏覽器向服務器發送請求。
效果圖:
地址欄提交的信息:
?username=abc&userpassowrd=1234&sex=1&aihao=study&aihao=dream&myText=我沒有value屬性;&position=ln&myFile=&myHidden=
14、表單的說明:
let str = "jiajia2023_&^%^&";
console.log(str.match(/.+/));//匹配除換行符以外的任何單個字符
let url = 'http://www.baidu.com'
console.log(url.match(/https?:\/\/w+\.\w+\.\w+/));//['http://www.baidu.com', index: 0, input: 'http://www.baidu.com', groups: undefined]
// 不能匹配換行符
let aStr = `
sfjsjalsjkajjnjn
dgudjg
`;
console.log(aStr.match(/.+/));//['sfjsjalsjkajjnjn', index: 1, input: '\nsfjsjalsjkajjnjn\ndgudjg\n', groups: undefined]
console.log(aStr.match(/.+/s));//s視為單行 ['\nsfjsjalsjkajjnjn\ndgudjg\n', index: 0, input: '\nsfjsjalsjkajjnjn\ndgudjg\n', groups: undefined]
let tel = '010 - 4561237'
console.log(tel.match(/\d+ - \d{7}/));//['010 - 4561237', index: 0, input: '010 - 4561237', groups: undefined]
console.log(tel.match(/\d+\s-\s\d{7}/));//結果同上,可以用空格,也可以用\s
*請認真填寫需求信息,我們會在24小時內與您取得聯系。