CSS學習筆記6——網頁布局

目錄

?一、元素的浮動屬性、清除浮動

清除浮動的其他方法?

1、使用空標簽清除浮動影響

2、使用overflow屬性清除浮動

3、使用偽元素清除浮動影響

原理

overflow屬性?

二、元素的定位?

?1、相對定位

2、絕對定位?

?編輯?3、固定定位

z-index層疊等級屬性


?一、元素的浮動屬性、清除浮動

在CSS布局中,浮動元素會脫離文檔流,導致父元素高度塌陷、后續元素布局錯亂等問題。?

清除浮動的作用

  1. 防止父元素塌陷:當子元素浮動時,父元素的高度可能無法正確包含浮動的子元素,導致父元素“塌陷”,影響整體布局。清除浮動可以確保父元素能夠正確包含浮動的子元素,使其高度正常計算。

  2. 避免影響后續元素布局:浮動元素會脫離正常的文檔流,可能會對后續的非浮動元素的布局產生影響,導致頁面布局混亂。清除浮動可以避免這種情況,使后續元素能夠按照正常的文檔流進行布局。

  3. 提高布局的穩定性:在復雜的布局中,浮動元素的不確定性可能導致頁面在不同瀏覽器或設備上顯示不一致。清除浮動可以提高布局的穩定性和兼容性。

