html左中右自適應布局,CSS左中右自適應布局六種方案與原理

css雖簡單,但細節多,技巧性高,易學難精。

如何實現左右固定300px , 中間寬度自適應?

15f719ea95b2982d721c9bfa126cc148.png

有如下結構

公有樣式, 設置高,設置左右寬度固定300px,左右為紅色,中間為黃色。

.item {

height: 400px;

}

.left,

.right {

width: 300px;

background: #f00;

}

.center {

background: yellow;

}

一. 雙浮動法

.left {

float: left;

}

.right {

float: right;

}

原理:?float不會完全脫離文檔流,會占用原空間

MDN官方解釋:該元素從網頁的正常流動(文檔流)中移除,盡管仍然保持部分的流動性(與絕對定位相反)。

問: 為什么?center?要放在leftr和right之后?

答:

瀏覽器加載頁面順序是從上到下,

left已經左浮動,right右浮動。渲染center時,瀏覽器忽略掉已經脫離文檔流的left和right?,center元素會從頭占滿整行,但發現left還占用著300px?,右邊right又占用了300px,所以center的寬度在left和right之間,達到寬度自適應

二. 絕對定位法

原理: 左右絕對定位,脫離文檔流 。 中間不設置寬度,只設置左右邊距,自動撐滿塊級元素一行的剩余空間

三. 彈性盒子

.wrapper?{

display:?flex;

}

.center?{

flex:?1;

}

父容器設置 display:?flex,左右設置300px, center把flex設置為1 ,效果是否實現了呢?

瀏覽器運行,看上去是對的 ,但實際上屏幕縮小后左右不是固定的300px,寬度會被壓縮。

還需要再添加如下樣式:

.left,.right?{

flex-shrink:?0; /*等同flex:0 0 auto */

}

原理:flex:1 實際上是三個屬性的簡寫 , flex:1; 等同于 flex:1 1 auto;。

簡單的說,分別代表:剩余空間 容器縮小時壓縮比例 最小寬度。具體細節參考:MDN -- 彈性盒子

由此得知,center設置flex:1; ,即為flex:1 1 auto; (自動占滿容器剩余寬度 默認壓縮比例 默認最小寬度)

left和right設置 ?flex-shrink:?0;,flex-shrink就是flex簡寫中的第二個屬性, 等同 flex:0 0 auto; (沒有設置自動占滿容器剩余寬度 0不壓縮 最小寬度默認auto)

問: 為什么left和right設置flex-shrink:?0;等同flex:0 0 auto,其中最小寬度為auto,但是寬度依舊固定為300px?

答: 最小寬度為auto是默認值 , 優先級小于具體元素設置的width。如果設置flex:0 0 400px,那么左右最小寬度為400px,優先級高于元素設置的width

四. 網格布局 grid

最簡單的網格布局

.wrapper?{

display:?grid;

grid-template-columns:?300px 1fr 300px;

}

快速理解: grid-template-columns為父容器屬性,并非表示上右下左,而是表示三個子元素的寬度為 (300px 自動占滿1份剩余空間 300px),如果寫?grid-template-columns:?300px 1fr 2fr 100px;即表示四個子元素寬度分別為300px 1/3剩余空間 2/3剩余空間 100px

五. 表格布局

.wrapper?{

width:?100%;

display:?table;

}

.wrapper>.item:not(.center)?{

display:?table-cell;

}

把左右元素設置為單元格即可,不過該方法在屏幕縮小時,左右固定300px會被壓縮

問: 為什么要設置width為100%?

答: display:table 與table元素類似 ,實際上是行內塊級元素, 而不是塊級元素。

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

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

相關文章

cacti 忘記密碼的方法

忘記密碼的方法如果是admin 的密碼丟失,id 1;其他用戶以此類推。進入mysqlmysql> show databases; mysql> use cacti;mysql> show tables; mysql> update user_auth set passwordmd5("newpassword") where id1;新的cacti密碼就是…

cr3格式是什么意思_佳能rp的cr3如何打開?修圖為什么要用raw格式?轉碼又是什么?...

