javascript - 为什么我不能垂直对齐我的 p 标签?

标签 javascript html css

var window_height = window.screen.height;
var p_height = document.getElementsByTagName("p")[0].clientHeight;
document.getElementsByTagName("p")[0].style.marginTop = (window_height/2) - p_height/2 +  "px";
body {
  background-color: #F0F0F0;
  font-size: 83%;
}

#main {
  width:100%;
  text-align: center;
}

#main p {
  display: block;
  border: 1px red solid;
  margin:0 auto;
}
<div id="main">
    <p>This is my text.</p>
 </div>

我想要的是动态垂直对齐我的 p 标签。

所以我使用 JavaScript 获取我的 window 的高度和 <p>标记高度然后设置 margin-top我的标签到 (window_height/2) - p_height/2 + "px";

不过,好像没有工作属性。 谁能帮忙?

最佳答案

window.screen.height将为您提供用户屏幕的高度,而您需要浏览器视口(viewport)的高度。

var verticalAlignPTag = function() {
    var window_height = window.innerHeight;
    var p_height = document.getElementsByTagName("p")[0].clientHeight;
    document.getElementsByTagName("p")[0].style.marginTop = (window_height/2) - p_height/2 +  "px";
};
verticalAlignPTag();

//Optionally, add the same code to run when the window resizes.
window.onresize = verticalAlignPTag;
body {
  background-color: #F0F0F0;
  font-size: 83%;
}

#main {
  width:100%;
  text-align: center;
}

#main p {
  display: block;
  border: 1px red solid;
  margin:0 auto;
}
<div id="main">
    <p>This is my text.</p>
 </div>

您可以选择在 window.onresize 上运行相同的代码事件,以便如果用户更改浏览器高度你的 <p>将相应调整。

我放置了对齐 <p> 的代码标记到函数,以便可以轻松地将其绑定(bind)到 window.onresize事件。

关于javascript - 为什么我不能垂直对齐我的 p 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33413279/

相关文章:

javascript - 验证前端应用程序和后端 REST API

javascript - React JS 传递类作为变量

html - 链接背景是一行一行而不是纯色背景,修复了吗?

html - css-grid 2x2 或 2x3 布局,取决于元素的数量

css - Javafx、css、为分割 Pane 设置背景图片?

javascript - 在 Streamlit 上集成 js 脚本

javascript - Phonegap 是否在 3.5.0-0.20.10 版本中集成了 socket.io?

javascript - 为什么在此 html 代码中将 "javascript:"添加到 onchange 之前?

javascript - 展开/折叠菜单根本不起作用

javascript - 如何检查所有输入框不为空或不等于0?