響應式網頁布局 - W3Schools How-Tos 01

W3Schools教學系列

W3Schools是知名的網頁設計/前端開發教學網站,不僅提供HTML、CSS、JavaScript等的詳盡教學,還可以把它當作說明文件(Documents)。有經驗的前端或多或少已經接觸過這個網站,因為它經常出現在搜索結果的前幾項。其中,它的How To部分更是包含了大量非常實用的例子,例如,如何制作SlideShow(圖片輪播)、Lightbox、Parallax(視差效果)等等。因此我想做一系列的影片專門介紹這些How To。

視頻連結

  • B站
  • YouTube

響應式網頁布局

今天已經是2019年,基本上所有新建的網頁都會是響應式(Responsive),以適應在手機顯示。而實現響應式網頁布局主要有3種方法:

  1. Float
  2. Flexbox
  3. CSS Grid

當然,以上三者都需要搭配Media Query使用。

其中CSS Grid是最新,也是我最推崇的,但由于太新,較舊的瀏覽器并不支持。不過,大部分的瀏覽器其實都已經支持了,我個人不會太擔心。要想知道哪些瀏覽器支持CSS Grid(或其他新功能),可以前往Can I Use查詢。CSS Grid完全就是為了網頁布局及其他二維(橫向加縱向)布局而設計的,相信未來的網頁都會采用這一設計。

Flexbox也算新,但瀏覽器支持的情況比CSS Grid要好點。基本上,目前主流已經轉向Flexbox,Bootstrap就是很好的例子。但其實,Flexbox是為一維布局設計的(橫向或縱向),而網頁布局往往是二維的,Flexbox并非最佳選擇,但由于CSS Grid來得太遲,Flexbox又能完成任務,現在不少新的網頁以及前端框架采用Flexbox。

Float原來是設計來處慮理文繞圖之類的問題,后來被用于布局設計。Float布局有著各種各樣的問題,已經在逐漸淘汰中,但由于過去應用太普遍,相信短時間內并不會消失,因此也有必要瞭解。

這三種設計,W3Schools都有介紹。我會分成三篇來講,今天先從最古老的Float開始。

Float網頁布局

Float布局的重點是

  1. 讓元素靠向同一個方向(左或右)
  2. 用百分比控制每一個元素的寬度
  3. 透過Media Query改變元素寬度以適應不同屏幕尺寸

W3Schools的例子

這個例子的重點有兩處,一是設定左右兩柵都向左float,寬度分別為75%和25%:

/* Left column */
.leftcolumn {   float: left;width: 75%;
}/* Right column */
.rightcolumn {float: left;width: 25%;background-color: #f1f1f1;padding-left: 20px;
}

二是Media Query設定當屏幕尺寸小于800px時,讓左右兩柵的寬度都變成100%,以實現響應式設計(Responsive Design):

@media screen and (max-width: 800px) {.leftcolumn, .rightcolumn {   width: 100%;padding: 0;}
}

或許你會注意到導航欄(.topnav)也進行了類似的處理,由于原理一樣,就不多說了。

改進:移動優先原則(Mobile First)

之前介紹過移動優先原則,即先設計小屏幕版,再透過Media Query設定桌面版。W3Schools的這個例子并沒有采取這一原則,我們可以自行修改,使之符合。方法很簡單,只要將Median Query里的內容和外面相應的內容反過來即可,不要忘了把Media Query從max-width改為min-width。

/* Left column */
.leftcolumn {   float: left;width: 100%;
}/* Right column */
.rightcolumn {float: left;width: 100%;background-color: #f1f1f1;padding: 0;
}
@media screen and (min-width: 800px) {.leftcolumn {   width: 75%;}.rightcolumn {width: 25%;padding-left: 20px;}
}

你可以試著自行將.topnav也修改一下,要注意,width如果沒有特別指定便是auto,另外,我發現原本例子采用的400px作為斷點,換成min-width之后沒有反應,需要改為500px。具體原因,我也不太確定,如果你知道的話,歡迎告知。

我開了一個GitHub的倉庫專門放W3Schools系列的代碼,要查看Mobile First版的代碼請移步:W3Schools GitHub

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252273.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252273.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252273.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

正則表達式,終極使用!3個工具,搞定一切

文章前提,本人。不會正則的不論什么語法,僅僅懂一點正則的概念。本人從未自己寫過正則,都是網上收羅進行改動的。相同。沒有時間去研究正則。 可是為了方便,入手了幾個工具。 如今就為大家一一展示。 第一個,regexBuil…

iOS 在tableview的側滑事件里執行tableView.selectRow無效的解決辦法

很奇怪的問題,在執行默認選中一個cell的時候,突然發現這句話不起作用了 (我的場景是:當前cell側滑刪除后,默認選中上一個cell) 搞了半天,終于發現罪魁禍首竟然是因為:這句話寫在了側…

VS2017 C++工程 執行python腳本

我解決了哪怕很小的一個問題,我也想記錄下來來見證我的經歷。 背景: 一、使用libhuru庫生成pdf報告 最近參與一些測試工作,希望測試結束后能夠根據測試得到的數據和圖像自動生成測試報告,最開始調研到了生成報告的庫有libharu和…

標準正弦波變頻電源調制方式的實現

目前變頻電源正不斷向規模化、專業化、智能化、精細化方向發展。變頻電源的技術隨著工業電器電子制造的興起而不斷得到重視和發展。其中,中港揚以正弦脈SPWM為核心變頻電源系統電路便是一個很好的代表。純硬件電路在焊接電路上比較復雜,但是調節出來的SPWM波形比較完…

Jmeter教程索引貼

Jmeter教程索引貼 新的一年即將到來,不知不覺2015年自己在Jmeter方面總結的文章有十幾篇,在此匯總一下,順便也算是個總結吧。2016年,繼續學習技術,總結,寫文章。 一、基礎部分: 使用Jmeter進行h…