佳能rp的cr3如何打開?修圖為什么要用raw格式?轉碼又是什么?這是我個人整理的廣大網友的一些答案,不想浪費大家太多時間就在這里分享給大家希望大家可以快速理解。(搜集的廣大網友的回答,方便大家理解,希望他…

SGU traffic light

占位置。。轉載于:https://www.cnblogs.com/usedrosee/p/4669358.html

計算機基礎應用的培養活動記錄,計算機應用基礎綜合實訓

摘要:《計算機應用基礎綜合實訓(Windows7Office 2010 第3版)》是中等職業教育課程改革國家規劃新教材,根據教育部2009年頒布的"中等職業學校計算機應用基礎教學大綱"中職業模塊的要求編寫,在第2版的基礎上修訂而成,經全國中等職業教育教材審定委員會審定通…

cronschedulebuilder 到時還沒運行完_為什么我的軟件編譯時沒問題,運行時卻出錯?...

首先有件事要和大家說一下:我的公眾號現在可以留言了!出于種種不可抗力的原因(你們懂的),2018 年 3 月 12 號之后注冊的公眾號將不帶有留言功能,并且前三個月內注冊但并未使用的公眾號的留言功能也會被一并…

Canvas createImageData

createImageData() 方法創建新的空白 ImageData 對象。新對象的默認像素值 transparent black。 對于 ImageData 對象中的每個像素,都存在著四方面的信息,即 RGBA 值: R - 紅色 (0-255)G - 綠色 (0-255)B - 藍色 (0-255)A - alpha 通道 (0-25…

青島計算機類職業中學,青島最好的職業學校有哪些?

青島海洋職業學校是一所由青島市教育局批準,國家承認學歷的重點中等職業學校。學校占地200余畝,建筑面積5萬平方米,在籍學生3975人。學校擁有雄厚的師資力量,以專職教師為主,是一支政治素質好,師德水平高、…

測試1

2018/06/03 測試我的隨筆轉載于:https://www.cnblogs.com/xixirui/p/9129252.html

使用Javascript正則表達式來格式化XML內容

2019獨角獸企業重金招聘Python工程師標準>>> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head><meta http-equivcontent-type content"text/html; charsetUTF-8"><title>Xml格式化…

mysql vfp_vfp+mysql問題|交流區 - 梅子Visual FoxPro 編程 - Powered by phpwind

感謝樓上,請現場指導,拜謝c_pzwhfiellist""c_pzwhbglist""For i1 To Fcount()-1c_pzwhfiellistc_pzwhfiellistField(i)","c_pzwhbglistc_pzwhbglistField(i)Space(1)"pzwhk."Field(i)","Chr(10)Endforc_pzwhfiellistc_pzwhf…

Nginx 筆記與總結(3)配置虛擬主機

Nginx 重啟的另外一種方式&#xff0c;相當于 kill -HUP cat /usr/local/nginx/logs/nginx.pid&#xff1a; /usr/local/nginx/sbin/nginx -s reload停止 Nginx 的另外一種方式&#xff1a; /usr/local/nginx/sbin/nginx -s stop重讀日志文件的另一種方式&#xff0c;相當于 …

計算機如何查找目標,如何使用命令行查找計算機地理位置? | MOS86

有多種方法可以從IP地址中了解計算機的位置&#xff0c;但如果您決定使用命令行查找信息&#xff0c;那么您如何處理&#xff1f;今天今天的問題Screenshot由Paul Fenwick(Flickr)提供。問題SuperUser閱讀器AlikElzin-kilaka想知道如何找到一臺電腦首先&#xff0c;AlikElzin-k…

Nmap命令的常用實例

一、Nmap簡介 nmap是一個網絡連接端掃描軟件&#xff0c;用來掃描網上電腦開放的網絡連接端。確定哪些服務運行在哪些連接端&#xff0c;并且推斷計算機運行哪個操作系統&#xff08;這是亦稱 fingerprinting&#xff09;。它是網絡管理員必用的軟件之一&#xff0c;以及用以評…

mysql sqlexception_c-很奇怪-mysql的sql :: SQLException未被其類型捕...

我正在使用帶有此(稍微簡化)代碼的mysql c連接器.try{statement->setString(1, word);statement->executeUpdate();}catch( sql::SQLException& e ){// I dont get herereturn sqlerrno_to_error_code( e.getErrorCode() );}catch( std::exception& e ){// I do …

Linux Kernel系列 - 黃牛X內核代碼凝視

Hanks.Wang - 專注于操作系統與移動安全研究。Linux-Kernel/SELinux/SEAndroid/TrustZone/Encription/MDM Mail - byhankswanggmail.com 牛X的內核代碼凝視 大牛的代碼質量高穩定性好&#xff0c;并且邏輯清晰易讀性比較強&#xff0c;今天看到Linux Kernel紅黑樹的代碼時&a…

電子商務計算機網絡安全技術教案,網絡安全技術教案.pdf

名師精編 優秀教案《網絡安全技術》教案2011-2012 第 2 學期適用班級&#xff1a; 2010 級計算機網絡技術專業編寫&#xff1a;徐英武名師精編 優秀教案第 1~2 課時周次 &#xff11; 日期 2012 年 02 月 14 日 授課班級 2010 級計算機網絡技術課題 網絡安全概述 課 型 理論課教…

技術文章匯總

點擊以下鏈接&#xff0c;可以查看相關技術文章&#xff1a;包括APP軟件開發、手機軟件開發、嵌入式開發、Java和C/C編程&#xff0c;同時涉及原型設計、效果圖設計、切圖、網絡、多媒體、加密、字符編碼、通信原理、測試和項目管理等各方面的知識。APP開發實戰手機開發實戰技術…

咋樣查mysql的url_eclipse用jdbc連接mysql數據庫時,url是填什么?怎樣找出地址?

展開全部 jdbc連接mysql數據62616964757a686964616fe78988e69d8331333337623535庫的url為: jdbc:mysql://主機名或IP抵制:端口號/數據庫名?useUnicode=true&characterEncoding=UTF-8 jdbc連接其他數據庫的連接字符串寫法為:1、Oracle8/8i/9i數據庫(thin模式) Class.for…

HP服務器ile進系統,HP GEN10服務器UEFI安裝Windows Sverver 2012 R2教程

1.操作系統&#xff1a;Windows Server 2012 R2 VL with Update (x64) – DVD (Chinese-Simplified)&#xff0c;MSDN下載地址&#xff1a;ed2k://|file|cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso|5545527296|BD499EBCABF406AB82293DD8A5803493|/2.鏡像寫…

[程序設計語言] 堆和棧的全面總結

操作系統堆棧&#xff1a; 分配由編譯器自己主動和自己主動釋放。對應于堆棧的函數。參數存儲功能值、函數調用結束后完成值和局部變量的函數體內。段內存空間。其操作和組織方式與數據結構中的棧十分相似。棧是為了運行線程留出的內存空間。當調用函數時創建棧。當函數運行完畢…