CSS里的各種水平垂直居中基礎寫法心得總結

介紹一下行內元素和塊級元素,這個很重要,因為有的屬性只能用于塊元素,而有的正好相反,在一定的情況下,它們也可以相互轉換,比如用display來進行設置。

常用的內聯元素有
a - 錨點
b - 粗體(不推薦)
br - 換行
em - 強調
font - 字體設定(不推薦)
i - 斜體
img - 圖片
input - 輸入框
label - 表格標簽
select - 項目選擇
small - 小字體文本
span - 常用內聯容器,定義文本內區塊
strike - 中劃線
strong - 粗體強調
行內元素(又叫內聯元素inline element):
①不占據一整行,隨內容而定,有以下特點:
②不可以設置寬高,也不可以設置行高,其寬度隨著內容增加,高度隨字體大小而改變。
③內聯元素可以設置外邊界,但是外邊界不對上下起作用,只能對左右起作用。
④也可以設置內邊界,但是內邊界在ie6中不對上下起作用,只能對左右起作用。

常用的塊級元素有
div -最常用的塊級元素
dl - 和dt dd搭配使用的塊級元素
form - 交互表單
h1 - 大標題
hr - 水平分隔線
ol - 排序表單
p - 段落
ul - 非排序列表

塊級元素block element特點:
①總是在新行上開始,占據一整行;
②高度,行高以及外邊距和內邊距都可控制;
③寬帶始終是與瀏覽器寬度一樣,與內容無關;
④它可以容納內聯元素和其他塊元素。

互相轉換:使用display設置可以使得行內元素擁有塊級元素的特性,反之也可以。
如: <p style="display:inline; text-align:center">我是被設置了內聯的塊元素p,我現在的表現形式和內聯元素一樣啦</p>
<span style="display:block; text-align:center">我是被設置了塊級元素的span,我現在可以獨占一行并且可以設置寬高</span>
display: table-cell ,能把元素當作表格單元來顯示,這個非常實用,顯示效果也很好,只可惜某些瀏覽器不夠兼容。要注意,和一個合法的<td>元素必須在<table>里一樣, display: table-cell 元素必須作為 display: table 的元素的子元素出現。

現在開始說一下簡單的幾種基礎的居中方式
1.1. 塊中文字水平居中:text-align 用于塊級元素,作用在使用它的塊元素中的文字或者圖片上。使得它們在水平方向上居中。
這個屬性只能作用于塊元素(或者被CSS控制為塊元素的內聯元素,但是被控制為內聯元素的塊元素是不行的)。一句話來說,就是要擁有塊元素的特點的那些元素。這個很好理解,居中,肯定是行居中,如果使用它的元素本身不擁有完整的在寬度上的獨立空間,它當然沒有能力讓它內部的文字或者圖片居中。(難道要占用別人的地盤里居中,豈不混亂啦)
例子:
<p style="text-align:center">我是正常p,我設置了居中</p> <span style="display:block; text-align:center">我其實是一個行內元素span哦,我設置了居中,可以居中并且獨占一行</span> <p style="display:inline; text-align:center">能不能再同一行,我是被inline了的p,我設置了居中可是不能居中!</p>
父元素的這個屬性對它下面的子元素也起作用,比如一個div設置了text-align居中,則它內部的文字可以居中,它的子div內部的文字也可以居中。但是子元素中文字的居中,是在子div中居中,而不是對于父div居中。也就是,它里面所有的文字,都會相對于最靠近自己的一層div來實現居中。所以,這個屬性不能用于div在父div中的整體居中。(不僅僅是div,所有的表現為塊元素的元素)。

下面的這段代碼,外面一個大的藍色的div,里面一個小的紅色的div。外部的div設置了水平居中,按說里面的圖片肯定會居中(運行時確實顯示居中), 而內部的div只設置了vertical-align,垂直居中(先不管它)。可是因為它父層的text-align對它也有影響,所以運行時,里面的文字會相對于內部div而居中(注意!不是相對于最外面的div)

代碼如下:
<div style="width:500px; height:200px; text-align:center">   
<img src="dog/134906m121hqwumyw3uudc.jpg" width="96" height="80" />  
<div style="width:100px; height:50px; display: table-cell;vertical-align:middle">啦啦啦</div>  
</div>

Paste_Image.png

