CSS樣式 代碼、語法基礎

CSS代碼語法

CSS參考手冊網址:http://www.w3school.com.cn/cssref/index.asp

·  css 樣式選擇符聲明組成,而聲明又由屬性和值組成,如下圖所示:


        選擇符:又稱選擇器,指明網頁中要應用樣式規則的元素,如網頁中所有的段(p)的文字將變成藍色,而其他的元素(如ol)不會受到影響。

        聲明:在英文大括號“{}”中的的就是聲明,屬性和值之間用英文冒號”分隔。當有多條聲明時,中間可以英文分號;”分隔,如下所示:

    p{font-size:12px;color:red;}

注意:最後一條聲明可以沒有分號,但是爲了以後修改方便,一般也加上分號。

 

· CSS註釋代碼

        /*註釋語句*/ 

· 內聯式css樣式

        內聯式css樣式表就是把css代碼直接寫在現有的HTML標籤中,如下面代碼:

<p style="color:red">這裏文字是紅色。</p>

        注意:要寫在元素的開始標籤裏,下面這種寫法是錯誤的

                <p>這裏文字是紅色。</p style="color:red">

並且css樣式代碼要寫在style=""雙引號中,如果有多條css樣式代碼設置可以寫在一起,中間用分號隔開。如下代碼:

<p style="color:red;font-size:12px">這裏文字是紅色。</p>

 

· 嵌入式css樣式,寫在當前的文件中

        嵌入式css樣式,就是可以把css樣式代碼寫在<style type=”text/css”></style>標籤之間

        嵌入式css樣式必須寫在<style></style>之間,並且一般情況下嵌入式css樣式寫在<head></head>之間。

 

· 外部式css樣式,寫在單獨的一個文件中

        外部式css樣式(也可稱爲外聯式)就是把css代碼寫一個單獨的外部文件中,這個css樣式文件“.css”爲擴展名<head>內(不是在<style>標籤內)使用<link>標籤css樣式文件鏈接到HTML文件內,如下面代碼:

<link href=”base.css” rel=”stylesheet” type=”text/css”/>

注意

1、css樣式文件名稱以有意義的英文字母命名,如 main.css。

2、rel="stylesheet" type="text/css" 是固定寫法不可修改。

3、<link>標籤位置一般寫在<head>標籤之內。

· 三種方法的優先級

        如果對於同一個元素我們同時用了三種方法設置css樣式,那麼哪種方法真正有效呢?

            例:  1、使用內聯式CSS設置“超酷的互聯網”文字爲粉色。

                    2、然後使用嵌入式CSS來設置文字爲紅色。

                    3、最後又使用外部式設置文字爲藍色(style.css文件中設置)。 

        最終你可以觀察到“超酷的互聯網”這個短詞的文本被設置爲了粉色。因爲這三種樣式是有優先級的,記住他們的優先級:內聯式 > 嵌入式 > 外部式

        但是嵌入式>外部式有一個前提:嵌入式css樣式的位置一定在外部式的後面。如右代碼編輯器就是這樣,<link href="style.css" ...>代碼在<style type="text/css">...</style>代碼的前面(實際開發中也是這麼寫的)。

        其實總結來說,就是--就近原則(離被設置元素越近優先級別越高)。

        但注意上面所總結的優先級是有一個前提:內聯式、嵌入式、外部式樣式表中css樣式是在的相同權值的情況下。 

· 選擇器

    每一條css樣式聲明(定義)由兩部分組成,形式如下:

選擇器{

     樣式;

}

{}之前的部分就是“選擇器”,“選擇器”指明瞭{}中的“樣式”的作用對象,也就是“樣式”作用於網頁中的哪些元素。

 

· 標籤選擇器其實就是html代碼中的標籤。

        如<html>、<body>、<h1>、<p>、<img>等。

· 類選擇器

語法:.類選器名稱{css樣式代碼;}

注意:

1、英文圓點開頭

2、其中類選器名稱可以任意起名(但不要起中文噢)

使用方法:

第一步:使用合適的標籤把要修飾的內容標記起來,如下:

<span>膽小如鼠</span>

第二步:使用class="類選擇器名稱"爲標籤設置一個類,如下:

        <span class="stress">膽小如鼠</span>

