【CSS動效實戰(純CSS與JS動效)】02 flex 布局實戰(仿 JD 及 gitCode 布局)及 media 自適應初探 下

二、flex 仿 gitCode 布局 及 自適應

首先查看我們的頁面:
在這里插入圖片描述
這個時候直接頂部一個塊,下面分為左中右三個塊,然后就解決了,是不是很簡單?相比剛剛那么這個簡單多了。那就來做吧。

2.1 基本布局

首先給一個 style 價格 flex,一樣的開頭:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>gitcode flex demo</title><style>.flex{display: flex;}</style>
</head>
<body></body>
</html>

接著 給予 body flex 樣式,并且由于當前 flex 是豎著的,那么給予一個 cloumn 樣式確定方向還有對應的背景色、邊距等,這些都不存在什么疑問吧?學過上一小節的都看得懂吧,代碼如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>gitcode flex demo</title><style>* {margin: 0;}body {height: 100vh;}div {background-color: white;margin: 4px}.flex{display: flex;}.column{flex-direction: column;}.bgcolor {background-color: rgb(230, 230, 230);}</style>
</head>
<body class="flex column bgcolor"></body>
</html>

那么接下來咱們就在 body 里面新建兩個 div:

<body class="flex column bgcolor"><!--頭--><div style="height: 60px;"></div><!--內容--><div style="flex:1"></div>
</body>

此時頁面效果如下:
在這里插入圖片描述
一點問題沒有,那么接下來在內容的div 里新建 3 個 div 分別是左中右:

<body class="flex column bgcolor"><!--頭--><div style="height: 60px;"></div><!--內容--><div style="flex:1"><!--左--><div></div><!--中--><div></div><!--右--><div></div></div>
</body>

一看這 3 個 div 不用占滿行,那么肯定,給予這個 內容 div 一個 flex ,并且給予內部元素不大于 1 的比例即可,還有一定要給予灰色背景,不然全白了看不見:

<!--內容-->
<div class="flex bgcolor" style="flex:1"><!--左--><div style="flex:0.2"></div><!--中--><div style="flex:0.4"></div><!--右--><div style="flex:0.2"></div>
</div>

那么既然不占滿行,那么肯定需要對應的居中,給予居中樣式:

<style>
.center {justify-content: center;
}
</style>

調用后頁面如下:
在這里插入圖片描述

2.2 左側元素內部排列

接著左側一看就是豎著的:
在這里插入圖片描述
那么給予一個樣式 column 以及 flex:

<!--左-->
<div style="flex:0.2" class="column"></div>

接著往內部添加 3 個 div 以及對應高度,若想看見這 3 個 div,你還需要給予這個 左 的 div 背景色:

<!--左-->
<div style="flex:0.2" class="column flex bgcolor"><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div>
</div>

效果如下:
在這里插入圖片描述

2.3 右側元素內部排列

右側也一樣,直接給予多個 div 并且設置對應的 flex 樣式即可:

<!--右-->
<div style="flex:0.2" class="column flex bgcolor"><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div>
</div>

效果如下:

在這里插入圖片描述
那么中間有點特殊,因為內容很多,那么這個時候我們填充內容會使頂部的內容發生擠壓,那么需要一個 flex-shrink: 0; 使其內容不壓縮,我們直接給予 頭部 這個屬性即可:

<!--頭-->
<div style="height: 60px;flex-shrink: 0;"></div>

接著給予中部巨多 div 內容,并且設置對應的高度:

<!--中-->
<div style="flex:0.4" class="column flex bgcolor"><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div>
</div>

div過多超出頁面后我們可以滾動查看底部 div:
在這里插入圖片描述
但是在原本的 gitcode 頁面中頂部是一直都存在的,不會拖動內容后頂部欄就消失,那么怎么做呢?

我們直接給予內容的 div 一個 屬性 overflow 即可:

<!--內容-->
<div class="flex bgcolor center" style="flex:1;overflow: auto;">

overflow auto 會給予超出內容一個滾動條,此時滑動再多,當前頁面的頭部也將會一直顯示:
在這里插入圖片描述
此部分完整代碼如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>gitcode flex demo</title><style>* {margin: 0;}body {height: 100vh;}div {background-color: white;margin: 4px}.flex {display: flex;}.column {flex-direction: column;}.bgcolor {background-color: rgb(230, 230, 230);}.center {justify-content: center;}</style>
</head><body class="flex column bgcolor"><!--頭--><div style="height: 60px;flex-shrink: 0;"></div><!--內容--><div class="flex bgcolor center" style="flex:1;overflow: auto;"><!--左--><div style="flex:0.2" class="column flex bgcolor"><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div></div><!--中--><div style="flex:0.4;" class="column flex bgcolor"><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div></div><!--右--><div style="flex:0.2" class="column flex bgcolor"><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div></div></div>
</body></html>

