天天看點

CSS_定位

版權聲明:本文為部落客原創文章,轉載請注明出處。 https://blog.csdn.net/twilight_karl/article/details/54799653

position屬性

absolute: 生成絕對定位的元素,相對于 static 定位以外的第一個父元素進行定位。元素的位置通過 “left”, “top”, “right” 以及 “bottom” 屬性進行規定。

fixed: 生成絕對定位的元素,相對于浏覽器視窗進行定位。元素的位置通過 “left”, “top”, “right” 以及 “bottom” 屬性進行規定。

relative: 生成相對定位的元素,相對于其正常位置進行定位。是以,”left:20” 會向元素的 LEFT 位置添加 20 像素。

static: 預設值。沒有定位,元素出現在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)。

inherit: 規定應該從父元素繼承 position 屬性的值。

相對定位

設定為相對定位的元素框會偏移某個距離。元素仍然保持其未定位前的形狀,它原本所占的空間仍保留。

position:relative;

将 top 設定為 100px,框出現在在原位置頂部下面 100 像素的地方。

将 left 設定為 50 px,那麼會在元素左邊建立 50 像素的空間,也就是将元素向右移動。

<html>
    <head>
        <style>
            .relative_left{
                position:relative;
                left:50px;
            }
            .relative_top{
                position:relative;
                top:100px;
            }
            div{
                background:yellow;
            }
        </style>
    </head>
    <body>
        <div class="relative_left"> 這是一個相對定位的段落,left:50</div>
        <div>這是一個普通段落</div>
        <div class="relative_top"> 這是一個相對定位的段落,top:100px</div>
    </body>
</html>
           

絕對定位

絕對定位的元素的位置相對于最近的已定位祖先元素,如果元素沒有已定位的祖先元素,那麼它的位置相對于最初的包含塊。

<html>
    <head>
        <style type="text/css">
            .absolute{
                position:absolute;
                left:200px;
                top:200px;
            }
        </style>
    </head>
    <body>
    <p class="absolute">這是一個絕對定位的段落,他的位置是相對于原點(200,200)</p>
    <div style="position:absolute;left:100px;top:100px;">
        <p class="absolute">這是一個絕對定位的段落,他相對于div的位置是(200,200),實際位置應該是(300,300)</p>
    </div>

    </body>
</html>
           

是以絕對定位的位置也是相對的,相對于父元素的位置

z-index 屬性

z-index 屬性設定元素的堆疊順序。擁有更高堆疊順序的元素總是會處于堆疊順序較低的元素的前面。

定位元素沿 z 軸的位置,z 軸定義為垂直延伸到顯示區的軸。如果為正數,則離使用者更近,為負數則表示離使用者更遠。

元素可擁有負的 z-index 屬性值。

<html>
    <head>
        <style type="text/css">
            .z-index{
                position:absolute;
                left:10px;
                z-index:-1;
            }
        </style>
    </head>
    <body>
    <img  class="z-index" src="素材/1.png"><img>
    <p>這是一個普通段落</p>

    </body>
</html>
           

浮動

float

可能的值:

描述
left: 向左浮動
right: 向右浮動
none: 不浮動,預設值
inherit: 繼承

clear

clear 屬性規定元素的哪一側不允許其他浮動元素。

left 在左側不允許浮動元素。
right 在右側不允許浮動元素。
both 在左右兩側均不允許浮動元素。
none 預設值。允許浮動元素出現在兩側。
inherit 規定應該從父元素繼承 clear 屬性的值。
<html>
    <head>
        <style type="text/css">
            .a{
                float:left;
                clear:both;
                width:200;
                height:200;
                background-color:green;
            }
            .b{
                float:left;
                clear:both;
                width:200;
                height:200;
                background-color:blue;
            }
            .d{
                float:left;
                clear:both;
                width:200;
                height:200;
                background-color:gray;
            }
        </style>
    </head>
    <body>
    <div class="a"></div>
    <div class="b"></div>
    <div class="d"></div>
    </body>
