[TOC]
# 定位
元素的定位屬性,主要包括定位模式和邊偏移兩部分
**定位模式**
~~~
position: left | right | top | bottom
~~~
**邊偏移**
| 邊偏移屬性 | 描述 |
| --- | --- |
| top | 頂端偏移量, 定義元素相對于其父元素上邊線的距離 |
| bottom | 底部偏移量, 定義元素相對于其父元素下邊線的距離 |
| left | 左側偏移量, 定義元素相對于其父元素左邊線的距離 |
| right | 右側偏移量, 定義元素相對于其父元素右邊線的距離 |
相對于父元素的距離
## 靜態定位
默認方式
`position:static;` 標準流
## 絕對定位(看臉型)
`position:absolute; `
特點:
◆**自身從瀏覽器出發**
◆絕對定位之后,**元素不占位置**,**會脫標, 脫離標準流**。
◆**嵌套的盒子,父元素沒有給自身絕對定位,子元素絕對定位,子元素從瀏覽器出發設置自身位置。**
◆**嵌套的盒子,父元素絕對定位,子元素絕對定位,子元素從父元素出發設置自身位置**。
◆行內元素轉成行內塊。(不推薦使用)
## 相對定位(自戀型)
還在標準流中
`position:relative; `
◆位置從自身出發。
◆設置相對定位之后,**還占據原來的位置**。
◆子絕父相,子元素絕對定位,父元素相對定位。
◆嵌套的盒子,父元素相對定位,子元素絕對定位,子元素從父元素出發設置自身位置。
◆不能將行內元素轉成行內塊。
## 固定定位
`position:fixed;`
特點:
◆位置從瀏覽器出發。
◆**不占據原來的位置,會脫標**
◆可以將行內元素轉換為行內塊。(不推薦使用)
**固定定位一定要寫寬和高, 除非有內容撐開不用寫**
`height: 100%;`
`width: 100%;`
## 子絕父相
子級是絕對定位, 父級用相對定位
絕對定位是將元素依據最近的已經定位絕對,固定或相對定位的父元素進行定位
就是子級是絕對定位, 父級只要是定位就可以(不管是絕對還是相對)
# 定位的盒子居中對齊
◆`margin:0 auto;` **只能**讓標準流的盒子居中對齊。
◆子絕父相的盒子,居中對齊,
首先left 50%, 父盒子一半,
使用margin-left:負值, 向左走自己外邊距負的一半。
~~~
<style>
.father {
width: 800px;
height: 400px;
background-color: pink;
margin: 40px auto;
}
.son {
width: 100px;
height: 40px;
background-color: purple;
position: absolute;
/* 加了絕對定位的盒子, 左右auto就無效了 */
/* margin: 0 auto; */
left: 50%;
/* left 父盒子寬度的一半 */
margin-left: -50px;
/* 左走自己寬度 的一半 */
top: 50%;
margin-top: -20px;
}
</style>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
</body>
~~~
# 疊加次序
在css中,要想調整重疊定位元素的堆疊順序, 可以對定位元素應用`z-index`層疊等級屬性, 其值可以為正整數,負整數和0
比如: `z-index: 2;`
注意:
1. `z-index`的屬性值是0, 取值越大, 定位元素在層疊元素中越居大
2. 如果取值相同,則根據書寫順序,后來居上
3. 后面數字一定不能加單位
4. 只有相對定位,絕對定位,固定定位有此屬性,其余標準流,浮動,靜態定位都無此屬性,亦不可指定此屬性
~~~
<style>
div {
width: 200px;
height: 200px;
background-color: pink;
position: absolute; /* 絕對定位 */
top: 0;
left: 0;
}
div:first-child {
z-index: 1; /* font-weight: 700 */
}
div:nth-child(2) {
background-color: purple;
top: 30px;
left: 30px;
z-index: 2;
}
div:last-child {
background-color: skyblue;
top: 60px;
left: 60px;
}
</style>
</head>
<body>
<div></div>
<div></div>
<div></div>
</body>
~~~
# 定位模式轉換
跟 浮動一樣, 元素添加了 絕對定位和固定定位之后, 元素模式也會發生轉換, 都轉換為 行內塊模式,
** 因此 比如 行內元素 如果添加了 絕對定位或者 固定定位后 浮動后,可以不用轉換模式,直接給高度和寬度就可以了。**
# 四種定位總結
| 定位模式 | 是否脫標占有位置 | 是否可以使用邊偏移 | 移動位置基準 |
| ------------ | ---------- | --------- | ---------------- |
| 靜態static | 不脫標,正常模式 | 不可以 | 正常模式 |
| 相對定位relative | 不脫標,占有位置 | 可以 | 相對自身位置移動(自戀型) |
| 絕對定位absolute | 完全脫標,不占有位置 | 可以 | 相對于定位父級移動位置(拼爹型) |
| 固定定位fixed | 完全脫標,不占有位置 | 可以 | 相對于瀏覽器移動位置(認死理型) |
- HTML
- 標簽
- 超鏈接
- 列表
- 表格和表單
- h5新增標簽
- 快捷方式
- 標簽包含
- CSS
- 選擇器
- 行內,塊元素,鏈接
- css三大特性
- 盒子模型
- 定位
- css可見性
- emment書寫
- 文本元素
- 外觀屬性
- 背景
- 浮動
- ps
- 用戶界面樣式
- 顯示和隱藏
- 過渡
- 2D,3D變形
- 動畫animation
- 伸縮布局(CSS3)
- BFC
- 優雅降級和漸進增強
- 3D旋轉
- 雙飛翼和圣杯
- JS基礎
- 輸出消息的幾種方式
- 數據類型
- Date對象
- Math對象
- Array對象
- 字符串常用方法
- 數據類型轉換
- 等號運算
- 代碼調試
- 數組
- 函數
- WebAPI
- webapi簡介
- 獲取頁面元素
- 事件
- 屬性操作
- 創建元素
- 節點操作
- 事件詳解
- BOM
- 位置相關屬性
- 拖拽彈窗
- 彈出層加遮罩
- ES6
- let和const
- 解構表達式變化
- 函數優化
- map和reduce
- nrm
- npm
- npm基礎
- package.json
- 淘寶鏡像
- webpack
- 介紹
- 多入口文件(Multiple entry files)
- Webpack CSS loader加載器
- webpack Image loader 加載圖片
- uglify-js壓縮打包JS
- webpack構建本地服務器
- vue內部指令
- v-if,v-show,v-for
- v-text,v-html
- v-on
- v-model
- v-bind
- v-pre,v-cloak,v-once
- vue全局api
- Vue.directive 自定義指令
- vue.extend構造器的延伸
- vue.set全局操作
- Vue的生命周期(鉤子函數)
- Template 制作模版
- Component 初識組件
- Component 組件props 屬性設置
- Component 父子組件關系
- Component 標簽
- vue選項
- propsData Option全局擴展數據傳遞
- computed Option 計算選項
- Methods Option 方法選項
- watch選項監控數據
- Mixins 混入選項操作
- Extends Option 擴展選項
- delimiters 選項
- vue實例和內置組件
- 實例屬性
- 實例方法
- 實例事件
- 內置組件 -slot
- vue-cli
- vue-cli介紹
- 項目目錄結構
- vue-cli模板
- vue-router
- 簡介
- 配置子路由
- 參數傳遞
- 單頁面多路由區域操作
- url傳遞參數
- vscode