第三步:設置類選器css樣式,如下:

        .stress{color:red;}/*類前面要加入一個英文圓點*/ 

· ID選擇器

    在很多方面,ID選擇器都類似於類選擇符,但也有一些重要的區別:

        1、爲標籤設置id="ID名稱",而不是class="類名稱"。

        2、ID選擇符的前面是井號(#)號,而不是英文圓點(.)。

 

· 類和ID選擇器的區別

    相同點:可以應用於任何元素

    不同點:

        1、ID選擇器只能在文檔中使用一次。與類選擇器不同,在一個HTML文檔中,ID選擇器只能使用一次,而且僅一次。而類選擇器可以使用多次

下面代碼是正確的:

  <p>三年級時,我還是一個<span class="stress">膽小如鼠</span>的小女孩,上課從來不敢回答老師提出的問題,生怕回答錯了老師會批評我。就一直沒有這個<span class="stress">勇氣</span>來回答老師提出的問題。

</p>

而下面代碼是錯誤的:

<p>三年級時,我還是一個<span id="stress">膽小如鼠</span>的小女孩,上課從來不敢回答老師提出的問題,生怕回答錯了老師會批評我。就一直沒有這個<span id="stress">勇氣</span>來回答老師提出的問題。

</p> 

        2、可以使用類選擇器詞列表方法爲一個元素同時設置多個樣式。我們可以爲一個元素同時設多個樣式,但只可以用類選擇器的方法實現,ID選擇器是不可以的(不能使用 ID 詞列表)。

下面的代碼是正確的(完整代碼見右側代碼編輯器)

.stress{

    color:red;

}

.bigsize{

    font-size:25px;

}

<p>到了<span class="stress bigsize">三年級</span>下學期時,我們班上了一節公開課...

</p>

        上面代碼的作用:是爲“三年級”三個文字設置文本顏色爲紅色並且字號爲25px。

     下面的代碼是不正確的(完整代碼見右側代碼編輯器)

#stressid{

    color:red;

}

#bigsizeid{

    font-size:25px;

}

<p>到了<span id="stressid bigsizeid">三年級</span>下學期時,我們班上了一節公開課...</p>

        上面代碼不可以實現爲“三年級”三個文字設置文本顏色爲紅色並且字號爲25px的作用。 

· 子選擇器

        子選擇器,即大於符號(>),用於選擇指定標籤元素的第一代子元素。如右側代碼編輯器中的代碼:

.food>li{border:1px solid red;}

    這行代碼會使class名爲food下的子元素li(水果、蔬菜)加入紅色實線邊框。

· 包含(後代)選擇器

        包含選擇器,即加入空格,用於選擇指定標籤元素下的後輩元素。如:

.first  span{color:red;}

這行代碼會使這段文字內容中的“膽小如鼠”字體顏色變爲紅色。

 

 

·  包含(後代)選擇器與子選擇器的區別:

    子選擇器child selector)僅是指它的直接後代,或者你可以理解爲作用於子元素的第一代後代。

    而後代選擇器是作用於所有子後代元素。後代選擇器通過空格來進行選擇,而子選擇器是通過“>”進行選擇。

    總結:>作用於元素的第一代後代,空格作用於元素的所有後代。

例:子選擇器


    包含(後代)選擇器

 

· 通用選擇器

        通用選擇器是功能最強大的選擇器,它使用一個(*)號指定,它的作用是匹配html中所有標籤元素,如下使用下面代碼使用html中任意標籤元素字體顏色全部設置爲紅色:

            * {color:red;}

· 僞類選擇符

    僞類選擇符允許給html不存在的標籤(標籤的某種狀態)設置樣式,比如說我們給html中一個標籤元素的鼠標滑過的狀態來設置字體顏色:

        a:hover{color:red;}

上面一行代碼就是爲 a 標籤鼠標滑過的狀態設置字體顏色變紅。

關於僞選擇符:

    關於僞類選擇符,到目前爲止,可以兼容所有瀏鑑器的“僞類選擇符”就是 a 標籤上使用 :hover 了(其實僞類選擇符還有很多,尤其是 css3 中,但是因爲不能兼容所有瀏覽器,本教程只是講了這一種最常用的)。其實 :hover 可以放在任意的標籤上,比如說 p:hover,但是它們的兼容性也是很不好的,所以現在比較常用的還是 a:hover 的組合。 

