【前端就業課 第二階段】CSS 零基礎到實戰(04)定位

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我,若你是真心學習可以送你書籍,指導你學習,給予你目標方向的學習路線,無套路,博客為證。

一、定位

定位分為相對定位以及絕對定位。

相對定位可以理解為在 HTML 中,元素會依照原有的順序進行顯示,通過相對距離(例如左右距離多少)的方式使這些元素進行位置的顯示。

絕對定位可以理解為,在 HTML 中,元素并不會按照有序的方式進行排列,需要依靠自身給予的定位信息決定元素出現在 HTML 頁面中的位置。

1.1 文檔流

我們在了解定位前,需要了解什么是文檔流。

在 HTML 中,默認情況下一個網頁是多個元素從上而下自動進行排列而成,并且是一行一行組成,這些行中的元素則是從左往右默認進行排列,當元素超過其寬度大小則會進行換行,而這就是文檔流。

而定位就是指對某個元素顯示于在文檔流(頁面)中的某個位置,又或使某個元素脫離文檔流進行顯示,而在此所屬的脫離則是表示某元素不存在于文檔流中,具體是如何咱們接下來詳細說明。

1.2 position 屬性

在 HTML 中通過 position 屬性對網頁中的元素進行定位,position 屬性支持以下 5 個值:

  • static(默認)
  • relative
  • absolute
  • fixed
  • sticky

在本章開始時,了解了相對定位和絕對定位,而后又了解了 position 定位的屬性值,這些值對應了相對定位和絕對定位,例如:

  • 相對定位的 position 屬性值有 relative
  • 絕對定位的值有 absolute 、fixed 、sticky

其中使用 static 與 relative 定位元素,其元素不會脫離文檔流,因為是相對定位,需要在有序的元素排序中使用相對的定位使其進行排列,而使用 absolute 、fixed 、sticky 定位將會使元素脫離文檔流。這些元素都使用 left、top、right、bottom 進行定位(relative 也使用 left、top、right、bottom 進行定位),其作用如下:

  • left:距離左側距離多少
  • top:距離頂部距離多少
  • right:距離右側距離多少
  • bottom:距離底部距離多少

1.3 relative

position 屬性為 relative 時,將會根據 left、top、right、bottom 進行定位,例如以下代碼:

<!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>文檔流</title><style>div{width: 50%;height: 60px;background-color: black;}.relative {width: 300px;top: 10px;position: relative;background-color: aqua;}</style>
</head>
<body><div></div><div class="relative"></div>
</body>
</html>

以上代碼中定義了 div 的默認寬高,給予了正常 div 容器的背景色為黑色,隨后給予了一個類 relative 為 relative 定位,使用該類后,其定位將會為 relative ;在該類中,重新定義了寬度為 300px,對應的高度則是依舊是整體定義的 div 高度,使用了 top 屬性表示距離頭部距離為 10px,并且給予了淡青色為背景顏色,在頁面中顯示如下:

在這里插入圖片描述
我們可以明顯的看到淡青色的 div 距離頂部有一定的距離,接著咱們在對應的css 中增加 right 屬性:
在這里插入圖片描述
此時將會看到,在頁面中淡青色的元素將會往左側索入,因為在當前 div 右側無元素,但增加了距離右側的距離,那么此時只會往左側縮入:
在這里插入圖片描述
我們將 right 屬性改為 left,該元素將會距離左側有一定的距離:
在這里插入圖片描述
其結果如下:
在這里插入圖片描述
此時我們再將 left 改成 bottom 將會與頂部正常文檔流的 div 發生重疊:
在這里插入圖片描述

結果如下:
在這里插入圖片描述
此時我們還需要注意使用 relative 時會出現的一個情況:使用 relative 后,即時發生了偏移覆蓋掉了(以上示例情況)其他元素,其本身所占的位置依舊占據,例如如下示例:

<!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>文檔流</title><style>div{width: 50%;height: 60px;background-color: black;}.relative {width: 300px;bottom: 10px;position: relative;background-color: aqua;}</style>
</head>
<body><div></div><div class="relative"></div><div class="relative" style="top: 50px;"></div><div></div></body>
</html>