2.4 自適應

有時候內容不復雜時,咱們使用自適應將會很方便,當設備是手機訪問時,屏幕大小將會改變,原有 PC
頁面顯示有問題,那么只需要使用 media 即可解決,此時我們先創建一個 空的類樣式:.

<style>
.content{}
</style>

接著,給這個 content 樣式給予到內容樣式之中:

<!--內容-->
<div class="content flex bgcolor center" style="flex:1;overflow: auto;">

隨后使用 media:

<style>
@media ( max-width:600px) {.content {flex-direction: column;}
}
</style>

media 表示當 max-width:600px 當前屏幕最大寬度為 600px 時,那么就是移動端設備,直接給予 content 屬性為 flex-direction: column;,那么內容就會垂直顯示,那么就不會并排,那么就很好的適配了手機:在這里插入圖片描述
大家可以拿代碼去試試,自己拖動自己的屏幕可以看得到這個效果,完整代碼如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>gitcode flex demo</title><style>* {margin: 0;}body {height: 100vh;}div {background-color: white;margin: 4px}.flex {display: flex;}.column {flex-direction: column;}.bgcolor {background-color: rgb(230, 230, 230);}.center {justify-content: center;}.content {}@media ( max-width:600px) {.content {flex-direction: column;}}</style>
</head><body class="flex column bgcolor"><!--頭--><div style="height: 60px;flex-shrink: 0;"></div><!--內容--><div class="content flex bgcolor center" style="flex:1;overflow: auto;"><!--左--><div style="flex:0.2" class="column flex bgcolor"><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div></div><!--中--><div style="flex:0.4;" class="column flex bgcolor"><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div><div style="height: 150px;flex-shrink: 0;"></div></div><!--右--><div style="flex:0.2" class="column flex bgcolor"><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div><div style="height: 150px;"></div></div></div>
</body></html>

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

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

相關文章

C語言按行和列求平均成績代碼(指針,二維數組)

如下所示成績表,如何按行(每個人)或按列(每門課)的平均成績? 結果: 文章目錄 1. 自定義行平均函數2. 自定義列平均函數3. main()函數調用平均函數1. 自定義行平均函數 float save(float **PA,int M,int

架構師必須知道的架構設計原則

目錄 一、前言 二、軟件設計原則 GRASP通用職責分配軟件模式 1. 信息專家(Information Expert) 2. 創建者(Creator) 3. 低耦合(Low Coupling) 4. 高內聚(High Cohesion) 5.控制器(Controller) 6. 多態(Polymorphism) 7. 純虛構(Pure Fabrication) 8. 間接(Indirectio…

LeetCode:Minimum Path Sum(網格最大路徑和)

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path. Note: You can only move either down or right at any point in time. 典型的動態規劃問題。 設dp[i][j]表示從左…

delete在js里為引用刪除

delete 運算符從對象中刪除一個屬性&#xff0c;或從數組中刪除一個元素。delete expressionexpression 參數是一個有效的 JScript 表達式&#xff0c;通常是一個屬性名或數組元素。說明如果 expression 的結果是一個對象&#xff0c;且在 expression 中指定的屬性存在&#xf…

C語言試題六十五之請編寫函數實現猴子吃桃問題

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 猴子吃桃問…

百度:病種類貼吧全面停止商業合作

新浪科技訊 1月12日上午消息&#xff0c; 百度今日就熱門疾病被出賣一事向新浪科技發布對外公告&#xff1a;病種類貼吧全面停止商業合作 只對權威公益組織開放。百度方面在公告中表示&#xff0c;為了規范具有明顯商業屬性貼吧的運營管理&#xff0c;并提升貼吧的內容質量和用…

【CSS動效實戰(純CSS與JS動效)】02 flex 布局實戰(仿 JD 及 gitCode 布局)及 media 自適應初探

一、flex 仿 JD 布局 首先&#xff0c;我們在編輯器中&#xff0c;寫上基礎代碼&#xff0c;當然要在 style 中加上一個 flex 類&#xff0c;用于 flex 布局的定義&#xff0c;這個是必然需要的&#xff0c;在此一定得加上。 <!DOCTYPE html> <html lang"en&qu…

C語言sin()函數繪制正弦曲線代碼(0-2π)

本文實現y=sin(x)正弦曲線在0-2π范圍內的曲線圖形,如下圖所示: 完整C語言代碼: #include<stdio.h> #include<math.h> main() {double y; int x,m,i; printf

MAUI模板項目閃退問題

MAUI模板項目閃退問題在MAUI最初發布的時候就曾創建過幾個模板項目進行體驗過&#xff0c;沒遇到什么坑。由于最近需要開發針對餐飲行業的收銀機&#xff08;安卓系統&#xff09;開發一款應用&#xff0c;這種收銀機一般配置不咋滴&#xff0c;系統版本和性能也肯定比不上我們…

真正CSDN博客文章一鍵轉載插件(含源碼)

插件地址&#xff1a;https://greasyfork.org/zh-CN/scripts/381053-csdn%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E8%BD%AC%E8%BD%BD%E6%8F%92%E4%BB%B6 插件安裝使用說明請參閱&#xff1a;https://greasyfork.org/zh-CN 文章閱讀界面 文章發布頁面 源代碼 // UserScript //…

Kotlin之集合排序(sortBy、sortByDescending)

1、Kotlin的集合排序 如果我們需要對一個集合里面的某個對象的一個字段進行排序,java的話需要實現一個比較器Comparator,Kotlin的針對集合里面的某個對象的一個字段進行排序非常簡單,一行代碼搞定。 2、sortBy方法、sortByDescending方法 1)、sortBy升序排列 2)、sortBy…