· 分組選擇符

    當你想爲html中多個標籤元素設置同一個樣式時,可以使用分組選擇符(,),如下代碼爲h1、span標籤同時設置字體顏色爲紅色:

  h1,span{color:red;}

它相當於下面兩行代碼:

h1{color:red;}

span{color:red;}

 

· 繼承

    CSS的某些樣式是具有繼承性的,繼承是一種規則,它允許樣式不僅應用於某個特定html標籤元素,而且應用於其後代。如下面代碼:如某種顏色應用於p標籤,這個顏色設置不僅應用p標籤,還應用於p標籤中的所有子元素文本,這裏子元素爲span標籤。

p{color:red;}

<p>三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>

運行結果:p中的文本與span中的文本都設置爲了紅色。 

 但注意有一些css樣式是不具有繼承性的。如border:1px solid red;

p{border:1px solid red;}

<p>三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>

運行結果:它代碼的作用只是給p標籤設置了邊框爲1像素、紅色、實心邊框線,而對於子元素span是沒用起到作用的。

 

· 有的時候我們爲同一個元素設置了不同的CSS樣式代碼,那麼元素會啓用哪一個CSS樣式呢?我們來看一下面的代碼:

p{color:red;}

.first{color:green;}

<p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩。

</p>

    p和.first都匹配到了p這個標籤上,那麼會顯示哪種顏色呢?green是正確的顏色,是因爲瀏覽器是根據權值來判斷使用哪種css樣式的,權值高的就使用哪種css樣式。

· 權值的規則

標籤的權值爲1,類選擇符的權值爲10,ID選擇符的權值最高爲100

例如:

p{color:red;} /*權值爲1*/

p span{color:green;} /*權值爲1+1=2*/

.warning{color:white;} /*權值爲10*/

p span.warning{color:purple;} /*權值爲1+1+10=12*/

#footer .note p{color:yellow;} /*權值爲100+10+1=111*/

注意:還有一個權值比較特殊--繼承也有權值但很低,有的文獻提出它只有0.1,所以可以理解爲繼承的權值最低。 

· 層疊

    如果在html文件中對於同一個元素可以有多個css樣式存在並且這多個css樣式具有相同權重值,此時可以用層疊解決這個問題。

    層疊就是在html文件中對於同一個元素可以有多個css樣式存在,當有相同權重的樣式存在時,會根據這些css樣式的前後順序來決定,處於最後面的css樣式會被應用。

如下面代碼:

p{color:red;}

p{color:green;}

<p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>

最後 p 中的文本會設置爲green,這個層疊很好理解,理解爲後面的樣式會覆蓋前面的樣式。

內聯樣式表(標籤內部)> 嵌入樣式表(當前文件中)> 外部樣式表(外部文件中)。

· 重要性

    在做網頁代碼的時,有些特殊的情況需要爲某些樣式設置具有最高權值,這時候我們可以使用!important來解決。

如下代碼:

p{color:red!important;}

p{color:green;}

<p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>

這時 p 段落中的文本會顯示的red紅色。

注意:!important要寫在分號的前面

    注意樣式優先級爲:瀏覽器默認的樣式 < 網頁製作者樣式 < 用戶自己設置的樣式,但記住!important優先級樣式是個例外,權值高於用戶自己設置的樣式。 

·文字排版

font-family:”宋體/微軟雅黑/Microsoft Yahei” ----爲文字設置字體

font-size:12px; ---------設置文字字號(即大小)(例:12px)

color:#666; --------設置文字顏色(例:#666)

font-weight:bold; -----設置文字爲粗體

font-style:italic; -----設置文字爲斜體

text-decoration:underline/line-through; ---爲文字設置下劃線/刪除線

 

· 段落排版

text-indent:2em; ----段落首行縮進2個空格

line-height:2em; ----設置2倍行間距

letter-spacing:50px; ---設置文字間隔或者字母間隔(例:50px)

--注意:這個樣式使用在英文單詞時,是設置字母與字母之間的間距。

word-spacing:50px; ------設置英文單詞之間的間隔