以上代碼中新增了一個 div,并且使其距離頂部 50px:
在這里插入圖片描述
此時這個div 將會往下移動覆蓋掉下部分的 div,但是其本身的位置還是存在,我們可以通過示例看出:
在這里插入圖片描述

index-z

在使用絕對定位時,若發生了覆蓋,想使其中一個定位元素現實于另外一個定位元素之上,可以使用 z-index 屬性,該屬性可以更改當前頁面元素的層級,z-index 的屬性值為數字,數字越大則表示層級越大,可以理解層級為覆蓋層數,0最小表示在最下層,數字越大層級越大,層架大的數覆蓋于小的數,此時給該 div 設置 z-index 為 1則會顯示在上層,z-index 的值默認為0:

<body><div class="relative"></div><div class="relative" style="top: 20px;"></div><div class="relative" style="background-color: red;"></div>
</body>

以上代碼為 css 樣式相同時發生了 div 重疊,效果如下:
在這里插入圖片描述
在此時需要第二個 div 不再被紅色覆蓋,可以在樣式中添加 z-index 屬性:
在這里插入圖片描述
其效果如下:
在這里插入圖片描述

1.4 absolute 絕對定位

絕對定位是脫離文檔流而存在的,如何脫離咱們可以接下來的示例進行查看。

首先我們需要知道一個點,絕對定位的父元素不能是 static ,也就是 position不能是 static,而 static 是position 的默認值,也就是說直咱們需要一個 div 設置為 relative 后再對其進行子元素 設置定位為 absolute:

<style>div{width: 50%;height: 160px;background-color: black;}.relative {width: 600px;position: relative;background-color: aqua;}.absolute{width: 300px;height: 60px;position: absolute;background-color: rgb(255, 0, 128);}
</style><body><div class="relative"><div class="absolute"></div><div class="absolute" style="background-color: rgb(38, 0, 255);"></div></div>
</body>

其頁面效果如下:

在這里插入圖片描述
咱們可以看到,我們設置了兩個 absolute 的 div 元素在頁面中只顯示了第二個背景色為藍色的 div:
在這里插入圖片描述
其原因是定位為 absolute 定位將會使其元素脫離文檔流,此時兩個元素是進行了重疊,咱們只需要使用 top 這些定位屬性使其顯示即可:
在這里插入圖片描述
顯示效果如下:
在這里插入圖片描述
如何使用 absolute 將會在之后文章進行講解。

1.5 fixed 固定于窗口的定位

在定位為 fixed 時,該div 將會懸浮于整個文檔流內容之上,例如在瀏覽一些網頁時,某些可視區域(例如導航、搜索、廣告等)將會一直固定于頁面之上,示例如下:

<style>div{width: 50%;height: 160px;background-color: black;}.relative {width: 600px;position: relative;background-color: aqua;}.fixed  {position: fixed ;width: 100%;height: 10px;top: 20px;background-color:rgb(255, 145, 0);}
</style>
<body><div><div class="fixed"></div></div><div class="relative"><div class="absolute" style="background-color: rgb(38, 0, 255);top: 30px;"></div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
</body>

此時示例中添加了 fixed ,并且為了使頁面高度高于可視高度,增加了多個div ,其效果如下:
請添加圖片描述
使用了 fixed 定位后,其元素將會固定于頁面之上,而且不管你是否設置 fixed 在何位置,其效果都是一致的,例如:
在這里插入圖片描述
在效果演示中還可以看到,其 absolute 內容覆蓋了 fixed 元素,只需要在 fixed 元素中增加 z-index 屬性即可。

1.6 sticky 可在文檔流中使用

之前使用的 fixed 在文檔流中使用并“無效”,實現這個效果咱們可以使用 sticky,代碼示例如下:

