2020-11-29第二週學習內容
這周學習了視覺格式化模型中後兩個內容:浮動和定位
那就先來寫浮動吧
浮動
應用場景
- 文字環繞
- 橫向排列
使用效果:
-
文字環繞效果
效果展示
-
橫向排列
<style>
div{
width: 500px;
height: 500px;
background-color: darkseagreen;
}
.box{
width: 50px;
height: 50px;
background-color: darkslateblue;
float: left;
border:10px deeppink dashed;
font-size: 1em;
}
</style>
<body>
<div>
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
<div class="box">5</div>
<div class="box">6</div>
<div class="box">7</div>
<div class="box">8</div>
<div class="box">9</div>
<div class="box">10</div>
<div class="box">11</div>
<div class="box">12</div>
</div>
</body>
浮動的基本特點
修改float屬性值為:
left: 左浮動,元素靠上靠左
right:右浮動,元素靠上靠右
預設值為 none
- 當一個元素浮動後,元素必定為塊盒(更改display屬性為block)
- 浮動元素的包含塊,和常規流一樣,為父元素的內容盒
盒子尺寸
- 寬度為auto時,適應內容寬度
- 高度為auto時,與常規流一致,適應內容的高度
- margin 為auto時,為0
- 邊框、內邊距、百分比設定與常規流一致
盒子排列
- 左浮動的盒子靠上靠左排列
- 右浮動的盒子靠上靠右排列
- 浮動盒子在包含快中排列時,會避開常規流盒子
- 常規流塊盒在排列時,無視浮動盒子
- 行盒在排列時,會避開浮動盒子
- 外邊距合併不會發生
如果文字沒有在行盒中,瀏覽器會自動生成一個行盒包裹文字,該行盒叫做匿名行盒
高度坍塌
高度坍塌的根源:常規流盒子的自動高度,在計算時,不會考慮浮動盒子
清除浮動,涉及css屬性:clear
- 預設值:none
- left:清除左浮動,該元素必須出現在前面所有左浮動盒子的下方
- right:清除右浮動,該元素必須出現在前面所有右浮動盒子的下方
- both:清楚左右浮動,該元素必須出現在前面所有浮動盒子的下方
高度坍塌的現象:
<style>
.contianer{
background-color: deepskyblue;
padding: 30px;
}
.item{
width: 50px;
height: 50px;
background-color: forestgreen;
border: gold solid 1px;
float: left;
}
</style>
<body>
<div class="contianer">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="end"></div>
</div>
解決高度坍塌問題的方法:
一、在浮動盒子的後面加常規流盒子(並清除浮動)
二、
<style>
.contianer{
background-color: deepskyblue;
padding: 30px;
}
.item{
width: 50px;
height: 50px;
background-color: forestgreen;
border: gold solid 1px;
float: left;
}
.clearfix::after{
content:"";
display: block;
clear: both;
}
</style>
<body>
<div>
<div class="contianer clearfix">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
以上就是我學到的浮動方面的有關知識,接下來寫定位吧
定位
定位:手動控制元素在包含塊中的精準位置
涉及的css屬性:position
position屬性
- 預設值:static,靜態定位(不定位)
- relative :相對定位
- absolute:絕對定位
- fixed: 固定定位
一個元素只要position的取值不是static,認為該元素是一個定位元素
定位元素會脫離文件流(相對定位元素除外)
- 文件流中的元素擺放時,會忽略脫離了文件流中的元素
- 文件流中,元素計算自動高度時,會忽略脫離了文件流中的元素
相對定位
不會導致元素脫離文件流,只會讓元素在原來位置上進行偏移(通常用來為絕對定位的元素提供包含塊)
相對定位不會改變盒子的特徵,比如之前是行盒,設定相對定位後仍然為行盒
可以通過四個css屬性對其進行偏移
- left
- right
- bottom
- top
盒子的偏移不會對其他盒子造成影響
舉個例子吧
<style>
div{
height: 30px;
background: blueviolet;
border: cornflowerblue solid 3px;
}
.item1{
position: relative;
left: 30px;
top: 20px;
}
</style>
<body>
<div class="item1"></div>
<div class="item2"></div>
<div class="item3"></div>
絕對定位
- 寬高為auto,適應內容
- 包含塊變化:找祖先元素中第一個定位元素,該元素的填充盒為其包含塊,若找不到,則它的包含塊為整個網頁
固定定位
其他情況和絕對定位完全一樣。
包含塊不同:固定定位的包含塊為視口(瀏覽器的可視視窗)
<style>
.box1 {
position: relative;
width: 300px;
height: 300px;
padding: 20px;
border: seagreen solid 10px;
}
.box2 {
width: 200px;
height: 200px;
margin: 20px;
border: turquoise solid 10px;
}
.box3 {
position: absolute;
left: 0px;
top: 0px;
width: 40px;
height: 40px;
background: yellow;
}
</style>
</head>
<body>
<div class="box1">
<div class="box2">
<div class="box3"></div>
</div>
</div>
</body>
如果絕對定位元素找不到祖先元素中的定位元素,則會出現下面的情況:
<style>
.box1 {
width: 300px;
height: 300px;
padding: 20px;
border: seagreen solid 10px;
}
.box2 {
width: 200px;
height: 200px;
margin: 20px;
border: turquoise solid 10px;
}
.box3 {
position: absolute;
left: 0px;
top: 0px;
width: 40px;
height: 40px;
background: yellow;
}
</style>
</head>
<body>
<div class="box1">
<div class="box2">
<div class="box3"></div>
</div>
</div>
</body>
固定定位
其他情況和絕對定位完全一樣。
包含塊不同:固定定位的包含塊為視口(瀏覽器的可視視窗)
這裡也舉個例子吧.
定位下的居中
某個方向居中:
- 定寬(高)
- 將左右(上下)距離設定為0
- 將左右(上下)margin設定為auto
絕對定位和固定定位中,margin為auto時,會自動吸收剩餘空間
<style>
.container{
width: 500px;
height: 500px;
background: aqua;
}
.box{
width: 100px;
height: 100px;
background: red;
position: fixed;
left: 0px;
right: 0px;
margin: 0 auto;
top: 0px;
bottom: 0px;
margin: auto;
}
/* 注:固定元素的包含塊為可視口 */
</style>
<body>
<div class="container">
<div class="box"></div>
</div>
</body>
多個定位元素重疊時(即誰在前誰在後的問題)
堆疊上下文
設定 z-index,通常情況下該值越大,越靠近使用者
只有定位元素設定z-index有效
z-index可以是負數,如果是負數,則遇到常規流,浮動元素,則會被其覆蓋
補充
絕對定位、固定定位元素一定是塊盒
絕對定位、固定定位元素一定不是浮動
沒有外邊距合併
相關文章
- Java學習---第二週週報Java
- 已學習內容
- 待學習內容
- CSS學習內容CSS
- 第二週學習總結
- 第二週學習報告
- 學習Java的第二週Java
- 學習內容介紹
- PHP 第二週函式學習記錄PHP函式
- 第二週學習--基本資料型別資料型別
- JAVA學習-------第二週知識點總結Java
- Python基礎學習內容概述Python
- MakeFile 學習筆記一 核心內容筆記
- 10.29 人工智慧學習內容人工智慧
- 學習python做爬蟲主要學習哪些內容呢?Python爬蟲
- 學習進度條__軟體工程概論第二週學習計劃軟體工程
- 知物由學 | 增量學習助力內容風控
- Vue 插槽之插槽內容學習總結Vue
- 分享學習內容,一起進步
- 在電腦學習,收集網頁內容網頁
- 10.15 人工智慧學習內容人工智慧
- 網路安全需要學習哪些內容?網路安全線上學習
- vue - 生命週期第二次學習與理解Vue
- Linux學習多久?主要培訓哪些內容?Linux
- UI設計培訓主要學習哪些內容UI
- 軟體測試培訓學習哪些內容?
- Python學習筆記:列表(list)基本內容Python筆記
- 學習網路安全需要基礎嗎?網路安全內容學習
- Page Ability生命週期內容介紹!
- 第二週程式設計練習程式設計
- 入門UI設計一般要學習多久,學習哪些內容UI
- Linux課程零基礎可以學習嗎?學習哪些內容?Linux
- Linux 相關學習內容(不定期更新)Linux
- 工作間隙整理學習內容的意外收穫
- elastic學習-elasticsearch8.5啟動控制檯內容Elasticsearch
- 新手入門前端,需要學習的基礎內容。前端
- VB_Net入門學習教程完整內容 (轉)
- web前端開發入門,學習路徑以及具體的學習內容Web前端