限制nginx僅能域名訪問,不可用ip訪問

在nginx.conf 文件里 初始時是&#xff1a; 12345server {listen 80 default_server; server_name www.lnmp.org; ... }修改成 12345server {listen 80; server_name yoursDomainName; #這里是你自己指定的域名 ... }再在上個server后繼續添加一段&#xff1a; 12345server …

getElementByClassName()不兼容的解決辦法

在獲取元素時候采用getElementByClassName()方法是比較方便的&#xff0c;但是對于IE6不兼容&#xff0c;可以采用以下代碼來自定義這個方法&#xff1a; window.οnlοadfunction(){ if(!document.getElementByClassName){ document.getElementByClassNamefunction(cls){ var …

學習C語言指針,這一篇案例教程就夠夠的了

指針是一個變量,其值為另一個變量的地址,即,內存位置的直接地址。就像其他變量或常量一樣,您必須在使用指針存儲其他變量地址之前,對其進行聲明。 一個優秀的程序員最愛玩的就是指針! 通過本文10個案例的學習,你會對C語言指針的來龍去脈做一個全面的學習,直接用于實戰開…

阻塞隊列BlockingQueue用法

多線程環境中&#xff0c;通過隊列可以很容易實現數據共享&#xff0c;比如經典的“生產者”和“消費者”模型中&#xff0c;通過隊列可以很便利地實現兩者之間的數據共享。 假設我們有若干生產者線程&#xff0c;另外又有若干個消費者線程。如果生產者線程需要把準備好的數據共…

C語言試題六十六之請編寫函數實現三個數從小到大排序

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 對a、b、c…

微軟欲閉源VS Code的C#擴展惹眾怒

VS Code 是一個非常棒的代碼編輯器&#xff0c;輕量&#xff0c;免費&#xff0c;跨平臺。并且憑其豐富且強大的擴展功能受到眾多開發者的青睞&#xff0c;你可以在上面愉快的進行各種語言的開發工作。就在前兩天&#xff0c;微軟的 .NET 和 Visual Studio 的項目經理 Tim Heue…

Python3.6學習筆記(三)

面向對象編程 面向對象編程 Object Oriented Programming 簡稱 OOP&#xff0c;是一種程序設計思想。OOP把對象作為程序的基本單元&#xff0c;一個對象包含了數據和操作數據的函數。 面向過程的程序設計把計算機程序視為一系列的命令集合&#xff0c;即一組函數的順序執行。為…

EnumMap

什么是EnumMap Map接口的實現&#xff0c;其key-value映射中的key是Enum類型&#xff1b; 補充說明 其原理就是一個對象數組&#xff0c;數組的下標索引就是根據Map中的key直接獲取&#xff0c;即枚舉中的ordinal值&#xff1b; 效率比HashMap高&#xff0c;可以直接獲取數組下…

【CSS動效實戰(純CSS與JS動效)】03 精美手風琴側邊欄完整示例教程 示例1

本節示例演示&#xff1a; 一、基本布局 一般來說&#xff0c;側邊欄的位置是在左側&#xff0c;咱們為了更好的展現側邊欄的效果&#xff0c;并且在本節中不涉及過多的內容&#xff0c;我們只需要直接給一個 div 寬度為 15即可&#xff0c;接著再到這個 div 中編寫對應的側…