viewport對於移動瀏覽器上的網頁展示比較重要,那麼我們為什麼需要設定viewport呢?viewport到底是個什麼東東?讓我們一起來抽絲剝繭,一點點的揭露它的真相。這裡是翻譯的文章,沒有逐字翻譯。
viewport的作用是限制頁面頂級的包含元素,這聽起來可能有點模糊不清。舉個例子,假設你有乙個流體布局,你的側邊欄寬10%。這個側邊欄會隨著瀏覽器視窗大小的變化增大或縮小。一般來說,所有塊級元素會佔據他們父元素100%的寬度(我們暫時忽略那些例外的情況)。因此這個側邊欄的父母body的寬度和html元素一致, 10%會佔據整個瀏覽器視窗的10%。所有web開發者直覺上都知道和在使用這個事實。
但你可能不太清楚這背後的原理。實際上,元素的寬度是由viewport限制的,元素佔據viewport的100%寬度而viewport事實上又等於瀏覽器視窗的大小(它就是這樣子定義的)。視口不是乙個html概念,因此你別想用css來影響它。在桌面瀏覽器上,它就等於瀏覽器的寬高。在移動瀏覽器上,事情就變的複雜了。
這種狀況產生了一些有意思的結果。你可以在本站上看見他們。請一直滾動到頁面頂部,然後放大直到站點的內容超出了瀏覽器視窗。
現在滾到右邊,你就會看到頂部的藍色條不再排列整齊的。
這種行為是viewport帶來的結果。我設定頂部的藍色條寬度是100%。和viewport一樣寬,而viewport等於瀏覽器視窗大小。關鍵在於,縮放100%的時候這工作的很好,但當我們放大的時候,viewport變得比網頁內容寬度更小。這本身沒有什麼關係,內容會超出元素。html元素的overflow屬性是visible,意味著溢位的內容在這種情況下會顯示出來。
但是藍色條沒有溢位,因為我設定它的寬度是100%。瀏覽器會設定它的寬度是viewport的寬度,它們才不會關心這個寬度是不是太窄了。
你可能想要知道viewport的尺寸。他們可以通過document.documentelement.clientwidth /height來獲得
如果你了解dom的話,你知道document.documentelement事實上是(任何html元素的根元素)。
但不管怎麼樣,viewport會更高一層。如果你給設定乙個寬度,就會帶來影響。
document.documentelement.clientwidth /height總是給出viewport的尺寸,無論的大小是多少。
clientwidth/height總是會給出所有情況下的視口尺寸,但是我們在**找到元素的尺寸呢?答案是documen.docmentelment.offsetwidth/height
這些屬性讓你可以把作為塊級元素訪問,如果你設定乙個寬度的話,offsetwidth就會反映出來
當滑鼠事件觸發後,最多不超過5個屬性可以用來給你一些關於事件發生的位置資訊。對於我們的討論,下面三個是比較重要的
pagex/y: 相對於元素的css畫素座標
clientx/y: 相對於viewport的css畫素座標
screenx/y相對於螢幕的裝置畫素座標
90%情況下,我們會使用pagex/y, 通常情況下我們需要知道相對於文件的事件座標;10%的情況下會使用clientx/y.
最後,我們談一下mediaquery。
有兩個與寬高相關的**查詢:width/height 和 device-width/device-height
1、width/height 使用與document.documentelement.clientwidth/height(視口),採用css畫素。
2、devcie-width/devicen-height 使用和screen.width/height(螢幕)一致的值,採用裝置畫素。
深入淺出AOP(一)
aop事實上非常早之前依照做出來了一些東西,之所以不敢說做出來了。是由於它是什麼?怎麼實現?做出來的東西是不是?先前一直查資料。查到的資料跟著做。到後來發現,aop越來越大,而非常多資料跟aop本身的思想有衝突的地方,所以還有非常多要學習的地方。能夠動態的加入和刪除在切面上的漏記而不影響原來的執行 ...
深入淺出sizeof
int佔 位元組,short佔 位元組 1.0 回答下列問題 答案在文章末尾 1.sizeof char 2.sizeof a 3.sizeof a 4.strlen a 如果你答對了全部四道題,那麼你可以不用細看下面關於sizeof的論述。如果你答錯了部分題目,那麼就跟著我來一起 關於sizeof...
深入淺出ShellExecute
ipconfig c log.txt應如何處理?二樓的朋友,開啟拔號網路這樣 shellexecute null,open c windows rundll32.exe shell32.dll,control rundll c windows system telephon.cpl null,sw ...