(1)]這個是塊元素對內處理的一個屬性,不能把這個塊自己在它的父容器中居中,若要實現塊在父元素中的居中,可以使用:
2 2. 塊元素自身水平居中(確定設置了寬度的塊):margin。這個肯定是接觸CSS一開始就知道的了。
一般情況下,可以設置margin:0 auto;這會使這個塊級元素在它的父級元素中居中,上下左右都會居中。
如果只要水平居中的話,就設置margin-left:auto;margin-right:auto;
3 3. 塊元素自身水平居中(不確定寬度的塊):   
在其他的一些文章中,看到有不少方法來介紹不確定寬度的塊的居中的。   
其實簡單點說,不需要這么麻煩。我們可以這樣來理解,沒有明確設定寬度的block,根據塊級元素的性質,它默認是獨占一行的,所以這個時候block本身就是瀏覽器窗口的寬度,就不必要來設置水平居中了。
  
若是此時對塊中的內容進行居中的話:   
如果塊元素的子元素也為塊元素,就對子元素使用margin auto一類的方式就好啦;   
如果塊級元素的子元素為行內元素,就用我們一開始介紹的text-align也就可以解決;   
對于子元素為塊元素的,也可以用display設置為inline然后再用text-align。 (這些在本文其他地方也都說過了)
4 4. vertical-align用于行內元素中的垂直居中
vertical-align,這個可以用的很復雜。看了一些文章和例子,自己也有點小混亂,只說一下最簡單的用法:   
這個屬性用于   
1、內聯元素(以及被轉化為內聯元素的塊元素)   
2 、display設置為table-cell的元素,   
在 firefox 和 ie8 下,可以設置塊級元素的 display 值為 table-cell,來激活 vertical-align 屬性,顯示效果和就和表格中的 valign="center" 一樣了。但 ie6,7 并不支持。   
3、<td><tr>這樣的元素   
這樣的寫法:vertical-align:middle;就可以設置文字或者圖片的垂直居中。只要具有行內元素的特性的元素使用這個屬性,對它的子元素中的文字和圖片也是起作用的。但是作用效果為使得文字或者圖片相對于緊靠著它們的父元素來進行居中。這個和text-align上面說過的部分是類似的。
5 5. 塊級元素中的文字圖片垂直居中(針對塊的高度確定的,這個是從另一個博客上看到的,真的很實用哦,如果塊內只有這些文字的話)
文字在層(塊級元素)中垂直居中vertical-align 屬性是做不到的.我們這里有個比較巧妙的方法就是:設置height的高度與line-height的高度相同!

代碼如下:
<div style="line-height:500px;height:500;"></div>

6 6.##塊級元素中的文字圖片垂直居中(塊的高度不確定的)   
在塊的高度不確定的情況下,其實它的高度就是取決于里面內容的高度。如果內部只有文字或者圖片的話,那就自然垂直居中了,其實就不必特意要設置。
如果非要設置什么的話,比如希望塊大一些,文字在塊中垂直居中好看一點,可以設置內邊距,如padding-top:20px;padding-bottom:20px;   
當然,如果上下內邊距設置的不一樣,就自然不居中了。

7 7. ####塊級元素自身的垂直居中  
設置塊級元素自身在父元素中的垂直居中,可以參照塊級元素的水平居中的方法(上面說過),設置外邊距即可。如果不想設置水平居中,只要設置上下外邊距為auto就好。
也可以采用vertical-align:middle;的方式,但是前提是把display設置為table-cell。這樣的話要注意瀏覽器兼容性問題。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,024評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,285評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,548評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,328評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,878評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,098評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,616評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,554評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,725評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,971評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,361評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,613評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,339評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,695評論 2 370

推薦閱讀更多精彩內容

  • ?這里涉及到行內元素和塊級元素。 行內元素和塊級元素可以相互轉換,比如用display來進行設置。 行內元素(又叫...
    憶飛閱讀 590評論 0 0
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,774評論 1 92
  • CSS格式化排版 1、字體 我們可以使用css樣式為網頁中的文字設置字體、字號、顏色等樣式屬性。下面我們來看一個例...
    張文靖同學閱讀 1,297評論 0 3
  • 收聽音頻,戳鏈接,舊號itclan已暫停使用,歡迎關注微信itclanCoder公眾號可收聽更多音頻 前言 關于網...
    itclanCoder閱讀 8,196評論 3 30
  • 本文主要是起筆記的作用,內容來自慕課網. 認識CSS樣式 CSS全稱為“層疊樣式表 (Cascading Styl...
    0o凍僵的企鵝o0閱讀 2,656評論 0 30