類與接口(二)java的四種內部類詳解

引言 內部類,嵌套在另一個類的里面,所以也稱為 嵌套類; 內部類分為以下四種: 靜態內部類成員內部類局部內部類匿名內部類一、靜態內部類 靜態內部類: 一般也稱”靜態嵌套類“,在類中用static聲明的內部類。 因為是stat…

單例設計模式和多線程

單例設計模式 單例&#xff1a;整個項目中&#xff0c;有某個類或者某些特殊的類&#xff0c;屬于該類的對象只能建立一個。 #include<iostream> using namespace std;class MyCAS { private:MyCAS(){}private:static MyCAS *m_instance;public:static MyCAS *GetInstanc…

運行imgui例程

背景&#xff1a;目前在做一個視覺測試系統&#xff0c;需要做一個界面&#xff0c;將相機獲取的圖像&#xff0c;以及測試過程中的數據呈現在界面上&#xff0c;在我印象里&#xff0c;做界面就用qt吧&#xff0c;直到這個月真要開始做界面了&#xff0c;我的領導給我建議用im…

性能測試總結(三)--工具選型篇

性能測試總結(三)--工具選型篇 本篇文章主要簡單總結下性能測試工具的原理以及如何選型。性能測試和功能測試不同&#xff0c;性能測試的執行是基本功能的重復和并發&#xff0c;需要模擬多用戶&#xff0c;在性能測試執行時需要監控指標參數&#xff0c;同時性能測試的結果不是…

創建一個最簡單的imgui測試用例

在上一篇文章中&#xff0c;我們初步認識了一下imgui,并且成功運行了他提供的demo。這只是開始學習imgui的第一步&#xff0c;在實際使用時&#xff0c;我們需要將imgui應用到自己的工程中去&#xff0c;所以你需要具備將imgui加到你工程中去的能力&#xff0c;簡單起見&#x…

idea中maven的setting.xml的配置

2019獨角獸企業重金招聘Python工程師標準>>> <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&qu…

ref和out區別總結

ref&#xff1a;是必需要先初始化才能用,但調用時可以對它什么也不做.out&#xff1a;可以不初始化也能用,但調用時一定要對其賦值(即使已經初始化的也要賦值,哪怕是賦一個和原來一樣的值).轉載于:https://www.cnblogs.com/gjnsmallworld/p/7216206.html

繼 承(面向對象特征之一)

1&#xff1a;成員變量。 當子父類中出現一樣的屬性時&#xff0c;子類類型的對象&#xff0c;調用該屬性&#xff0c;值是子類的屬性值。 如果想要調用父類中的屬性值&#xff0c;需要使用一個關鍵字&#xff1a;super This&#xff1a;代表是本類類型的對象引用。 Super&…

如何將cv::Mat類型轉換為imgui中的ImTextureID類型

背景&#xff1a; 我原來的工程是使用opencv的&#xff0c;所以程序中的圖像都是表示為cv::Mat類型&#xff0c;為了能夠在imgui窗口中顯示我的cv::Mat的圖像&#xff0c;我找到了下面這個函數&#xff1a; void ImGui::Image(ImTextureID user_texture_id, const ImVec2&…

react native 原生模塊橋接的簡單說明

原文出自&#xff1a;https://github.com/prscX/awes...博客鏈接&#xff1a;https://ssshooter.com/2019-02... Android 創建原生模塊包 通過繼承 ReactPackage 為你的原生模塊包創建 Java 類&#xff0c;可以這么寫&#xff1a;覆蓋 createNativeModules 和 createViewManage…

UVa 1354 天平難題 枚舉二叉樹

題意&#xff1a;給出房間寬度 r 和 s 個掛墜的重量 wi&#xff0c;設計一個盡量寬的天平&#xff0c;掛著所有掛墜。天平由一些長度為 1 的木棍組成&#xff0c;木棍的每一端要么掛一個掛墜&#xff0c;要么掛另外一個木棍。 這題卡了很久&#xff0c;看了很多大神的代碼&…

通過指針便利圖像元素

for (size_t y 0; y < image.rows; y) {//row_ptr為第y行的頭指針&#xff0c;unsigned char* row_ptr image.ptr<unsigned char>(y);for (size_t x 0; x < image.cols; x) {//data_ptr: 指向待訪問像素unsigned char* data_ptr &row_ptr[x*image.channels…

[精華][推薦]SSO CAS單點登錄框架學習 搭建詳細步驟及源碼

1.了解單點登錄 SSO 主要特點是: SSO 應用之間使用 Web 協議(如 HTTPS) &#xff0c;并且只有一個登錄入口. SSO 的體系中有下面三種角色: 1) User(多個) 2) Web 應用(多個) 3) SSO 認證中心(一個) 2.SSO 實現包含以下三個原則 1) 所有的登錄都在 SSO 認證中心進行。 2) SS…

電腦下載的M4A格式文件怎么轉換為MP3格式

M4A文件格式并不是一個家喻戶曉的名字&#xff0c;與&#xff2d;&#xff30;&#xff13;格式相比&#xff0c;知名度遠遠落后。但是&#xff0c;這并不意味著它無關緊要&#xff0c;有時候我們下載的音樂可能就是M4A格式的&#xff0c;如果換一個設備播放可能就會出現格式不…

python-for循環

一、功能 for 循環提供了python中最強大的循環結構&#xff08;for循環是一種迭代循環機制&#xff0c;而while循環是條件循環&#xff0c;迭代即重復相同的邏輯操作&#xff0c;每次操作都是基于上一次的結果&#xff0c;而進行的&#xff09; Python for循環可以遍歷任何序列…