兩個viewport的傳說 part one

2022-05-21 07:03:38 字數 2926 閱讀 7086

概念:裝置畫素和css畫素

裝置畫素:通常可以通過screen.width/height 獲取

如果你設定乙個元素寬度為128px,你的顯示器為1024px,最大化瀏覽器視窗,元素占來顯示器的1/8。如果縮放200%,元素占來顯示器的1/4。

現代瀏覽器中的縮放只是拉伸來畫素,也就是說,元素並不是從128px變成了256px; 元素還是128 css畫素,即使它占用了256裝置畫素。也就是說,當縮放200%時,1 css px 變成了四個device px;

100%的縮放下,1 css px 正好覆蓋 1 device px:

放大:

縮小:

這裡我們關心的時css px,因為是css px 控制樣式表怎麼渲染。瀏覽器會自動保證你的css 布局拉伸收縮。

現在我們有了清楚的定義,zoom 100%時:

1 css px = 1 裝置 px

這個概念對於解釋下面的內容很有用。在桌面瀏覽器裡,無論你怎麼縮放,css px 都會保證你的布局元素之間的大小比例是一樣的。

螢幕尺寸

讓我們來看一些實際的測量。首先screen.width/height。它們是螢幕的寬高。這些大小是以裝置畫素為基礎的,因為它們是不會變的,是顯示屏的特徵不適瀏覽器的。

然而,你想知道的是瀏覽器視窗內層(即顯示網頁正文的視窗)大小。這關係到你的css 布局。你可以用window.innerwidth/innerheight來獲取。

顯然,window.innerwidth是css px來衡量的。你需要知道你在瀏覽器視窗能放多少元素,並且當使用者放大瀏覽器時元素的數量減少。所以,如果使用者放大瀏覽器,你的可用空間就少了,window.innerwidth/height也變小了。(opera瀏覽器不是這樣,當使用者放大時,window.innerwidth/height不變小,它們時用device px來衡量的,電腦上有點討厭,可是移動端更致命。。)

記住: window.innerwidth/height 包括了滾動條。

window.pagexoffset/pageyoffset, 表示文件的水平和垂直滾動偏移量。通過它們你可以知道使用者滾動了多少。

這些屬性也用css px 衡量的。理論上,當使用者向上滾動了並且放大了,window.pagexoffset/pageyoffset會變化。然而,當使用者縮放時瀏覽器會盡量保持在同乙個元素的位置。

現在我們介紹一些另乙個概念:the viewport(視窗),viewport的作用是為了約束html元素,你可以理解為html元素的上一層元素。

聽起來啃根有點困惑,下面我們給一些實際的例子。假設你有乙個流式布局,其中側邊欄的寬度是10%;當你縮放瀏覽器視窗時,這個側邊欄也縮放。這是怎麼實現的呢?

技術層面,側邊欄是它父元素寬度的10%,可能是,這個問題就變成了的寬度是繼承誰的。

通常,block元素的寬度是它們父元素寬度的100%;所以的寬度和一樣。

那麼,元素的寬度怎麼來的呢?它的寬度就是瀏覽球視窗的寬度 。這就是為什麼側邊欄的寬度是瀏覽器視窗寬度的10%,這一點所有的開發都清楚。

你可能不知道這是怎麼實現的。理論上,元素的寬度被限制在viewport的寬度裡。即元素佔了100%的viewport。

viewport,就是瀏覽器視窗。viewport不是html的結構,所以你不能用css定義它。在電腦端它只是有瀏覽器視窗的寬和高,移動端稍微複雜了些。

consequences

這種狀況有一些奇怪的結果。你可以在本頁面就可以看到一種。滾動到頂部,放大兩到三次,頁面上的內容超出了瀏覽器視窗。

滾動到最右邊,你會看到藍色的條並沒有連起來。

這種結果就是viewport怎麼被定義的。我給了藍色的條寬度100%。100%相對於誰?肯定是元素,它的寬度和viewport又是一樣的,viewport又和瀏覽器視窗一樣的。

裝置畫素,獨立裝置畫素,物理畫素,邏輯畫素,畫素比

1.概念

為來約束html元素的

1.layout viewport,也就是這個瀏覽器預設的viewport

2.visual viewport, 瀏覽器可視區域viewport

3.ideal viewport,移動裝置的理想viewport

the user's visible area of a web page:web頁面的使用者可見區域

- 瀏覽器的放大縮小

用C 實現設計模式 兩個迭代器的傳說

簡介 在物件導向的系統中,設計模式是可被復用的資料結構成為了gamma的 設計模式 書的中心主題。在這篇文章裡,我將 解釋設計模式的原理,同時我將比較在gamma的書中描繪的迭代器設計模式和標準模板庫中實現的迭代器。設計模式的歷史摘要 在物件導向程式的早期,物件模型幾乎被認為開創了 設計和復用的新時...

拯救世界的兩個輔助陣列 銀河英雄傳說

題目 公元五八 一年,地球居民遷移至金牛座 第二行星,在那裡發表銀河聯邦創立宣言,同年改元為宇宙歷元年,並開始向銀河系深處拓展。宇宙歷七九九年,銀河系的兩大軍事集 在巴公尺利恩星域爆發戰爭。泰山壓頂集 宇宙艦隊司令萊因哈特率領十萬餘艘戰艦出征,氣吞山河集 點名將楊威利組織麾下三萬艘戰艦迎敵。楊威利擅...

兩個明星 兩名水貨 兩個英超解說

兩個明星 兩名水貨 兩個英超解說 來自 撓頭蛇的blog 2006 03 30 08 54 42 大中小1 在這場算不上非常精彩的冠軍盃八強戰中,非常精彩的是兩名阿根廷人的表現。乙個是黃色的里克爾梅,他的護球簡直令人絕望 另乙個是藍黑的薩內蒂,他的狂飆突進幾乎讓人忘記了現代足球的陣型這個概念。看了里...