2011-03-24 196 views

回答

66

有許多方法:元件的固定措施

CSS

<div style="width:200px;height:100px;position:absolute;left:50%;top:50%; 
margin-left:-100px;margin-top:-50px;"> 
<!–content–> 
</div> 

  1. 中心的水平和垂直對齊。中心水平和文字

    CSS

    <div style="width:400px;height:200px;text-align:center;line-height:200px;"> 
    <!–content–> 
    </div> 
    

    3的垂直一條線。中心的元素的水平和垂直對齊,沒有具體措施

    CSS

    <div style="display:table;height:300px;text-align:center;"> 
    <div style="display:table-cell;vertical-align:middle;"> 
    <!–content–> 
    </div> 
    </div> 
    

    這裏更多:Horizontal and Vertical Alignment in CSS

+0

上午我錯了?我選擇的解決方案2,它似乎並沒有與Firefox的工作:) – nXqd 2013-04-03 11:59:57

4

This blog post介紹中心一個div兩種方法在水平和垂直。一個只使用CSS,並將與具有固定大小的div一起工作;另一個使用jQuery,並將預先爲您不知道大小的div工作。

我複製從博客帖子的演示這裏的CSS和jQuery的例子:

CSS

假設你有一個類.classname的DIV,下面的CSS應該工作。

left:50%; top:50%;將div的左上角設置爲屏幕中心; margin:-75px 0 0 -135px;將其移動到左側,並分別向上移動固定大小div的寬度和高度的一半。

.className{ 
    width:270px; 
    height:150px; 
    position:absolute; 
    left:50%; 
    top:50%; 
    margin:-75px 0 0 -135px; 
} 

jQuery的

$(document).ready(function(){ 
    $(window).resize(function(){ 
     $('.className').css({ 
      position:'absolute', 
      left: ($(window).width() - $('.className').outerWidth())/2, 
      top: ($(window).height() - $('.className').outerHeight())/2 
     }); 
    }); 
    // To initially run the function: 
    $(window).resize(); 
}); 

這裏有一個demo of the techniques in practice

+1

如果OP不需要使用jQuery? – 2011-03-24 15:25:27

+0

有一個CSS示例,就在jQuery示例之上。如果OP不想使用jQuery,那麼jQuery示例也可以修改爲直接使用javascript,並且需要將大小未知的div放在中間。 – Greg 2011-03-24 15:26:02

1

這並不像人們所期望的那樣容易 - 如果你知道容器的高度,你只能做垂直對齊。如果是這種情況,你可以用絕對定位來完成。

概念是將頂部/左側位置設置爲50%,然後使用負邊距(設置爲高度/寬度的一半)將容器拉回到居中位置。

例子:http://jsbin.com/ipawe/edit

基本CSS:

#mydiv { 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    height: 400px; 
    width: 700px; 
    margin-top: -200px; /* -(1/2 height) */ 
    margin-left: -350px; /* -(1/2 width) */ 
    } 
+0

當然,如果您不知道容器的高度,則可以始終使用JavaScript來計算高度,然後使用JS設置邊距。 – RussellUresti 2011-03-24 15:20:00

1

現在有一個更好的解決方案:Vertical align anything with just 3 lines of CSS

+0

這種技術將垂直居中放置在元素內部的文本,但是如果您希望主要元素垂直和水平居中關於視口。 – JohnnyBizzle 2017-10-11 15:37:33

+0

請參閱:https://stackoverflow.com/a/47260122/7186739 – Super 2018-02-13 09:38:56