1. 程式人生 > 其它 >CSS(10) Position(定位)

CSS(10) Position(定位)

一、position 屬性

指定了元素的定位型別。

position 屬性的五個值:

元素可以使用的頂部,底部,左側和右側屬性定位。然而,這些屬性無法工作,除非是先設定position屬性。他們也有不同的工作方式,這取決於定位方法。

1、static 定位

HTML 元素的預設值,即沒有定位,遵循正常的文件流物件。

靜態定位的元素不會受到 top, bottom, left, right影響。

$1```

    }

[嘗試一下 »](https://www.runoob.com/try/try.php?filename=trycss_position_static)

### 2、fixed 定位

元```css
$1```
        position:fixed;

        top:30px;

        right:5px;

    }

[嘗試一下 »](https://www.runoob.com/try/try.php?filename=trycss_position_fixed)
```css
$1```

    #ads{

 ```css
$1```
        _top:expression(documentElement.scrollTop + documentElement.clientHeight-this.offsetHeight);

        
```css
$1```
    h2.pos_left

    {

        position:relative;

        left:-20px;

 ```css
$1```
    }

[嘗試一下 »](https://www.runoob.com/try/try.php?filename=trycss_position_relative)

移動相對定位元素,但它原本所佔的空間不會改變。

    
    
    h2.pos_top

    {

        position:relative;

        top:-50px;

    }

[嘗試一下
»](https://www.runoob.com/try/try.php?filename=trycss_position_relative2)

相對定位元素經常被用來作為絕對定位元素的容器塊。

### 4、absolute 定位
```css
$1```
        left:100px;

        top:150px;

    }

[嘗試一下 »](https://www.runoob.com/try/try.php?filename=trycss_position_absolute)

absolute 定位使元素的位置與文件流無關,因此不佔據空間。
```css
$1```
它的行為就像 **position:relative;** 而當頁面滾動超出目標區域時,它的表現就像 **position:fixed;**
,它會固定在目標位置。

元素定位表現為在跨越特定閾值前為相對定位,之後為固定定位。

這個特定閾值指的是 top, right, bottom 或 left 之一,換言之,指定 top, right, bottom 或 left
四個閾值其中之一,才可使粘性定位生效。否則其行為與相對定位相同。

**注意:** Internet Explorer, Edge 15 及更早 IE 版本不支援 sticky 定位。 Safari 需要使用
-webkit- prefix (檢視以下例項)。

    
    
    div.sticky {

        position: -webkit-sticky; /* Safari */

        position: sticky;

        top: 0;

        background-color: green;

        border: 2px solid #4CAF50;

    }

[嘗試一下 »](https://www.runoob.com/try/try.php?filename=trycss_position_sticky)
```css
$1```
    
    img

    {

        position:absolute;

        left:0px;

        top:0px;

 ```css
    h1.hidden {visibility:hidden;}

具有更高堆疊順序的元素總是在較低的堆疊順序元素的前面。

*```css
h1.hidden {display:none;}


CSS overflow 屬性可以控制內容溢位元素框時在對應的元素區間內新增滾動條。

overflow屬性有以下值:

  * visible:預設值。內容不會被修剪,會呈現在元素框之外。
  * hidden:內容會被修剪,並且其餘內容是不可見的。
  * scroll:內容會被修剪,但是瀏覽器會顯示滾動條以便檢視其餘的內容。
  * auto:如果內容被修剪,則瀏覽器會顯示滾動條以便檢視其餘的內容。
  * inherit:規定應該從父元素繼承 overflow 屬性的值。

**注意:** overflow 屬性只工作於指定高度的塊元素上。

**注意:** 在 OS X Lion ( Mac 系統) 系統上,滾動條預設是隱藏的,使用的時候才會顯示 (設定 "overflow:scroll"
也是一樣的)。

### overflow: visible

預設情況下,overflow 的值為 visible, 意思是內容溢位元素框:

    
    
    div {

        width: 200px;

        height: 50px;

        background-color: #eee;

        overflow: visible;

    }

[嘗試一下 »](https://www.runoob.com/try/try.php?filename=trycss_overflow_visible)

## 三、CSS Display(顯示) 與 Visibility(可見性)

display屬性設定一個元素應如何顯示,visibility屬性指定一個元素應可見還是隱藏。

### 1、隱藏元素 - display:none或visibility:hidden

隱藏一個元素可以通過把display屬性設定為"none",或把visibility屬性設定為"hidden"。但是請注意,這兩種方法會產生不同的結果。

visibility:hidden可以隱藏某個元素,但隱藏的元素仍需佔用與未隱藏之前一樣的空間。也就是說,該元素雖然被隱藏了,但仍然會影響佈局。

    
    
    h1.hidden {visibility:hidden;}

[嘗試一下 »](https://www.runoob.com/try/try.php?filename=trycss_visibility_hidden)

d```css
    li {display:inline;}

嘗試一下 »

2、CSS 塊和內聯元素

    span {display:block;}

寬度(width)、高度(height)、內邊距(padding)和外邊距(margin)都可控制;

塊級元素主要有:

__address , blockquote , center , dir , div , dl , fieldset , form , h1 , h2 ,
h3 , h4 , h5 , h6 , hr , isindex , menu , noframes , noscript , ol , p , pre ,
table , ul , li

2、內聯元素

$1```
, img , input , kbd , label , q , s , samp , select , small , span , strike ,
strong , sub , sup ,textarea , tt , u , var

**3、可變元素**

(根據上下文關係確定該元素是塊元素還是內聯元素):

__applet ,button ,del ,iframe , ins ,map ,object , script

### **3、CSS中塊級、內聯元素的應用:**

利用CSS我們可以擺脫上面表格裡HTML標籤歸類的限制,自由地在不同標籤/元素上應用我們需要的屬性。

主要用的CSS樣式有以下三個:

  * __display:block -- 顯示為塊級元素
  * __display:inline -- 顯示為內聯元素
  * __display:inline-block -- 顯示為內聯塊元素,表現為同行顯示並可修改寬高內外邊距等屬性

我們常將list元素加上display:inline-block樣式,原本垂直的列表就可以水平顯示了。

### 4、如何改變一個元素顯示

可以更改內聯元素和塊元素,反之亦然,可以使頁面看起來是以一種特定的方式組合,並仍然遵循web標準。

下面的示例把列表項顯示為內聯元素:

    
    
    li {display:inline;}

[嘗試一下
»](https://www.runoob.com/try/try.php?filename=trycss_display_inline_list)

下面的示例把span元素作為塊元素:

    
    
    span {display:block;}

[嘗試一下 »](https://www.runoob.com/try/try.php?filename=trycss_display_block2)

**注意:** 變更元素的顯示型別看該元素是如何顯示,它是什麼樣的元素。例如:一個內聯元素設定為display:block是不允許有它內部的巢狀塊元素。

## 四、clip

剪輯一個絕對定位的元素。值: _shape、_ auto、inherit

裁剪一張影象:

    
    
    img

    {

     position:absolute;

     clip:rect(0px,60px,200px,0px);

    }

[嘗試一下 »](https://www.runoob.com/try/try.php?filename=trycss_clip)

![044_結果](https://images2018.cnblogs.com/blog/24244/201808/24244-20180812003615701-1741965047.jpg)