text-align:center/left/right; -----爲塊狀元素中的文本、圖片設置居中/居左/居右樣式

 

· 在講解CSS佈局之前,我們需要提前知道一些知識,在CSS中,html中的標籤元素大體被分爲三種不同的類型:塊狀元素內聯元素(又叫行內元素)和內聯塊狀元素

常用的塊狀元素有:

<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>

常用的內聯元素有:

<a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>

常用的內聯塊狀元素有:

<img>、<input>

 

· 元素分類--塊級元素

    在html中<div>、 <p>、<h1>、<form>、<ul> 和 <li>就是塊級元素。

設置display:block就是將元素顯示爲塊級元素。如下代碼就是將內聯元素a轉換爲塊狀元素,從而使a元素具有塊狀元素特點。

a{display:block;}

塊級元素特點:

1、每個塊級元素都從新的一行開始,並且其後的元素也另起一行。(真霸道,一個塊級元素獨佔一行)

2、元素的高度、寬度、行高以及頂和底邊距都可設置。

3、元素寬度在不設置的情況下,是它本身父容器的100%(和父元素的寬度一致),除非設定一個寬度。

 

·元素分類--內聯元素

        在html中,<span>、<a>、<label>、 <strong> 和<em>就是典型的內聯元素(行內元素)(inline)元素。當然塊狀元素也可以通過代碼display:inline將元素設置爲內聯元素。如下代碼就是將塊狀元素div轉換爲內聯元素,從而使 div 元素具有內聯元素特點。

  div{

      display:inline;

  }

......

<div>我要變成內聯元素</div>

內聯元素特點:

1、和其他元素都在一行上;

2、元素的高度、寬度及頂部和底部邊距不可設置;

3、元素的寬度就是它包含的文字或圖片的寬度,不可改變。

· 元素分類--內聯塊狀元素

    內聯塊狀元素(inline-block)就是同時具備內聯元素、塊狀元素的特點,代碼display:inline-block就是將元素設置爲內聯塊狀元素(css2.1新增),<img>、<input>標籤就是這種內聯塊狀標籤。

內聯塊狀元素(inline-block)元素特點:

1、和其他元素都在一行上;

2、元素的高度、寬度、行高以及頂和底邊距都可設置。 

· 盒子模型

內邊距:padding

四個方向:padding-top、padding-bottom、padding-left、padding-right

外邊距:margin

邊框:border

塊級標籤都具備盒子模型的特徵:如:div、ul、ol、p、table 

· 盒模型---邊框

· 設置邊框粗細爲 2px、樣式爲實心的、顏色爲紅色的邊框

border:2px solid red;

        ---它是下列代碼的縮寫

border-width:2px;

border-style:solid;

border-color:red;

注意:

1、border-style(邊框樣式)常見樣式有:

dashed(虛線)| dotted(點線)| solid(實線)。

2、border-color(邊框顏色)中的顏色可設置爲十六進制顏色,如:

border-color:#888;//前面的井號不要忘掉。

3、border-width(邊框寬度)中的寬度也可以設置爲:

thin | medium | thick(但不是很常用),最常還是用象素(px)。

· 爲標籤單獨設置邊框

 border-bottom:1px solid red;(下邊框)

border-top:1px solid red;(上邊框)

border-right:1px solid red; (右邊框)

border-left:1px solid red;(左邊框)

·盒模型--寬度、高度

        css內定義的寬(width)和高(height),指的是填充以裏的內容範圍。因此一個元素實際寬度(盒子的寬度)=左邊界+左邊框+左填充+內容寬度+右填充+右邊框+右邊界。(高度同理)

· 盒模型---填充(內邊距)

 

    元素內容與邊框之間是可以設置距離的,稱之爲“填充”。填充也可分爲上、右、下、左(順時針)。

padding:20px 10px 15px 30px;(上、右、下、左)

也可以分開寫:

   padding-top:20px;

    padding-right:10px;

   padding-bottom:15px;

    padding-left:30px;

如果上、右、下、左的填充都爲10px;可以這麼寫

padding:10px;

如果上下填充一樣爲10px,左右一樣爲20px,可以這麼寫:

padding:10px 20px;(上下、左右)

如果左和右的值相同爲20px,如下面代碼:

