2009-08-29 76 views
12

實際上在當前視圖的中心,高於所有其他對象。 跨瀏覽器,而無需第三方插件等如何將div放置在屏幕中央?

通過CSS或JavaScript

UPDATE:

我試圖用JavaScript的Sys.UI.DomElement.setLocation(),但這個定位對象不絕對位置,但相對於它的父母。
有絕對位置的功能嗎?

+0

要相對於瀏覽器窗口進行定位,請使用「固定」。 – ndp 2009-08-29 22:21:41

回答

22

爲了讓它在瀏覽器中居中,無論頁面滾動(這可能是你想要的),position:fixed會更可靠。修訂mike108代碼:

<style type="text/css"> 
.centered { 
    position:fixed; 
    z-index: 100; 
    top:50%; 
    left:50%; 
    margin:-100px 0 0 -100px; 
    width:200px; 
    height:200px; 
} 
</style> 

這裏假設你有你呈現一個固定大小的盒子。如果你沒有一個固定大小的盒子,你需要使用Javascript來測量窗口和div,並明確定位它(再次,固定可能是要走的路)。

不過要在所有瀏覽器上測試。可能有一些我們沒有想到的東西。

我實際上建議你看一下這樣做的Javascript插件之一,至少對於一個起點。即使你不想使用他們的代碼,他們也知道了。我認爲我用jqModal作爲出發點。

+2

但IE6無法識別位置:固定。 – Mike108 2009-08-31 11:16:55

+0

我知道您的評論已過時,但對於其他人的參考,因爲這是一個受歡迎的問題,IE6不應受支持;它鼓勵人們使用它,支持它併爲其開發。 – cossacksman 2016-03-23 16:05:21

+0

我想補充說的是,雖然這種技術很好,但如果您只針對最新的瀏覽器,請查看flexbox。這隻需三行即可完成,不需要知道居中元素的寬度或高度。 – ndp 2016-03-28 00:14:23

2

它必須指定一個寬度(即width:500px;),然後margin:auto;應該這樣做。

+0

不在Internet Explorer中:( – Thinker 2009-08-29 18:08:52

8
<style type="text/css"> 
.Div1 { 
position:absolute; 
top:50%; 
left:50%; 
margin:-100px 0 0 -100px; 
width:200px; 
height:200px; 
border:1px solid #9999FF; 
} 
</style> 


<div class="Div1"> 
</div> 
+0

設置z-index將div放在所有其他對象之上 – Mike108 2009-08-29 16:16:07

+0

它是水平中心和垂直中心 – Mike108 2009-08-29 16:24:15

+0

我是否根據寬度和高度設置邊距? – dani 2009-08-29 17:04:38

0

如果你想要的東西,垂直和水平居中,試試這個...

#shell{ 
width:100%; 
height:100% 
position:absolute; 
z-index:100; 
background: rgba(255,255,255,.8); 
display:table; 
} 

#inner{ 
margin:0 auto; 
display:table-cell; 
vertically-align:middle; 
width: /* input width here */ 
} 


    #overlay_container{ 
    width: /* input width here again */ 
    height: /* input height here */ 
    additional-styles: /* self explanatory */ 
    } 
1

我使用的JS代碼塊;對於高度和寬度方向中心爲兩個高度中心兩個寬度中心僅

setToCenterOfParent($('#myDiv'), document.body, true, false); 

setToCenterOfParent($('#myDiv'), document.body, false, true); 

//呼叫功能

setToCenterOfParent($('#myDiv'), document.body, false, false); 

//呼叫功能

//呼叫功能

//函數定義

function setToCenterOfParent(element, parent, ignoreWidth, ignoreHeight){ 
     parentWidth = $(parent).width(); 
     parentHeight = $(parent).height(); 
     elementWidth = $(element).width(); 
     elementHeight = $(element).height(); 
     if(!ignoreWidth) 
      $(element).css('left', parentWidth/2 - elementWidth/2); 
     if(!ignoreHeight) 
      $(element).css('top', parentHeight/2 - elementHeight/2); 
    } 
+1

請在日後澄清,這是JQuery,而不是JS。原來的海報確實沒有說第三方的要求。 – 2014-01-04 11:39:30

0

請檢查此解決方案。沒有必要定義div框的寬度或高度。它將始終在屏幕的中間/中間。我希望我的解決方案對每個人都有用。

<style type="text/css"> 

    .mask{ 
    position:fixed; 
    z-index:100; 
    width:100%; 
    height:100%; 
    text-align: center; 
    color: white; 
    background-color: rgba(0,0,0,0.75); 
    overflow:hidden; 
    } 

    .contener{ 
    height:100%; 
    display:inline-table; 
    } 

    .contener .content{ 
    vertical-align: middle; 
    display:table-cell; 
    } 

    .contener .content p{ 
    padding:2em;  
    border:1px solid #3d3d3d; 
    background-color: #1d1d1d; 
    border-radius: 10px; 
    -moz-box-shadow: 0px 10px 10px black; 
    -webkit-box-shadow: 0px 10px 10px black; 
    box-shadow: 0px 10px 10px black; 
    } 

</style> 

<div class="mask"> 
    <div class="contener"> 
    <div class="content"> 
     <p>Test string</p> 
    </div> 
    </div> 
</div> 
相關問題