<!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>文檔流</title><style>div{width: 50%;height: 160px;background-color: black;}.sticky  {position: sticky ;top: 20px;background-color:rgb(0, 0, 0);width: 100%;height: 60px;}span{display:inline-block;width: 100%;color: aliceblue;text-align: center;height: 60px;line-height: 60px;}</style>
</head>
<body><div></div><div></div><div style="height: auto;width: 100%;"><div class="sticky"><span>這里是 sticky 定位內容——《1_bit 的前端課》</span></div><div style="background-color: rgb(17, 175, 69);width: 100%;"></div><div style="background-color: rgb(85, 17, 175);width: 100%;"></div><div style="background-color: rgb(175, 17, 101);width: 100%;"></div><div style="background-color: rgb(175, 146, 17);width: 100%;"></div><div style="background-color: rgb(17, 175, 175);width: 100%;"></div><div style="background-color: rgb(190, 219, 23);width: 100%;"></div><div style="background-color: rgb(175, 17, 114);width: 100%;"></div></div>
</body>
</html>  

為了方便顯示我 sticky 定位中添加了 span 并且給予了 span 樣式,在 span 樣式中轉變了其元素類型 display:inline-block;,隨后給予了字體顏色白色、text-align: center;、height: 60px;line-height: 60px;,其中 text-align: center;使其內容水平居中顯示、height: 60px;設置 span 高度、line-height: 60px;設置其行高,行高與高度相同其內容將會水平居中,最終效果如下:
請添加圖片描述

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

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

相關文章

Android TextView設置ClickableSpan 點擊結尾空白位置也響應點擊的問題

解決辦法&#xff0c;在后邊緊接著追加一個0寬度字符&#xff1a; builder.append("\u200b"); 相關知識&#xff1a; “\u200b” 為 Unicode Character ‘ZERO WIDTH SPACE’ (U200B)&#xff0c;可用于內容標識&#xff0c;不占位數&#xff08;寬度0&#xff0…

【MATLAB統計分析與應用100例】案例017:matlab讀取Excel數據,進行變量系統聚類分析

1. 變量系統聚類分析結果 2. matlab完整代碼 (1)讀取數據,并轉為距離向量 [X,textdata] = xlsread(examp09_03.xls); % 從Excel文件中讀取數據 y = 1 -

WinForm 之 窗口最小化到托盤及右鍵圖標顯示菜單

日常開發有時候需要實現窗口最小化到系統托盤&#xff0c;本文就來講講該如何實現winfrom最小化到系統托盤&#xff0c;本例子基于VS2019編寫。用C#開發winform桌面程序時&#xff0c;程序啟動后&#xff0c;默認是顯示在桌面而且在任務欄中有對應的圖標。有的時候&#xff0c;…

C語言學習筆記--函數與指針

1. 函數類型 (1)C 語言中的函數有自己特定的類型,這個類型由返回值、參數類型和參數個數共同決定。如 int add(int i,int j)的類型為 int(int,int)。 (2)C 語言中通過 typedef 為函數類型重命名 typedef type name(parameter list);//如 typedef int f(int,int); 2. 函數指針 (…

C語言試題五十七之假定輸入的字符串中只包含字母和*號。請編寫函數function,它的功能是:刪除字符串中所有*號。在編寫函數時,不得使用c語言提供的字符串函數。

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

Wordpress:將圖片、post等的URL轉換為相對路徑

2019獨角獸企業重金招聘Python工程師標準>>> 例如上傳一張圖片&#xff0c;其地址是可能 http://127.0.0.1/wp-content/uploads/2015/12/1_.png&#xff0c; 問題是如果我們通過其他的電腦通過wordpress主機的公網IP訪問這張圖片時會提示找不到。 最好的處理方法是不…

MySQL數據庫的優化(下)MySQL數據庫的高可用架構方案

【51CTO獨家特稿】如果單MySQL的優化始終還是頂不住壓力時&#xff0c;這個時候我們就必須考慮MySQL的高可用架構(很多同學也愛說成是MySQL集群)了&#xff0c;目前可行的方案有&#xff1a;一、MySQL Cluster 優勢&#xff1a;可用性非常高&#xff0c;性能非常好。每份數據至…

【MATLAB統計分析與應用100例】案例018:matlab讀取Excel數據,進行K均值聚類分析