margin:10px 20px 30px 20px;

可縮寫爲:

margin:10px 20px 30px;

 

·  盒模型---邊界(外邊距)

        元素與其它元素之間的距離可以使用邊界(margin)來設置。邊界也是可分爲上、右、下、左。如:

margin:20px 10px 15px 30px;

        也可以分開寫:

    margin-top:20px;

    margin-right:10px;

    margin-bottom:15px;

    margin-left:30px;

如果上右下左的邊界都爲10px;可以這麼寫:

margin:10px;

如果上下邊界一樣爲10px,左右一樣爲20px,可以這麼寫:

margin:10px 20px;

總結一下:padding和margin的區別,padding在邊框裏,margin在邊框外。

· CSS包含3種基本的佈局模型,用英文概括爲:Flow、Layer 和 Float。

在網頁中,元素有三種佈局模型:

1、流動模型(Flow)

2、浮動模型 (Float)

3、層模型(Layer

· 流動模型

     流動(Flow)是默認的網頁佈局模式。也就是說網頁在默認狀態下的 HTML 網頁元素都是根據流動模型來分佈網頁內容的。

流動佈局模型具有2個比較典型的特徵

1、塊狀元素都會在所處的包含元素內自上而下按順序垂直延伸分佈,因爲在默認狀態下,塊狀元素的寬度都爲100%。實際上,塊狀元素都會以行的形式佔據位置。

2、在流動模型下,內聯元素都會在所處的包含元素內從左到右水平分佈顯示。(內聯元素可不像塊狀元素這麼霸道獨佔一行)

· 浮動模型

設置浮動模型可以實現兩個塊元素並排顯示

float:left;    ---左浮動

float:right; ---右浮動 

任何元素在默認情況下是不能浮動的,但可以用 CSS 定義爲浮動,如 div、p、table、img 等元素都可以被定義爲浮動。

 

· 層模型

        如何讓html元素在網頁中精確定位,就像圖像軟件PhotoShop中的圖層一樣可以對每個圖層能夠精確定位操作。CSS定義了一組定位(positioning)屬性來支持層佈局模型。

層模型有三種形式:

1、絕對定位(position: absolute)

2、相對定位(position: relative)

3、固定定位(position: fixed)

· 層模型----絕對定位

position:absolute;(表示絕對定位)

        如果想爲元素設置層模型中的絕對定位,需要設置position:absolute(表示絕對定位),這條語句的作用將元素從文檔流中拖出來,然後使用left、right、top、bottom屬性相對於其最接近的一個具有定位屬性的父包含塊進行絕對定位。如果不存在這樣的包含塊,則相對於body元素,即相對於瀏覽器窗口。

· 層模型----相對定位

position:relative;(表示相對定位)

        如果想爲元素設置層模型中的相對定位,需要設置position:relative(表示相對定位),它通過left、right、top、bottom屬性確定元素在正常文檔流中的偏移位置。相對定位完成的過程是首先按static(float)方式生成一個元素(並且元素像層一樣浮動了起來),然後相對於以前的位置移動,移動的方向和幅度由left、right、top、bottom屬性確定,偏移前的位置保留不動。

· 層模型----固定定位

position:fixed;(表示固定定位)

        與absolute定位類型類似,但它的相對移動的座標是視圖(屏幕內的網頁窗口)本身。由於視圖本身是固定的,它不會隨瀏覽器窗口的滾動條滾動而變化,除非你在屏幕中移動瀏覽器窗口的屏幕位置,或改變瀏覽器窗口的顯示大小,因此固定定位的元素會始終位於瀏覽器窗口內視圖的某個位置,不會受文檔流動影響,這與background-attachment:fixed;屬性功能相同。以下代碼可以實現相對於瀏覽器視圖向右移動100px,向下移動50px。並且拖動滾動條時位置固定不變。

· Relative與Absolute組合使用

必須遵守下面規範:

1、參照定位的元素必須是相對定位元素的前輩元素:

<div id="box1"><!--參照定位的元素-->

     <div id="box2">相對參照元素進行定位</div><!--相對定位元素-->

</div>

從上面代碼可以看出box1是box2的父元素(父元素當然也是前輩元素了)。

2、參照定位的元素必須加入position:relative;

#box1{

     width:200px;

     height:200px;

     position:relative;        

}

