前端小白的第一篇博客—CSS定位

CSS定位的一些個人理解

本人是還沒有入門的技術小白,僅以此篇記錄成長,歡迎大家一起討論學習,也歡迎在評論區指出問題~~
言歸正傳啦,以下是關於CSS中定位的個人理解。

一、分類

在CSS中定位分爲:static靜止定位、relative相對定位、absolute絕對定位、fixed固定定位、inherit繼承定位。本文主要討論相對定位,絕對定位與固定定位。

二、應用

(1)相對定位

相對自己的原始位置定位
就是在沒添加定位前,它已經佔了一個位置了,應用相對定位後,是相對於它本來該在的位置上下左右移動。但是它之前的位置還是給它留着的。之前看到有人給相對定位比喻成進城打工的人,雖然進城了,但是老家還是有房子的,不會因爲人進城打工,老家的房子就沒了。下面引入代碼,大家可以運行一下感受相對定位。

先做一些準備

<!DOCTYPE html>
<html>
    <meta charset="utf-8">
    <head>
        <style>
        *{
            margin: 0;/*去掉系統自帶的一些邊距*/
            padding: 0;
            }
        .big{/*爲了看上去比較直觀,我們定義了一個大盒子和小盒子*/
            width: 1000px;
            height:1000px;
            background-color: gray;
        }
         .small{
             width: 300px;/*定義一個邊長爲300像素的黃色小正方形*/
             height: 300px;
             background-color: yellow;
         }
        </style>
    </head>
    <body>
        <div class="big">
            <div class="small">
            </div>
        </div>

    </body>
    </html>

沒加定位之前是醬紫的

沒加定位

現在我們給黃色小正方形加入相對定位

 .small{
             width: 300px;/*定義一個邊長爲300像素的黃色小正方形*/
             height: 300px;
             background-color: yellow;
             position: relative;/*注意這裏啦*/
             top:20px;
             left: 20px;
         }

運行出來是這樣的啦可以看出相對於原來的位置挪動啦

在這裏插入圖片描述

(2)絕對定位

相對於最近的非static 定位的祖先元素定位
這聽上去有點繞,難懂。首先,絕對定位是相對於祖先元素定位,祖先元素就是父元素,爺爺元素,太爺爺元素等等等等啦,總之就是上一級元素,在說相對定位的時候,灰色盒子就是黃色盒子的父元素。再者,這個祖先元素是非static的定位元素,那麼就是說祖先元素要有定位,還不能是static定位,那我們可能會疑惑了,如果父元素沒有定位怎麼辦??答案是找爺爺,也就是上級元素沒有定位,就找上上級,那我們可能又有疑惑了,如果祖先元素都沒有定位,那怎麼辦丫!!!答案是相對於body定位。這裏要說一下,絕對定位之後,原來的位置就沒有了,就像去城裏打工的人賺錢了,舉家搬遷到城裏。
所以,現在情況很明朗了,絕對定位分爲兩種情況
1、祖先元素有定位(子絕父相
2、祖先元素沒定位

先說第一種,在祖先元素有定位時,我們最常用的是子絕父相,及兒子是絕對定位,父親是相對定位。

給之前的灰色大盒子添加相對定位,黃色盒子添加絕對定位

 .big{/*爲了看上去比較直觀,我們定義了一個大盒子和小盒子*/
            width: 1000px;
            height:1000px;
            background-color: gray;
            position: relative;/*這裏這裏*/
            top: 100px;
            left:150px;
        }
         .small{
             width: 300px;/*定義一個邊長爲300像素的黃色小正方形*/
             height: 300px;
             background-color: yellow;
             position: absolute;/*這裏這裏*/
             top:20px;
             left: 20px;
         }

就是這亞子的效果啦,小盒子始終是和大盒子保持相應的距離。

絕對定位

下面說祖先元素沒有定位

.big{/*爲了看上去比較直觀,我們定義了一個大盒子和小盒子*/
            width: 1000px;
            height:1000px;
            background-color: gray;
            /*position: relative;
            top: 100px;
            left:150px;*/
            margin-top: 100px;/*這裏加了邊距是爲了更直觀的看出,小盒子不再是相對於大盒子定位了*/
            margin-left: 100px;
        }
         .small{
             width: 300px;/*定義一個邊長爲300像素的黃色小正方形*/
             height: 300px;
             background-color: yellow;
             position: absolute;
             top:20px;
             left: 20px;
         }

這裏可以看出黃色方塊不再根據灰色方塊定位了,而好像是相對於瀏覽器左上角,其實嚴格來說並不是相對於瀏覽器,而是相對於body,相對於body要如何去理解呢,比如說一個文檔,很長很長,瀏覽器中我們肯定是要藉助於滾動條來瀏覽的,因爲瀏覽器的窗口那麼大,我們說的body就是瀏覽器裏的文檔,也可以說是文檔裏的內容。我們看到的關於左上角定位,其實也不是固定的,當我們把posision的值修改成bottom:20px;right:20px;就會變成右下角。

在這裏插入圖片描述

(3)固定定位

相對於瀏覽器(屏幕視口)定位
這裏就是可能會容易和絕對定位的第二種情況混淆,其實區別是很大很大的,上面也說過了,絕對定位第二種情況是相對於內容,而固定定位是確確實實的相對於瀏覽器窗口。那麼這種所帶來的區別在視覺上會產生什麼樣的差異呢,就是絕對定位第二種情況會隨着內容的滾動而滾動,但是固定定位不會,瀏覽器窗口就那麼大,它就固定在那不動,不論內容滾動到哪兒,最形象的例子是屏幕底下的小廣告,不管你內容翻到哪,它就像狗皮膏藥一樣賴在那。

這裏主要說和絕對定位的區別,因爲是動態的所以不發運行結果圖啦~給大家一段代碼,大家可以運行之後自行體會~

運行之後要滑動滾動條哦~~

<!DOCTYPE html>
<html>
    <meta charset="utf-8">
    <head>
        <style>
        *{
            margin: 0 ;
            padding: 0;
            }
         body{
                width: 1000px;
                height: 5000px;
            }
        .big{/*爲了看上去比較直觀,我們定義了一個大盒子和小盒子*/
            width: 1000px;
            height:1000px;
            background-color: gray;
            position: absolute;
            top: 100px;
            left:150px;
        }
         .small{
             width: 300px;/*定義一個邊長爲300像素的黃色小正方形*/
             height: 300px;
             background-color: yellow;
             position: fixed;
             bottom:20px;
             right: 20px;
         }
        </style>
    </head>
    <body>
        <div class="big">    
        </div>
        <div class="small">
        </div>

    </body>
    </html>

好啦~~定位就分享到這,其他類型的定位用的不多,所以就不贅述啦~
希望這篇文章可以幫助到大家,也希望自己可以逐漸成長起來~
本文如果有任何問題,歡迎評論區討論交流~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章