2014-05-16 69 views
0

::after僞元素應用float: right時,如何將由::after僞元素生成的內容垂直居中在父元素內部?垂直居中CSS ::內容後帶浮動,父DIV

我有以下CSS定義:

.label-dot::after, .label-dot-1::after { 
    content: ""; 
    border-radius: 50%; 
    display: inline-block; 
    float: right; 
    height: 10px; 
    width: 10px; } 

.label-dot-1::after { 
    background-color: #66c2a5; } 

...它適用於以下(測試用例)HTML:

<div style="width: 500px; background-color: red;"> 
    <div class="label-dot-1">Neato</div> 
</div> 

一個測試代碼的jsfiddle可以在這裏找到:http://jsfiddle.net/EvilClosetMonkey/jR9sV/

請注意,右側的綠色圓點對齊div的頂部以及右側。我怎樣才能讓點對齊div的垂直中心,就像文本是?

更新信息的附加

兩個部分:

  1. 我知道父divheight。當我發佈我的問題時,我忘了我做了。 :)
  2. 我不需要需要使用float,但我確實需要'點'對齊到右邊(每個評論以下)。

一個新的小提琴在這裏,與高度更新:http://jsfiddle.net/EvilClosetMonkey/jR9sV/2/

+0

難道僞必須有一個要求浮動..? –

+0

不,只要我仍然可以將「點」粘貼到右邊距(並且我不能假定父寬度)。 –

+0

@TJ,我只記得 - 我做**知道父'div'的高度,我只是不能認爲'寬度'。 –

回答

2

通過應用position:relative與已知的高度盛大父元素,我們屆時可到pseudo相對於其絕對的位置,如下:

#container { 
position:relative; 
height:20px; 
width: 500px; 
background-color: red; 
} 
.label-dot-1{ 

} 
.label-dot-1::after { 
content:""; 
position:absolute; 
right:0; 
top:5px; /* (20px - 10px)/2 */ 
border-radius: 50%; 
display: inline-block; 
height: 10px; 
width: 10px; 
background-color: #66c2a5; 
} 

Updated JSFiddle

更新

以下內容將pseudo相對於其未知高度的父對象相對齊。它部分使用垂直居中的absolute centering technique,然後依靠css3 calc()函數進行右對齊。

#container { 
width: 500px; 
background-color: red; 
} 
.label-dot-1{ 
position:relative; 
} 
.label-dot-1::after { 
content:""; 
position:absolute; 
top:0; 
right:0; 
bottom:0; 
left:0; 
margin:auto calc(100% - 10px); 
height: 10px; 
width: 10px; 
border-radius: 50%; 
background-color: #66c2a5; 
} 

JSFiddle Demo

+0

但他不知道什麼是父母的高度..它的變量可能是10但它可能是100 –

+0

@根據更新nol,他知道的父母的高度... –

+0

我其實知道僞元素的父母的高度,但不是容器(僞元素的「祖父母」,所以說)的容器。 'top'運行良好,但'calc'(剛剛瞭解它)真棒!現在我不必知道身高,可以重複使用該課程! –

1

簡單添加

position:absolute; top:50%; 

.label-dot-1::after,然後設置要被相對定位父

http://jsfiddle.net/FquzF/例如

+1

如果'top:50%'那麼那裏的元素將不會被垂直居中,除非它具有0px的高度,因爲在元素下面,您需要另外50%的空間來居中...... –

+0

et margin-top: - yy其中yy是子容器高度的一半以抵消該項目。 –