3

Javascript で div を垂直方向に中央揃えしようとしています。テキストが変化するため、高さを固定することはできません。

Jqueryなしでこれをやりたいです。

#box2 {

    width: 100%;
    height: 100%;
    position:relative;
    background-color: orange;

}
            #informationBox {

            padding: 0.5em;
            background-color: #fff;
            border-radius: 12pt;
            border: solid black 3pt;
            max-width: 683px;
            margin: 0 auto;
            text-align: center;
        }

Javascript:

var container = document.getElementById("#box2");
var inner = document.getElementById("#informationBox");
var inHeight = inner.offsetHeight;

container.style.height=(window.innerHeight);
container.style.width=window.innerWidth;

var conHeight=container.offsetHeight;

inner.style.marginTop=((conHeight-inHeight)/2);

どんな助けでも素晴らしいでしょう:)

http://jsfiddle.net/tmyie/EttZQ/

4

4 に答える 4

5

いくつか変更する必要があるだけです。まず、getElementByIdセレクタではなく ID 文字列のみを取ります。次に、スタイル宣言に「px」を追加する必要があります。

var container = document.getElementById("box2");
var inner = document.getElementById("informationBox");
var inHeight = inner.offsetHeight;
container.style.height = window.innerHeight;
container.style.width = window.innerWidth;
var conHeight = container.offsetHeight;

inner.style.marginTop = ((conHeight-inHeight)/2)+'px';

更新されたフィドルは次のとおりです: http://jsfiddle.net/EttZQ/1/

于 2013-06-18T21:23:52.513 に答える
4

line-height プロパティで js を使用します。

Javascript が少なく、正確なセンタリング。

box/info には、最小/最大幅/高さと % または px ... を指定できます。

ウィンドウに合わせてサイズも変更されます。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>center</title>
<style>
html,body{
 width:100%;
 height:100%;
 margin:0;
 padding:0;
}
#box{
 width:100%;
 height:100%;
 text-align:center;
}
#info{
 display:inline-block;
 margin:0;padding:0 16px;
 line-height:24px;
 border-radius: 12pt;
 border: solid black 3pt;
 text-align: center;
 vertical-align:middle;
 box-sizing: border-box;
}
</style>
<script>
var center=function(){
 var b=document.getElementById('box');
 b.style['line-height']=b.offsetHeight+'px';
}
window.onload=center;
window.onresize=center;
</script>
</head>
<body>
<div id="box"><div id="info">center me pls<br>test</div></div>
</body>
</html>
于 2013-06-18T21:43:48.487 に答える
1

1 つの単純な CSS ソリューション。

http://jsfiddle.net/antouank/EttZQ/2/

body {
    margin: 0;
}
#box2 {
    width: 100%;
    height: 100%;
    position:absolute;
    background-color: orange;
}
#informationBox {
    padding: 0.5em;
    background-color: #fff;
    border-radius: 12pt;
    border: solid black 3pt;
    max-width: 100px;
    margin: 0 auto;
    text-align: center;
    position: absolute;
    top: 50%;
    left: 50%;
}

要素の幅/高さを計算し、50% を中央に配置するために必要なものに変更するだけです。

于 2013-06-18T21:29:10.323 に答える
0

コンテナー pos を静的以外のものにします。ボックス : 絶対位置。top:50% ボックスの高さが変更された場合、ボックスのマージン上部を -1 * 高さ/2 に設定します。

于 2013-06-18T21:25:28.193 に答える