html學(xué)習(xí)之路(一)深入理解css中position屬性

鏈接

position屬性之:static定位

static定位是HTML元素的默認(rèn)值,即沒有定位,元素出現(xiàn)在正常的流中,因此,這種定位就不會(huì)收到top,bottom,left,right的影響。

html代碼

<div class="wrap">
    <div class="content">
    </div>
</div>

css代碼

.wrap{width: 300px;height: 300px; background: red;}
.content{position: static; top:100px; width: 100px;height: 100px; background: blue;}

效果圖如下


static定位
static定位

結(jié)論:雖然設(shè)置了static以及top,但是元素仍然出現(xiàn)在正常的流中


position屬性之:fixed定位

fixed定位是指元素的位置相對(duì)于瀏覽器窗口是固定位置,即使窗口是滾動(dòng)的它也不會(huì)滾動(dòng),且fixed定位使元素的位置與文檔流無關(guān),因此不占據(jù)空間,且它會(huì)和其他元素發(fā)生重疊。

html代碼如下:

<div class="content">
    我是使用fix來定位的!!!所以我相對(duì)于瀏覽器窗口,一直不動(dòng)。
</div>

css代碼如下:

body{height:1500px; background: green; font-size: 30px; color:white;}
.content{ position: fixed; right:0;bottom: 0; width: 300px;height: 300px; background: blue;}
fixed定位

結(jié)論:右下角的div永遠(yuǎn)不會(huì)動(dòng),就像經(jīng)常彈出來的廣告


position屬性之:relative定位

相對(duì)定位元素的定位是相對(duì)它自己的正常位置的定位。

結(jié)論:即使相對(duì)元素的內(nèi)容移動(dòng)了,但是預(yù)留空間的元素仍然保存在正常流動(dòng),也就是說相對(duì)移動(dòng)之后,不會(huì)對(duì)下面的其他元素造成影響


position屬性之:absolute定位

絕對(duì)定位的元素相對(duì)于最近的已定位父元素,如果元素沒有已定位的父元素,那么它的位置相對(duì)于<html>。

例①
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>絕對(duì)定位</title>
    <style>               
         body{background:green;}
        .parent{ width: 500px;height: 500px;background: #ccc;}
        .son{ width: 300px;height: 300px;background: #aaa;}
        span{position: absolute; right: 30px; background: #888;}
    </style>
</head>
<body>
    <div class="parent">
        <div class="son">
            <span>什么?</span>
        </div>
    </div>
</body>
</html>
效果

結(jié)論:只在span中設(shè)置了position:absolute;而在其父元素中都沒有,于是它的位置是相對(duì)于html的。

例②
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>絕對(duì)定位</title>
    <style>               
         body{background:green;}
        .parent{ width: 500px;height: 500px;background: #ccc;}
        .son{position: relative; width: 100px;height: 100px;background: #aaa; }
        span{position: absolute; right: 30px; background: #888;}
    </style>
</head>
<body>
    <div class="parent">
        <div class="son">
            <span>什么?</span>
        </div>
    </div>
</body>
</html>
# 相較于上一個(gè)例子,我只修改了class為son的元素的css,設(shè)置為position:relative;
效果圖

我們發(fā)現(xiàn)現(xiàn)在span的位置是相對(duì)于設(shè)有position屬性的class為son的父元素的。

例③
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>絕對(duì)定位</title>
    <style>               
         body{background:green;}
        .parent{position: absolute; width: 300px;height: 300px;background: #ccc;}
        .son{ width: 300px;height: 300px;background: #aaa;}
        span{position: absolute; right: 30px; background: #888;}
    </style>
</head>
<body>
    <div class="parent">
        <div class="son">
            <span>什么?</span>
        </div>
    </div>
</body>
</html>
#這個(gè)例子我只是修改了第一個(gè)例子中的css--設(shè)置了position:absolute;效果如下:
效果圖

我們發(fā)現(xiàn),現(xiàn)在span的定位是相對(duì)于具有position:absolute的屬性的class為parent的父元素。

例④
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>絕對(duì)定位</title>
    <style>               
         body{background:green;}
        .parent{position:fixed; width: 300px;height: 300px;background: #ccc;}
        .son{ width: 300px;height: 300px;background: #aaa;}
        span{position: absolute; right: 30px; background: #888;}
    </style>
</head>
<body>
    <div class="parent">
        <div class="son">
            <span>什么?</span>
        </div>
    </div>
</body>
</html>

相對(duì)于例1,我添加了fixed的position屬性,發(fā)現(xiàn)結(jié)果和例3是一模一樣的。

例⑤
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>絕對(duì)定位</title>
    <style>               
         body{background:green;}
        .parent{position:static; width: 300px;height: 300px;background: #ccc;}
        .son{ width: 300px;height: 300px;background: #aaa;}
        span{position: absolute; right: 30px; background: #888;}
    </style>
</head>
<body>
    <div class="parent">
        <div class="son">
            <span>什么?</span>
        </div>
    </div>
</body>
</html>

相對(duì)于例1,我添加了static的position屬性(即html的默認(rèn)屬性),結(jié)果和例1是一樣的。

綜上所述,當(dāng)某個(gè)absolute定位元素的父元素具有position:relative/absolute/fixed時(shí),定位元素都會(huì)依據(jù)父元素而定位,而父元素沒有設(shè)置position屬性或者設(shè)置了默認(rèn)屬性,那么定位屬性會(huì)依據(jù)html元素來定位。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,790評(píng)論 1 92
  • CSS的position總是屬性很容易讓人弄混~ 為了仔細(xì)區(qū)別它們,所以今天總結(jié)一下CSS的position屬性~...
    fehysunny閱讀 2,946評(píng)論 0 7
  • 1. 前言 前端圈有個(gè)“梗”:在面試時(shí),問個(gè)css的position屬性能刷掉一半人,其中不乏工作四五年的同學(xué)。在...
    YjWorld閱讀 4,528評(píng)論 5 15
  • 當(dāng)在這一個(gè)頁面上實(shí)現(xiàn)布局和定位有幾種不同的技術(shù)。使用哪種技術(shù),很大程序上取決于內(nèi)容和目標(biāo)頁面,因?yàn)橛泻芏嗉夹g(shù)比別人...
    lulu_c閱讀 1,092評(píng)論 0 5
  • 如果,我不能言語 我將是最好的傾聽者 以一個(gè)摯友的身份 沉默的承載著你所有悲歡 直到我累了 如果我不能傾聽 我將是...
    余下六只貓閱讀 390評(píng)論 4 9