前言:怎麼說呢?我以前只知道margin:0 auto; 從來沒想過會這麼高深,自從學習了慕課網,我才明白了原來css居中是有很多學問的。
首先來說一下分類。
分類指的是對什麼樣的元素來進行居中,不同的元素對應不同的方法。
1.行內元素
2.定寬的 塊狀元素
定寬的,也就是加了width:100px;這種。
3.不定寬的 塊狀元素
不定寬的,也就是不加width:100px;這種。
好了,下面來介紹一下這三種的居中方法
那麼這樣的元素怎麼來進行居中呢?
引用自慕課網:定寬的,也就是加了width:100px;這種。如果被設定元素為文字、等行內元素時,水平居中是通過給父元素設定
text-align:center
來實現的。(父元素和子元素:如下面的html**中,div是「我想要在父容器中水平居中顯示」這個文字的父元素。反之這個文字是div的子元素 )如下**:html**:
我想要在父容器中水平居中顯示。css**:
那麼這樣的元素怎麼來進行居中呢?
以下引用自慕課網:總結,這裡就是我最愛的margin:o auto;,不同的是,0是可以改變成任何值的。當被設定元素為 塊狀元素 時用 text-align:center 就不起作用了,這時也分兩種情況:定寬塊狀元素和不定寬塊狀元素。
這一小節我們先來講一講定寬塊狀元素。(定寬塊狀元素:塊狀元素的寬度width為固定值。)
滿足定寬和塊狀兩個條件的元素是可以通過設定「左右margin」值為「auto」來實現居中的。我們來看個例子就是設定 div 這個塊狀元素水平居中:
html**:
我是定寬塊狀元素,哈哈,我要水平居中顯示。css**:
也可以寫成:
margin-left:auto;margin-right:auto;
注意:元素的「上下 margin」 是可以隨意設定的。
不定寬的,也就是不加width:100px;這種。
這塊的學問就比較多了!
有三種方法可以使用:
加入 table 標籤
設定 display: inline 方法:與第一種類似,顯示型別設為 行內元素,進行不定寬元素的屬性設定
設定 position:relative 和 left:50%:利用 相對定位 的方式,將元素向左偏移 50% ,即達到居中的目的
讓我們來乙個乙個學習!
a.table方法-鏈結
為什麼選擇方法一加入table標籤? 是利用table標籤的長度自適應性---即不定義其長度也不預設父元素body的長度(table其長度根據其內文字長度決定),因此可以看做乙個定寬度塊元素,然後再利用定寬度塊狀居中的margin的方法,使其水平居中。總結:也就是說,利用了table自適應長度而不盲目跟隨父親的特性,在需要居中的元素外面套乙個透明的table(tr,td都要),再利用定寬的方法,margin:0 auto;就可以輕鬆搞定了。第一步:為需要設定的居中的元素外面加入乙個 table 標籤 ( 包括 、、)。
第二步:為這個 table 設定「左右 margin 居中」(這個和定寬塊狀元素的方法一樣)。
舉例如下:
html**:
css**:
b.inline方法-鏈結
blockquote漂亮樣式
background: #d9e9ff;padding: 10px 15px 10px 15px;
margin: 1em 3em 1em 3em;
font-size:.8em;
border-style:dotted dotted dotted solid;
border-width:1px 1px 1px 5px;
border-color:#5bbcdd;
line-height:200%;
第二種方法:改變塊級元素的 display 為 inline 型別(設定為 行內元素 顯示),然後使用總結:其實還是用了行內元素的方法,繼續用text-align:center方式來實現居中。text-align:center
來實現居中效果。如下例子:html**:
css**:
這種方法相比第一種方法的優勢是不用增加無語義標籤,但也存在著一些問題:它將塊狀元素的 display 型別改為 inline,變成了行內元素,所以少了一些功能,比如設定長度值。
c.inline方法-鏈結
除了前兩節講到的插入table標籤,以及改變元素的display型別,可以使不定寬塊狀元素水平居中之外,本節介紹第3種實現這種效果的方法,設定浮動和相對定位來實現。總結: 其實這塊看了半天才明白。方法三:通過給父元素設定float,然後給父元素設定 position:relative
和left:50%,子元素設定position:relative 和left: -50%來實現水平居中。
我們可以這樣理解:假想ul層的父層(即下面例子中的div層)中間有條平分線將ul層的父層(div層)平均分為兩份,ul層的css**是將ul層的最左端與ul層的父層(div層)的平分線對齊;而li層的css**則是將li層的平分線與ul層的最左端(也是div層的平分線)對齊,從而實現li層的居中。
**如下:
css**:
需要了解的是position:relaive; left:50%;的意思:向左50%到底是多大呢?由於relative了,所以,是相對自己父元素的50%,也就是說,是父元素多寬,向左父元素寬度一半那麼長。
那麼居中的方法具體如下:
1. 將需要居中元素a的父元素b向右偏移瀏覽器的50%(瀏覽器是b元素的父元素,b設定了relative,那麼left:50%意思是向右偏移瀏覽器的50%那麼寬)
2. 現在a的父元素b的最左邊處在瀏覽器的最中間,那麼對應的a元素的左邊不做別的也在瀏覽器的最中間。這塊應該再向左偏移就能居中了。偏移多少,其實是a元素的寬度的一半。但對與這種ab寬度相同的呢,可以偏移父元素b的一半,同上用relative left:-50%向左偏移。
這裡我嘗試將a b寬度設定成不同的值,那麼就不成功了,a只偏移b寬度的一半那麼多。
第1期 聊聊css居中那點事
前言 居中是網頁布局中再常見不過的一種方式了,今天我們就來聊聊css居中的那點事。我們主要從這幾個方面來了解下居中 水平居中又分為 文字水平居中 實現文字的水平居中,是最為簡單的了,加上text align center 即可,看以下 文字水平居中 text center注意 父元素必須是塊級元素,...
有關String的那點事
1 string str1 abc system.out.println str1 abc 步驟 1 棧中開闢一塊空間存放引用str1 2 string池中開闢一塊空間,存放string常量 abc 3 引用str1指向池中string常量 abc 4 str1所指代的位址即常量 abc 所在位址,...
css居中那點事兒
在css中對元素進行水平居中是非常簡單的,然而使元素垂直居中就不是一件簡單的事情了,多年以來,垂直居中已經成為了css領域的聖杯,因為它是極其常見的需求,但是在實踐中卻不是一件簡單的事情。下面我會簡單介紹水平居中,並著重討論垂直居中。en pic.png 注意 對於某個塊元素的居中,不能在其父元素的...