文章目錄 1. K均值聚類分析結果2. matlab完整代碼(1)讀取數據,并進行標準化變換(2)選取初始凝聚點,進行聚類(3)繪制輪廓圖1. K均值聚類分析結果 2. matlab完整代碼 (1)讀取數據,并進行標準化變換 [X, textdata] = xlsread(examp09_04.xls

C# 擴展object類 將string強制轉換成int

擴展代碼&#xff1a; public static class ClassExtend{/// <summary>/// 將object強制轉化為int/// </summary>/// <param name"o">要強制轉換的object</param>/// <param name"defaultValue">o為null或者轉換失敗的默認值…

Android之華為手機打開app奔潰提示java.io.FileNotFoundException: res/drawable/abc_vector_test.xml

1、問題 新建立的項目,華為手機運行起來提示如下 06-24 18:24:03.175 13314 13314 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.appsinnova.android.booming/com.appsinnova.android.picper.MainActivity}: android.content…

CSS 零基礎到實戰(05)布局、盒子模型、彈性盒子【前端就業課 第二階段】

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 一、流動布局 流動布局有3種布局模型&#xff0c;分別是流動布局&…

DVWA系列之24 high級別上傳漏洞

最后再來分析high級別的代碼&#xff1a;這里首先有一條語句需要理解&#xff1a;$uploaded_ext substr($uploaded_name, strrpos($uploaded_name, .) 1);在這條語句里&#xff0c;首先利用strrpos() 函數來查找“.”在變量$uploaded_name中出現的位置&#xff0c;然后將得到…

WPF 基礎控件之 TreeView 樣式

其他基礎控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.RadioButton15.ToggleButton16.Slider TreeView 實現下面的效果1&#xff09;TreeView來實現動畫&#xff1b;Grid 分兩…

CSS文本樣式

裝飾&#xff1a; text-decoration&#xff1a;line-through&#xff08;貫穿線&#xff09;&#xff0c;underline&#xff08;下劃線&#xff09;&#xff0c;overline&#xff08;上劃線&#xff09; 對齊&#xff1a; text-align&#xff1a;center&#xff08;居中&#x…

利用系統錯誤日志監控磁盤健康狀況

一、故障現象 這個星期出現了兩塊磁盤不能讀寫&#xff0c;后面通過系統日志查看&#xff0c;關鍵字“EXT4-fs error對應某個磁盤”&#xff0c;因此利用zabbix&#xff0c;把系統日志抓取出來&#xff0c;作告警&#xff01; 二、步聚 1.機器太多&#xff0c;用到ansible的pla…

【MATLAB統計分析與應用100例】案例019:matlab讀取Excel數據,進行K均值聚類分析

文章目錄 1. 讀取數據,并進行標準化變換2. 進行模糊C均值聚類3. 查看聚類結果4. K均值聚類分析結果1. 讀取數據,并進行標準化變換 % 從文件examp09_05.xls中讀取數據 [xdata,textdata] = xlsread(examp09_05.xls); % 提取元胞數組textdata第1列的第4行至最后一行,即城市名稱…

HTML Animation 【前端就業課 第二階段】CSS 零基礎到實戰(06)

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 一、Animation 基礎 使用 Animation 可以設置幀動畫&#xff0c;與 tr…

史上最全的Visual Studio Code安裝C/C++環境,若不行頭砍給你。

一、下載Visual Studio Code安裝 下載鏈接地址 二、安裝C/C++插件 輸入c/c++, 然后點擊那里install 三、下載MinGW配置環境變量 下載地址 進入網站后不要點擊 "Download Lasted Version",往下滑,找到最新版的 "x86_64-posix-seh"。

C# 11 新特性:泛型 Attribute

之前使用JsonConverterAttribute&#xff0c;我們可以為任意類型自定義 Json 序列化。例如&#xff1a;[JsonConverter(typeof(UserJsonConverter))] public class User {public string Name { get; set; }public override string ToString(){return Name;} }public class User…

highcharts動態獲取數據生成圖表問題

動態獲取數據說白點就是從后臺傳值到前臺&#xff0c;前臺把這些值賦值給x軸與y軸&#xff08;這里指的是你X軸與Y軸都是變化的數據&#xff0c;如果你的X軸是固定的&#xff0c;像時間等等的那就另說&#xff09;。 柱狀圖的動態傳值&#xff1a; //獲取后臺數據var x [];//…