<style type="text/css">.father{                      /*定義父元素的樣式*/background:#eee;border:1px dashed #ccc;}/* 淺灰色背景,淺灰色虛線邊框。 */.box01,.box02,.box03{         /*定義box01、box02、box03三個盒子的樣式*/height:50px;line-height:50px;background:#FF9;border:1px solid #93b7ff;margin:15px;padding:0px 10px;float: left;}/* 淺黃色背景,藍色實線邊框,高度50像素,文字垂直居中,外邊距15像素,內邊距左右10像素。 */p{                            /*定義段落文本的樣式*/background:#c1d5ff;border:1px dashed #93b7ff;margin:15px;padding:0px 10px; }/* 淺藍色背景,藍色虛線邊框,外邊距15像素,內邊距左右10像素。 */</style></head> <body><div class="father"><div class="box01">box01</div><div class="box02">box02</div><div class="box03">box03</div><p>在山東煙臺,全球最大的海上鉆井平臺“藍鯨2號”備受矚目。這個海上“巨無霸”有37層樓高,其甲板有一個足球場那么大。它可以在水深超過3000米的海域作業,最大鉆井深度15240米。“藍鯨2號”生產經理程騁剛來這里時,大部分人都是洋面孔,如今絕大部分工作人員都是中國面孔,程聘感覺“有一股強大的中國力量在引領海工行業的發展”。</p></div>
</body>

效果展示

未加float屬性時

加float屬性、未清除浮動影響

清除浮動影響

注意:clear屬性只能清除元素左右兩側的影響 ,由于父元素與子元素為嵌套關系,不存在左右位置關系,因此不能使用clear清除子元素浮動對父元素的影響

清除浮動的其他方法?

1、使用空標簽清除浮動影響

在需要清除浮動的父元素內部的所有浮動元素之后,添加一個空的塊級元素(如<div>,并為其設置clear: both樣式。例如:

<div class="container"><div class="float-left">Left</div><div class="float-right">Right</div><div style="clear: both;"></div>
</div>

原理

通過添加一個空的塊級元素并設置clear: both,可以清除前面所有浮動元素的影響,使父元素能夠正確包含這些浮動的子元素,從而恢復父元素的高度,并避免對后續元素的布局產生影響。工作中不建議使用,因為會增加無意義的元素結構。

2、使用overflow屬性清除浮動

為父元素設置“overflow:hidden”樣式,這個方法可彌補法一的不足

3、使用偽元素清除浮動影響

通過給父元素添加偽元素(如::after),并在偽元素上應用clear: both來清除浮動。

.father::after {content: "";display: table;clear: both;
}
原理
  • 偽元素::after 是 CSS 中的一個偽元素,用于在元素內容的后面插入生成的內容。在這里,我們使用它來創建一個空的虛擬元素。

  • content: "":為偽元素提供內容,這里是空字符串,表示生成一個空的虛擬元素。

  • display: table:將偽元素設置為表格顯示,這樣它可以像表格一樣在布局中占據空間。

  • clear: both:清除前面所有浮動元素的影響,使父元素能夠正確包含這些浮動的子元素。

<title>使用空標簽清除浮動</title>
<style type="text/css">
.father{                              /*沒有給父元素定義高度*/background:#ccc; border:1px dashed #999; /* overflow: hidden; */
}
/* 淺灰色背景和虛線邊框的容器。 */
.box01,.box02,.box03{ height:50px; line-height:50px; background:#f9c; border:1px dashed #999; margin:15px; padding:0px 10px; float:left;                     /* 定義box01、box02、box03三個盒子左浮動*/
}
/* 三個高度為50像素的盒子,背景為淺橙色,帶有虛線邊框,水平排列在父元素內部。 */
/*.box04{ clear:both;}                 對空標簽應用clear:both;*/
</style>
</head> 
<body>
<div class="father"><div class="box01">box01</div><div class="box02">box02</div><div class="box03">box03</div><!-- <div class="box04"></div>        在浮動元素后添加空標簽-->
</div>
</body>

?效果展示

未設置清除浮動時

設置清除浮動時

overflow屬性?

<title>overflow屬性</title>
<style type="text/css">
div{width:260px;       height:176px;       background-image: linear-gradient(30deg,#0f0 50%,#ccc 70%,red 80%);overflow:scroll;    /*溢出內容呈現在標簽框之外*/ }
</style>
</head>
<body>
<div>當田野染上一層金黃,各種各樣的果實搖著鈴鐺的時候,雨,似乎也像出嫁生了孩子的婦人,顯得端莊而又沉靜了。這時候,雨不大出門。田野上幾乎總是金黃的太陽。也許,人們都忘記了雨。成熟的莊稼等待收割,金燦燦的種子需要曬干,甚至紅透了的山果也希望最后的曬甜。忽然,在一個夜晚,窗玻璃上發出了響聲,那是雨,是使人靜謐、使人懷想、使人動情的秋雨啊!天空是暗的,但雨卻閃著光;田野是靜的,但雨在傾訴著。頓時,你會產生一脈悠遠的情思。也許,在人們勞累了一個春夏,收獲已經在大門口的時候,多么需要安靜和沉思啊!雨變得更輕,也更深情了,水聲在屋檐下,水花在窗玻璃上,會陪伴著你的夜夢。如果你懷著那種快樂感的話,那白天的秋雨也不會使人厭煩。你只會感到更高邈、深遠,并讓凄冷的雨滴,去純凈你的靈魂,而且一定會遙望到一場秋雨后將出現的一個更凈美、開闊的大地。
</div>
</body>

?效果展示

1、使用scroll屬性值

2、使用auto屬性值

3、使用hidden屬性值

4、使用visible屬性值(默認值)

二、元素的定位?

  1. 靜態定位(static)——默認的擺放方式
    就像你把書本自然擺放在書架上,所有書按順序排列。這是瀏覽器默認的排列方式,元素會按照HTML代碼的先后順序自然堆疊,不能通過top/left等屬性調整位置。

  2. 相對定位(relative)——微調位置
    好比你在墻上貼了一張便簽紙,之后覺得位置不夠好,可以上下左右移動幾厘米。元素會保留原本的位置空間,移動時不會影響其他元素:

  3. 絕對定位(absolute)——精確坐標定位
    像把照片用圖釘固定在墻上的某個精確位置。元素會脫離正常文檔流,根據最近的已定位祖先元素(非static)進行定位:

  4. 固定定位(fixed)——廣告牌式定位
    就像馬路邊的廣告牌,無論你開車走多遠它都固定在同一個位置。元素會固定在瀏覽器窗口的某個位置,不隨頁面滾動移動:

?1、相對定位

<style type="text/css">
body{ margin:0px; padding:0px; font-size:18px; font-weight:bold;}
.father{margin:10px auto;width:300px;height:300px;padding:10px;background:#ccc;border:1px solid #000;
}
.child01,.child02,.child03{width:100px;height:50px;line-height:50px;background:#ff0;border:1px solid #000;margin:10px 0px;text-align:center;
}
/* .child02{position:absolute;         /*絕對定位*/left:150px;                 /*距左邊線150px*/top:100px;                  /*距頂部邊線100px*/
} */</style>
</head>
<body>
<div class="father"><div class="child01">child-01</div><div class="child02">child-02</div><div class="child03">child-03</div>
</div>
</body>

效果展示

未設置相對定位時

設置相對定位時——/* child02相對于頁面窗口左邊線150像素,上邊界100像素*/

2、絕對定位?

<title>子元素依據其父元素進行定位</title>
<style type="text/css">
body{ margin:0px; padding:0px; font-size:18px; font-weight:bold;}
.father{margin:10px auto;width:300px;height:300px;padding:10px;background:#ccc;border:1px solid #000;position:relative;          /*相對定位,但不設置偏移量*/
}
.child01,.child02,.child03{width:100px;height:50px;line-height:50px;background:#ff0;border:1px solid #000;border-radius:50px;margin:10px 0px;text-align:center;
}
/* .child02{position:absolute;         /*絕對定位*/left:150px;                /*距左邊線150px*/top:100px;                 /*距頂部邊線100px*/
} */
</style>
</head>
<body>
<div class="father"><div class="child01">child-01</div><div class="child02">child-02</div><div class="child03">child-03</div>
</div>
</body>

?效果展示

未設置相對定位時

設置相對定位時——/* 相對于父元素左邊線150像素定邊線100像素*/

?3、固定定位

<style type="text/css">
body{ margin:0px; padding:0px; font-size:18px; font-weight:bold;}
.father{margin:10px auto;width:300px;height:300px;padding:10px;background:#ccc;border:1px solid #000;position:relative;          /*相對定位,但不設置偏移量*/
}
.child01,.child02,.child03{width:100px;height:50px;line-height:50px;background:#ff0;border:1px solid #000;border-radius:50px;margin:10px 0px;text-align:center;
}
.child02{position:fixed;         /*固定定位*/left:150px;                /*距左邊線150px*/top:100px;                 /*距頂部邊線100px*/
}
/* 不管窗口大小如何變化,該元素始終顯示在瀏覽器窗口的固定位置 */
/* 相對于父元素左邊線150像素定邊線100像素*/
</style>
</head>
<body>
<div class="father"><div class="child01">child-01</div><div class="child02">child-02</div><div class="child03">child-03</div>
</div>
</body>

效果展示?

未縮小窗口

縮小窗口——/* 不管窗口大小如何變化,該元素始終顯示在瀏覽器窗口的固定位置 */

z-index層疊等級屬性

z-index 就像給元素發「樓層號」

想象你在桌上疊放幾張紙:

  1. 默認情況:后放的紙蓋住先放的(HTML中后寫的元素會覆蓋先寫的)

  2. 發樓層號:給每張紙寫一個數字(z-index值),數字越大樓層越高,就能壓住數字小的紙

關鍵規則

  • 只對定位元素有效(設置了?position: relative/absolute/fixed?的元素)

  • 數值越大越靠前(z-index: 2 > z-index: 1)

  • 負數會沉到默認層下方(可用于隱藏元素)

  • 同層級比較:若父元素層級低,子元素z-index再高也逃不出這棟"樓"

常見用法

  • 彈窗覆蓋其他內容 → 給彈窗設置高z-index(如9999)

  • 導航欄懸浮 → z-index: 100

  • 輪播圖的切換按鈕 → 確保按鈕在圖片上層

避坑提醒

  1. 像電梯按鈕,z-index只在同個「電梯井」(層疊上下文)內比較

  2. 如果父元素有z-index,子元素只能在父元素的「樓層」內調整高低

<title>子元素依據其父元素進行定位</title>
<style type="text/css">
body{ margin:0px; padding:0px; font-size:18px; font-weight:bold;}
.father{margin:10px auto;width:300px;height:300px;padding:10px;background:#ccc;border:1px solid #000;position:relative;          /*相對定位,但不設置偏移量*/z-index: 1;
}
.child01,.child02,.child03{width:100px;height:50px;line-height:50px;background:#ff0;border:1px solid #000;border-radius:50px;margin:10px 0px;text-align:center;
}
.child02{position:fixed;         /*固定定位*/left:150px;                /*距左邊線150px*/top:100px;                 /*距頂部邊線100px*//* z-index: -1; */
}
/* 不管窗口大小如何變化,該元素始終顯示在瀏覽器窗口的固定位置 */
/* 相對于父元素左邊線150像素定邊線100像素*/
</style>
</head>
<body>
<div class="father"><div class="child01">child-01</div><div class="child02">child-02</div><div class="child03">child-03</div>
</div>
</body>

效果展示

默認z-index時

設置z-index為負數時

設置z-index為正數時

?

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

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

相關文章

sqlalchemy:將mysql切換到OpenGauss

說明 之前python的項目使用的mysql&#xff0c;近期要切換到國產數據庫OpenGauss。 之前的方案是fastapisqlalchemy&#xff0c;測試下來發現不用改代碼&#xff0c;只要改下配置即可。 切換方案 安裝openGauss-connector-python-psycopg2 其代碼工程在&#xff1a;https:…

uniapp 獲取dom信息(封裝獲取元素信息工具函數)

在uniapp開發中&#xff0c;需要獲取到dom的信息&#xff0c;需要用到uniapp的指定方式 uni.createSelectorQuery()&#xff0c;但是每次需要用到的時候都需要很長一段的繁瑣代碼&#xff0c;本篇文章將呈現獲取dom信息方法封裝&#xff0c;話不多說&#xff0c;上菜&#xff1…

Linux之數據鏈路層

Linux之數據鏈路層 一.以太網1.1以太網幀格式1.2MAC地址1.3MTU 二.ARP協議2.1ARP協議工作流程2.2ARP協議格式 三.NAT技術四.代理服務4.1正向代理4.2反向代理 五.四大層的學習總結 一.以太網 在我們學習完了網絡層后我們接下來就要進入數據鏈路層的學習了&#xff0c;在學習完網…

MySQL的基礎語法2(函數-字符串函數、數值函數、日期函數和流程函數 )

目錄 一、字符串函數 1.常見字符串函數 ?編輯 2.字符串函數的基本使用 3.字符串函數的數據庫案例演示 二、數值函數 1.常見數值函數&#xff08;如下&#xff09;&#xff1a; 2.數值函數的基本使用 3.數值函數的數據庫案例演示 三、日期函數 1.常見的日期函數 2.日…

全新版租賃商城小程序源碼系統 源碼開源支持二開+圖文搭建教程

在互聯網商業的浪潮中&#xff0c;租賃業務憑借其獨特的優勢&#xff0c;正逐漸成為市場的新寵。對于開發者而言&#xff0c;快速搭建一個功能完備的租賃商城小程序&#xff0c;不僅能滿足市場需求&#xff0c;還能為自己的業務拓展帶來新的機遇。分享一款全新版租賃商城小程序…

Cent OS7+Docker+Dify

由于我之前安裝了Dify v1.0.0&#xff0c;出現了一些問題&#xff1a;無法刪除&#xff0c;包括&#xff1a;知識庫中的文件、應用、智能體、工作流&#xff0c;都無法刪除。現在把服務器初始化&#xff0c;一步步重新安裝&#xff0c;從0到有。 目錄 1、服務器重裝系統和配置…

OSI 七層模型和四層模型(TCP/IP 模型)

文章目錄 前言一、OSI 七層模型二、TCP/IP 四層模型三、運行協議及設備1. OSI 七層模型2. TCP/IP 四層模型3. 運行協議4. 各類設備的作用 總結 前言 OSI 七層模型和四層模型&#xff08;TCP/IP 模型&#xff09;是兩種常見的網絡協議分層架構&#xff0c;它們的主要區別如下&a…

AI的未來:機遇、挑戰與發展方向

&#x1f4dd;個人主頁&#x1f339;&#xff1a;一ge科研小菜雞-CSDN博客 &#x1f339;&#x1f339;期待您的關注 &#x1f339;&#x1f339; 1. 引言 人工智能&#xff08;AI&#xff09;已經成為當今世界最具革命性的技術之一&#xff0c;它正在深刻改變各個行業&#x…

javascript實現一個函數,將字符串中的指定子串全部替換為另一個字符串的原理,以及多種方法實現。

大白話javascript實現一個函數&#xff0c;將字符串中的指定子串全部替換為另一個字符串的原理&#xff0c;以及多種方法實現。 在JavaScript里&#xff0c;要是你想把字符串里的指定子串都替換成另外一個字符串&#xff0c;有不少方法可以實現。下面我會詳細介紹實現的原理&a…

硬件基礎--16_公式梳理

公式梳理 歐姆定律: IU/R 1.歐姆定律有局限性&#xff0c;僅適用于純電阻電路(或者說純電阻元器件&#xff0c;純電阻設備) 2.純電阻電路:消耗的電能僅轉化為熱能&#xff0c;沒有其他形式的能量轉換。 功率計算:PUI 1.導出公式:PU2 /R 2.導出公式:PI2 R 焦耳定律:QI2 Rt 1.導…

npm i 出現的網絡問題

npm i 出現的網絡問題 解決方案&#xff1a; npm config list 查看.npmrc文件中是否配置了proxy刪除.npmrc文件中的proxy&#xff0c;保存。重新執行npm i命令。 順便說說解決這個問題的心里路程 每次安裝vue的環境的時候&#xff0c;經常遇到npm安裝一些插件或者是依賴的時…

使用vue cli 5.0 在vscode中運行vue命令報錯

1、運行 vue -- version 報錯 2、在cmd 命令行 執行 vue --version 正常 3、在終端中輸入 get-ExecutionPolicy&#xff0c;查看當前權限 4、執行 set-executionpolicy remotesigned 命令設置為可用模式&#xff0c;但是報錯 5、使用管理員打開power shell 執行 G…

瑞芯微 RKrga接口 wrapbuffer_virtualaddr 使用筆記

一、源碼 官方在librga中給了很多 demo 以供參考&#xff0c;例如 imresize 操作&#xff1a; /** Copyright (C) 2022 Rockchip Electronics Co., Ltd.* Authors:* YuQiaowei <cerf.yurock-chips.com>** Licensed under the Apache License, Version 2.0 (the &qu…

Spring MVC:從歷史演變到實戰入門

1. Java Web的發展歷史與MVC模式 1.1 Model I與Model II的演進 Model I&#xff08;JSPJavaBean&#xff09; 作為早期Java Web開發的主流模式&#xff0c;其核心架構如下&#xff1a; graph LR A[客戶端] --> B[JSP頁面] B --> C{業務邏輯} C --> D[JavaBean] D -…

AI賦能,防御無界:群聯云防護如何顛覆傳統DDoS防御格局?

一、AI驅動的動態防御體系 智能流量調度 群聯云防護通過AI算法實時分析流量特征&#xff0c;動態分配清洗節點。當檢測到攻擊時&#xff0c;系統能在秒級內將流量切換至備用節點&#xff0c;避免單點過載。相較傳統高防IP依賴靜態規則&#xff0c;群聯的調度策略可減少50%的誤封…

R --- Error in library(***) : there is no package called ‘***’ (服務器非root用戶)

步驟 步驟一&#xff1a;在自己目錄下創建R包安裝路徑步驟二&#xff1a;配置用戶本地的R庫路徑步驟三&#xff1a;安裝缺失的包&#xff08;在終端&#xff09;步驟四&#xff1a;驗證安裝 步驟一&#xff1a;在自己目錄下創建R包安裝路徑 mkdir -p ~/R_libs步驟二&#xff1…

HarmonyOS NEXT狀態管理實踐

在HarmonyOS NEXT開發中&#xff0c;狀態管理是構建高效、響應式應用的核心。本文深入探討狀態管理的最佳實踐&#xff0c;結合代碼示例與案例分析&#xff0c;幫助開發者掌握這一關鍵技能。 一、狀態管理裝飾器的合理使用 HarmonyOS NEXT提供多種狀態管理裝飾器&#xff0c;…

excel 時間戳 轉日期

在Excel中&#xff0c;將時間戳轉換為日期格式&#xff0c;可以使用以下步驟和方法&#xff1a; 一、了解時間戳 時間戳&#xff08;Timestamp&#xff09;通常是從1970年1月1日&#xff08;UTC時間&#xff09;開始的秒數或毫秒數。這個時間點被稱為“Unix紀元”或“Unix時間…

Python CSV 數據分析:問題排查與解決全記錄

Python CSV 數據分析&#xff1a;問題排查與解決全記錄 前段時間&#xff0c;我接到一個任務&#xff0c;需要對公司的銷售數據進行分析。這些數據存儲在 CSV 文件里&#xff0c;本想著用 Python 處理起來會很輕松&#xff0c;結果卻狀況百出。下面&#xff0c;就跟大家講講我…

一些常用開發軟件下載地址

1. Matlab官方下載地址 MATLAB Runtime 是運行由 MATLAB 編譯的應用程序&#xff08;如 .exe、.jar 或 .dll&#xff09;所必需的組件&#xff0c;無需安裝完整 MATLAB。 &#x1f517; MathWorks 官方下載頁面&#xff1a; https://www.mathworks.com/products/compiler/mat…