2011-12-25 48 views
3

Here是我設置的jsFiddle。如何從父級中心垂直偏移子元素?

父元素和子元素的高度是不確定的(意味着它會在之後改變)並且子元素的位置必須是絕對的。

如何將子元素垂直偏移距父元素中心五個像素?

HTML:

<div class="parent"> 
    <div class="child"></div> 
</div> 

CSS:

.parent{ 
    position:relative; 
    margin: 10% auto; 
    background:lightgray; 
    height:50px;/*parent's height will change after*/ 
    width:200px; 
} 
.parent .child{ 
    position:absolute; /* needs to be absolutely position */ 
    top:0; 
    bottom:0; 
    margin:auto; 
    width:100%; 
    height:20px;/*child's height will change after*/ 
    background:darkgray; 
} 
+0

你能改一下你的問題嗎?你是什​​麼意思「偏移5px」?另外,你想使用JavaScript嗎? – 2011-12-25 11:28:14

+0

因爲孩子是家長的100%,所以不存在視覺差異。 – Purag 2011-12-25 11:29:16

+0

從哪裏偏移5px?最佳?底部?雙方?根據你的例子,子元素與中間對齊,因爲你需要它... – Yaniro 2011-12-25 11:30:07

回答

3

偏移5px的地方?

像這樣---->Updated Fiddle

像這樣---->Updated Fiddle

+0

對不起,我的不清楚的表達,我的意思是偏離中間的垂直方向。 – Defims 2011-12-25 11:41:03

+0

在這種情況下...更新小提琴 - >(http://jsfiddle.net/zS7yK/5/) – Scott 2011-12-25 11:42:59

+0

它工作正常,當孩子的身高不變,TX〜 – Defims 2011-12-25 16:37:58

3

如果我理解正確的話,那麼你要通過五個像素垂直偏移孩子。我不確定這是否意味着元素應該從父級中間向上或向下移動,但是here是向上移動的一個示例,here是用於移動它的示例。

這是我加入到孩子的CSS代碼將它移動起來:

top:50%; 
margin-top:-15px; 

同時刪除當前topbottom聲明的孩子。

我們從父母的頂部設置它50%,然後從它的居中頂部偏移量中減去它的一半高度。我們在該偏移量上添加(或減去)5個像素以進一步對其進行補償。

對於可變的高度,使用該CSS(此移動它向上五個像素):

top:-5px; 
bottom:0; 
margin:auto; 

Example

+0

哦,謝謝Purmou,但我失去了另一個先決條件是,孩子的身高也不確定。 – Defims 2011-12-25 11:44:19

+0

@Defims:查看我的答案編輯。 – Purag 2011-12-25 11:47:43

+0

如果孩子的身高也不確定,我不會得到孩子身高的一半,而孩子元素的頂部邊界的百分比值基於父母而不是孩子元素,所以我不知道如何獲得它與css〜 – Defims 2011-12-25 11:56:05

1

使用border-top
見我Fiddle這裏

  • 與頂部:0;底部:0;和margin:auto;子元素可以在父母子元素的高度「不確定」時對齊中間;

  • border-top:10px;可以使子元素偏移。

,也許你會解決你的問題

+0

哇〜這就是我尋找的tx〜 – Defims 2011-12-25 16:53:14