html - 居中的 div 在顶部被切断?

标签 html css

这是我正在处理的页面:http://en08-phx.stablehost.com/~news/test.html

这是我用来使 div 居中的代码:

div {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);  
  width: 70%;
  height: auto;
  padding: 20px;  
  background-color:rgba(255, 255, 255, 0.2);
  color: white;
  text-align: center;
  border-radius:5px;
  border:2px solid rgba(255, 255, 255, 0.5);
}

每当我减小浏览器的宽度或使用手机时,页面顶部开始被截断。

无论浏览器宽度大小如何,我都希望 div 居中。但是,如果浏览器的高度太小,我宁愿只在顶部/底部添加 10px 的边距,并确保显示所有文本。

我到底做错了什么?

最佳答案

这种定位技术(前 50% 减去 translateY -50%)的问题是它根据自己的高度对齐自己。当视口(viewport)将容器挤压得比视口(viewport)高时,它保持居中,顶部和底部被切断。如果您能够使用 flexbox,我推荐 flexbox ( http://caniuse.com/#search=flex )。

将您希望始终居中的容器包裹在另一个容器中,例如 centered-wrapper 并应用 flexbox 使其居中:

.centered-wrapper {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 100%;
}

最小高度在这里非常重要。如果您的 div 没有拉伸(stretch)到页面的高度,它将填充并居中它的 child 。如果是,那么它将继续扩展,避免您也遇到的情况。如果您的框相对于整个页面的高度是相对的,那么您还需要设置页面的高度才能使其正常工作:

html,
body {
  height: 100%;
}

您不需要对居中的 div 进行任何居中,只需视觉样式。

这是它的实际示例:https://jsfiddle.net/vfc9n7p2/

关于html - 居中的 div 在顶部被切断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37221125/

相关文章:

javascript - 网页宽度与屏幕宽度不匹配

html - 向右移动菜单项

javascript - 是否可以在外部浏览器中注入(inject) CSS?

css - flex box容器可以绝对定位吗

javascript - 站点内容扩展和收缩

javascript - 在 Chrome 71+ 上激活触摸事件

html - 为什么我只能内嵌这个元素的样式?在 styles.css 中设置它的样式不会做任何事情

html - 使用 CSS 背景属性将包含的图像垂直对齐到 Span 标签

html - 删除彼此下的 2 个 div 元素之间的 “whitespace”

jquery - 基于另一个 div 的 css 使用 jQuery 更改属性