データベースから通知を取得して表示する以下のプログラムを作成しました。div
中をdiv.note
縦中央に表示するという状況でした。
試しvertical-align: middle
てみましたがvertical-align: center
、どちらも失敗しました。それらはテーブルセル用であることがわかりました。というわけでこれを選びました。
<?php
include("../common/config.php");
$query = "SELECT content FROM st_notifications";
$result = mysqli_query($dbc, $query) or die(mysqli_error($dbc));
while($row = mysqli_fetch_row($result))
{
echo "<div class='note'><div style='word-wrap: break-word;'>".$row[0]."</div></div>";
}
?>
<script>
$(function () {
$(".note").each(function () {
var note = $(this);
var diff = 100 - ($("div", note).outerHeight() / 2);
$("div", note).css({ 'margin-top': diff >= 0 ? diff : 0 });
});
});
</script>
出力はこのようなものでした。
のcss.note
は次のとおりです。
.note {
height: 200px;
width: 500px;
margin: 25px auto 0px auto;
background-color: #fff;
padding: 10px;
vertical-align: baseline;
background-image: url(../images/notebg.png);
background-size: 100% 100%;
}
Chrome デバッガーの出力は次のとおりです。
100px
両方のマージンが相対的に割り当てられているのではなく、両方のマージンが割り当てられていることがわかります。
私はこれを読みました。しかし、それを私の問題に関連付ける方法がわからない
そして、ここでの解決策は信じられないほど長いようです。
誰かが私が間違っている場所を教えてもらえますか? 前もって感謝します。
PS:要素を直接呼び出してjQueryを試し、 each() 関数を使用しても同じ結果が得られました。また、JavaScript または PHP に関する Chrome のデバッグ エラーはありません。