3、定位元素加入position:absolute,便可以使用top、bottom、left、right來進行偏移定位了。

#box2{

     position:absolute;

     top:20px;

     left:30px;         

}

這樣box2就可以相對於父元素box1定位了(這裏注意參照物就可以不是瀏覽器了,而可以自由設置了)。

 

· 長度單位

    目前比較常用到px(像素)em% 百分比,要注意其實這三種單位都是相對單位。

· 水平居中設置-行內元素(行內元素進行水平居中)

        如果被設置元素爲文本、圖片等行內元素時,水平居中是通過給父元素設置 text-align:center 來實現的。(父元素和子元素:如下面的html代碼中,div是“我想要在父容器中水平居中顯示”這個文本的父元素。反之這個文本是div的子元素 )

如下代碼:

Html代碼:

<body>

   <div class="txtCenter">我想要在父容器中水平居中顯示。</div>

</body>

css代碼:

<style>

   .txtCenter{

     text-align:center;

   }

</style>

· 水平居中設置-定寬塊狀元素

    當被設置元素爲 塊狀元素 時用 text-align:center 就不起作用了,

    這時也分兩種情況:定寬塊狀元素和不定寬塊狀元素。

· 定寬塊狀元素。(定寬塊狀元素:塊狀元素的寬度width爲固定值。)

    滿足定寬和塊狀兩個條件的元素是可以通過設置“左右margin”值爲“auto”來實現居中的。我們來看個例子就是設置 div 這個塊狀元素水平居中:

html代碼:

<body>

   <div>我是定寬塊狀元素,哈哈,我要水平居中顯示。</div>

</body>

css代碼:

<style>

div{

     border:1px solid red;/*爲了顯示居中效果明顯爲 div 設置了邊框*/

     width:200px;/*定寬*/

     margin:20px auto;/* margin-left 與 margin-right 設置爲 auto */

}

</style>

        也可以寫成:

margin-left:auto;

margin-right:auto;

注意:元素的“上下 margin” 是可以隨意設置的。

· 水平居中總結-不定寬塊狀元素方法(一)

        爲“不定寬度的塊狀元素”設置居中,比如網頁上的分頁導航,因爲分頁的數量是不確定的,所以我們不能通過設置寬度來限制它的彈性。(不定寬塊狀元素:塊狀元素的寬度width不固定。)

不定寬度的塊狀元素有三種方法居中(這三種方法目前使用的都很多):

1、加入 table 標籤

A、爲需要設置的居中的元素外面加入一個 table 標籤 ( 包括 <tbody>、<tr>、<td> )。

B、爲這個 table 設置“左右 margin 居中”(這個和定寬塊狀元素的方法一樣)。

舉例如下:

html代碼:

<div>

  <table>

  <tbody>

    <tr><td>

    <ul>

         <li>我是第一行文本</li>

        <li>我是第二行文本</li>

        <li>我是第三行文本</li>

    </ul>

     </td></tr>

  </tbody>

  </table>

</div>

css代碼:

<style>table{    

border:1px solid;

     margin:0 auto;

}

</style>

2、設置 display: inline 方法:與第一種類似,顯示類型設爲 行內元素,進行不定寬元素的屬性設置

改變塊級元素的 display 爲 inline 類型(設置爲 行內元素 顯示),然後使用 text-align:center 來實現居中效果。如下例子:

html代碼:

<body>

<div class="container">

     <ul>

         <li><a href="#">1</a></li>

         <li><a href="#">2</a></li>

         <li><a href="#">3</a></li>

     </ul>

</div>

</body>

css代碼:

<style>

.container{

     text-align:center;

}/* margin:0;padding:0(消除文本與div邊框之間的間隙)*/

.container ul{

     list-style:none;

     margin:0;

     padding:0;

     display:inline;

}/* margin-right:8px(設置li文本之間的間隔)*/

.container li{

     margin-right:8px;

     display:inline;

}

</style>

        這種方法相比第一種方法的優勢是不用增加無語義標籤,但也存在着一些問題:它將塊狀元素的 display 類型改爲 inline,變成了行內元素,所以少了一些功能,比如設定長度值。