</html>
           

如果需要完成以下的效果,可以在第二段之前加上一個外邊距,将第二段擠到下方區域

當div中的元素都是浮動的時,因為内部元素不占據空間,是以div會變得非常小,并且不可見,為了看到div的效果,需要加上一個看不見的clear标記

效果如圖:

不過,還有一種法法可以避免這種問題,就是講div進行浮動,這樣div中就會顯示出真實的大小。但是這樣會影響下一個元素的樣式。

<!--使用沒有意義的clear元素-->
<html>
    <head>
        <style type="text/css">
            .news {
                 background-color: yellow;
                 border: solid 1px black;
            }

            .news img {
                float: left;
            }

            .news p {
                 float: right;
            }

        </style>
    </head>

    <body>
        <div class="news">
            <img src="素材/1.png" />
            <p>some text</p>
            <!--沒有意義的标記,但是可以看到浮動的div-->
            <div style="clear:both"></div>
        </div>
    </body>
</html>           

display顯示屬性

定義建立布局時元素生成的顯示框類型

none: 此元素不會被顯示。

block: 此元素将顯示為塊級元素,此元素前後會帶有換行符。

inline: 此元素會被顯示為内聯元素,元素前後沒有換行符。預設。

inline-block: 行内塊元素。(CSS2.1 新增的值)

list-item: 此元素會作為清單顯示。

run-in: 此元素會根據上下文作為塊級元素或内聯元素顯示。

compact: CSS 中有值 compact,不過由于缺乏廣泛支援,已經從 CSS2.1 中删除。

marker: CSS 中有值 marker,不過由于缺乏廣泛支援,已經從 CSS2.1 中删除。

table: 此元素會作為塊級表格來顯示(類似 <table>),表格前後帶有換行符。

inline-table: 此元素會作為内聯表格來顯示(類似<table>),表格前後沒有換行符。

table-row-group: 此元素會作為一個或多個行的分組來顯示(類似 <tbody>)。

table-header-group: 此元素會作為一個或多個行的分組來顯示(類似 <thead>)。

table-footer-group: 此元素會作為一個或多個行的分組來顯示(類似 <tfoot>)。

table-row: 此元素會作為一個表格行顯示(類似 <tr>)。

table-column-group: 此元素會作為一個或多個列的分組來顯示(類似 <colgroup>)。

table-column: 此元素會作為一個單元格列顯示(類似 <col>)

table-cell: 此元素會作為一個表格單元格顯示(類似 <td> 和 <th>)

table-caption: 此元素會作為一個表格标題顯示(類似 <caption>)

inherit: 規定應該從父元素繼承 display 屬性的值。

常見的塊級元素有 DIV, FORM, TABLE, P, PRE, H1~H6, DL, OL, UL 等。

常見的内聯元素有 SPAN, A, STRONG, EM, LABEL, INPUT, SELECT, TEXTAREA, IMG, BR 等。

<html>
<head>
    <style>
        .s{
            display:block;
        }
        .s2{
            display:inline;
        }
        p{
            background:green;
        }
    </style>
</head>

<body>

<p >這是一個普通的段落</p>
<p class="s">這是一個塊級段落</p>
<p class="s2">這是一個内聯段落<p>

</body>
</html>           

可見p元素是一個塊級元素

<html>
<head>
    <style>
        .s{
            display:block;
        }
        .s2{
            display:inline;
        }
        span{
            background:green;
        }
    </style>
</head>

<body>

<span >這是一個普通的段落</span>
<span class="s">這是一個塊級段落</span>
<span class="s2">這是一個内聯段落<span>
<span>這是一個普通段落</span>

</body>
</html>           

塊級段落前後會自帶換行,而内聯元素不會,他們會顯示在一行

内聯元素不能定義寬度

inline-block與block的差別在于inline-block可以控制大小,而且顯示時像内聯元素一樣沒有換行,排列在同一行中。