目錄
JS 來實作" >用JS 來實作
用 flex 實作
圖片實現" >用圖片實現
首頁 web前端 css教學 適配各種尺寸的設備的實現

適配各種尺寸的設備的實現

Apr 04, 2017 am 11:12 AM

有時候我們會有讓內容剛好佔一屏,並且適配各種尺寸的設備的需求。我們先不談這樣做會導致在一些設備上的顯示不盡人意,直接談如何實現。

我們會第一個想到的可能是,頁面內所有區塊級元素的寬度,高度,邊距值(margin,padding)都用百分數唄。
在水平方向,寬度,水平方向的間距值如果為百分數的值,其值是相對於其父元素的寬度來計算的,可以實現水平方向適配不同尺寸的設備。
在垂直方向,高度值如果為百分數,其值是相對於父元素的高度來計算的。但垂直方向的間距值如果為百分數的話,其值是相對與父元素寬度(而非高度)來計算的,呵呵(無奈~~~)。

因此,水平方向我們可以用百分數的方案來做適配。垂直方向需要其他方案。

我們能不能用 CSS3 的 Media Queries 呢?做不到。雖然 Media Queries 支援對裝置高度的查詢,但我們不可能列舉所有裝置的高度,為每種不同高度的裝置寫一套 CSS 吧。如果只需相容於幾種高度的設備,可以考慮這個方案。

下面介紹幾個解決方案。

JS 來實作

原理是,在元素上設定高度用data-style-height 屬性,其值為在父元素高度中佔的份數。頁面初始化時,JS 會根據該值,父元素的高度,父元素的高度的總份數,給予該元素的高度賦值。如

<p>
  <p id="a" data-style-height="1"></p>
  <p id="b" data-style-height="2"></p>
</p>
登入後複製

在上面程式碼中,父元素的高度的總份數為 3,a 的高度佔 1 份,b 的高度 佔 2 份。假設父元素的高度是 100px, 則 a 的高度為 (1 / 3 * 100)px,b 的高度為 (2 / 3 * 100)px

相同的,設定間距用這些屬性: data-style-margin-top, data-style-margin-bottom, data-style-# padding-top, data-style-padding-bottom。頁面初始化時,JS 會根據屬性值給元素的對應的間距賦值。

具體實作程式碼請看這裡。

用 flex 實作

原理和用 JS 實現基本一致。用 flex 實作只是用 flex-grow 的值大於 0 的 flex 元素在父空間很大時,會自動變大的特性來取代 JS 的計算。

具體的原理是,在元素上設定高度用data-style-height 屬性,其父元素設定樣式<a href="http://www.php.cn/wiki/927.html" target="_blank">display</a>:flex;flex-<a href="http://www.php.cn/wiki/873.html" target="_blank">direction</a>: column;。頁面初始化時,JS 會根據該值給該元素設定 flex-grow:屬性值。間距用帶有 data-style-height 屬性並且元素內容為空的元素來實現。

具體實作程式碼請看這裡。

圖片實現

如果內容不需要交互,可以將整個頁面做成一張圖片來實現。當然,這樣做後期維護會比較坑爹。

HTML:

<img class="fullpage" src="...">
登入後複製

CSS:

html,body{
  height: 100%;
}
.fullpage{
  width: 100%;
  height: 100%;
}
登入後複製


#

以上是適配各種尺寸的設備的實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue團隊完成了完成,我知道這是一項巨大的努力,而且很長時間。所有新文檔也是如此。

您可以從瀏覽器獲得有效的CSS屬性值嗎? 您可以從瀏覽器獲得有效的CSS屬性值嗎? Apr 02, 2025 pm 06:17 PM

我有人寫了這個非常合法的問題。 Lea只是在博客上介紹瞭如何從瀏覽器中獲得有效的CSS屬性。那樣的是這樣。

在CI/CD上有點 在CI/CD上有點 Apr 02, 2025 pm 06:21 PM

我說的“網站”比“移動應用程序”更合適,但我喜歡Max Lynch的框架:

帶有粘性定位的堆疊卡和一點點的雜物 帶有粘性定位的堆疊卡和一點點的雜物 Apr 03, 2025 am 10:30 AM

前幾天,我發現了科里·金尼文(Corey Ginnivan)網站上的這一點,當您滾動時,彼此之間的卡片堆放集。

在WordPress塊編輯器中使用Markdown和本地化 在WordPress塊編輯器中使用Markdown和本地化 Apr 02, 2025 am 04:27 AM

如果我們需要直接在WordPress編輯器中向用戶顯示文檔,那麼最佳方法是什麼?

比較瀏覽器的響應式設計 比較瀏覽器的響應式設計 Apr 02, 2025 pm 06:25 PM

這些桌面應用程序中有許多目標是同時在不同的維度上顯示您的網站。因此,例如,您可以寫作

如何將CSS網格用於粘頭和頁腳 如何將CSS網格用於粘頭和頁腳 Apr 02, 2025 pm 06:29 PM

CSS網格是一系列屬性的集合,旨在使佈局比以往任何時候都容易。像任何東西一樣,那裡有一點學習曲線,但是網格是

Google字體可變字體 Google字體可變字體 Apr 09, 2025 am 10:42 AM

我看到Google字體推出了新設計(Tweet)。與上一次大型重新設計相比,這感覺更加迭代。我幾乎無法分辨出區別

See all articles