3、設置 position:relative 和 left:50%:利用 相對定位 的方式,將元素向左偏移 50% ,即達到居中的目的

通過給父元素設置 float,然後給父元素設置 position:relative 和 left:50%,子元素設置 position:relative 和 left: -50% 來實現水平居中。

我們可以這樣理解:假想ul層的父層(即下面例子中的div層)中間有條平分線將ul層的父層(div層)平均分爲兩份,ul層的css代碼是將ul層的最左端與ul層的父層(div層)的平分線對齊;而li層的css代碼則是將li層的平分線與ul層的最左端(也是div層的平分線)對齊,從而實現li層的居中。

代碼如下:

<body>

<div class="container">

     <ul>

         <li><a href="#">1</a></li>

         <li><a href="#">2</a></li>

         <li><a href="#">3</a></li>

     </ul>

</div>

</body>

css代碼:

<style>

.container{

     float:left;

     position:relative;

     left:50%

}

.container ul{

     list-style:none;

      margin:0;

     padding:0;

position:relative;

     left:-50%;

}

.container li{

float:left;

display:inline

;margin-right:8px;

}

</style>

· 垂直居中-父元素高度確定的單行文本

    分兩種情況:父元素高度確定的單行文本,以及父元素高度確定的多行文本。

第一種:父元素高度確定的單行文本,通過設置父元素的 height 和 line-height 高度一致來實現的

(height: 該元素的高度,line-height: 顧名思義,行高(行間距),指在文本中,行與行之間的 基線間的距離 )。

line-height  font-size 的計算值之差,在 CSS 中成爲“行間距”。分爲兩半,分別加到一個文本行內容的頂部和底部。

這種文字行高與塊高一致帶來了一個弊端:當文字內容的長度大於塊的寬時,就有內容脫離了塊。

如下代碼:

<div class="container">

    hi,imooc!

</div>

css代碼:

<style>

.container{

    height:100px;

    line-height:100px;

    background:#999;

}

</style> 

· 垂直居中-父元素高度確定的多行文本

父元素高度確定的多行文本、圖片等的豎直居中的方法有兩種:

方法一:使用插入 table  (包括tbody、tr、td)標籤,同時設置 vertical-align:middle。

css 中有一個用於豎直居中的屬性 vertical-align,在父元素設置此樣式時,會對inline-block類型的子元素都有用。下面看一下例子:

html代碼:

<body><table><tbody><tr><td class="wrap">

<div>

    <p>看我是否可以居中。</p>

</div></td></tr></tbody></table>

</body>

css代碼:

table td{height:500px;background:#ccc}

        因爲 td 標籤默認情況下就默認設置了 vertical-align 爲 middle,所以我們不需要顯式地設置了。

方法二:(僅供參考)在 chrome、firefox 及 IE8 以上的瀏覽器下可以設置塊級元素的 display 爲 table-cell(設置爲表格單元顯示),激活 vertical-align 屬性,但注意 IE6、7 並不支持這個樣式, 兼容性比較差。

html代碼:

<div class="container">

    <div>

        <p>看我是否可以居中。</p>

        <p>看我是否可以居中。</p>

        <p>看我是否可以居中。</p>

    </div>

</div>

css代碼:

<style>

.container{

    height:300px;

    background:#ccc;    display:table-cell;/*IE8以上及Chrome、Firefox*/

    vertical-align:middle;/*IE8以上及Chrome、Firefox*/

}

</style> 

· 隱性改變display類型

當爲元素(不論之前是什麼類型元素,display:none 除外)設置以下 2 個句之一:

  1. position : absolute 

  2. float : left 或 float:right 

簡單來說,只要html代碼中出現以上兩句之一,元素的display顯示類型就會自動變爲以 display:inline-block(塊狀元素)的方式顯示,當然就可以設置元素的 width 和 height 了,且默認寬度不佔滿父元素。

如下面的代碼,小夥伴們都知道 a 標籤是 行內元素 ,所以設置它的 width  沒有效果的,但是設置爲 position:absolute 以後,就可以了。

<div class="container">

    <a href="#" title="">進入課程請單擊這裏</a>

</div>

css代碼

<style>

.container a{

    position:absolute;

    width:200px;

    background:#ccc;

}

</style>

 

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