html - 无法在内容垂直/水平居中的全高页面上保持响应行为

标签 html twitter-bootstrap css responsive-design

我正在构建一个全高网站,我需要第一部分具有垂直和水平居中的内容。不幸的是,有一张图像作为交易的一部分,当屏幕尺寸改变时,它无法缩放响应。我该如何处理这个问题,因为变换方法似乎从一开始就解决了居中挑战。在第一部分的顶部,我有一个标题,必须在解决方案中加以考虑。

fiddle :https://jsfiddle.net/yevr2tLm/1/

HTML

<section class="container-fluid">
  <header>This is a header</header>
  <div class="content__1">
    <img class="img-responsive" src="http://rack.2.mshcdn.com/media/ZgkyMDE1LzA5LzEzLzNjL2dvb2dsZXRodW1iLmIyNGE0LmpwZwpwCXRodW1iCTk1MHg1MzQjCmUJanBn/63126c72/af4/google-thumb.jpg" />
    <p>
      This is some awesome text
    </p>
  </div>
</section>

CSS

body,
html {
  height: 100%;
}

section {
  position: relative;
  min-height: 100%;
  min-height: 100vh;
}

.content__1 {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

header {
  top: 0;
  position: absolute;
  padding-top: 2em;
}

最佳答案

您可以使用 Flexbox 来做到这一点。如果你在容器元素上使用 flex-direction: column 现在你有两个 flex-items:header 和 content 一个在另一个下面。所以你现在可以做的是在内容上使用 flex: 1 这样它将占用 header 之后剩下的窗口高度,你会得到这样的东西

enter image description here

现在您需要在 content__1 元素中垂直和水平居中内容,如果您在 content__1 上使用 display: flex 也可以做到这一点然后你只需添加 align-items: centerjustify-content: center。为了保持 img 响应,您可以使用 width: 60%height: auto 之类的东西,但您可以根据图像大小进行调整。

enter image description here

* {
  box-sizing: border-box;
}
body,
html {
  margin: 0;
  padding: 0;
}
.container-fluid.flex,
.content__1 {
  display: flex;
  flex-direction: column;
}
.container-fluid.flex {
  height: 100vh;
}
.content__1 {
  align-items: center;
  justify-content: center;
  flex: 1;
}
header {
  background: black;
  padding: 15px;
  color: white;
  z-index: 1;
}
img {
  width: 60%;
  max-height: 70%;
  height: auto;
}
p {
  margin: 0;
}
<section class="container-fluid flex">
  <header>This is a header</header>
  <div class="content__1">
    <img class="img-responsive" src="http://rack.2.mshcdn.com/media/ZgkyMDE1LzA5LzEzLzNjL2dvb2dsZXRodW1iLmIyNGE0LmpwZwpwCXRodW1iCTk1MHg1MzQjCmUJanBn/63126c72/af4/google-thumb.jpg" />
    <p>This is some awesome text</p>
  </div>
</section>

您可以使用 CSS 表格 来做到这一点。假设 headerheight: 50px 现在你可以在内容元素上使用 height: calc(100vh - 50px)display: table 。现在你只需要将内容放在表格的中心,如果你将内容包装在另一个具有 display: table-cellvertical-align: middle 属性的 div 中,你就可以做到这一点

* {
  box-sizing: border-box;
}
body,
html {
  margin: 0;
  padding: 0;
}
.container-fluid.flex {
  height: 100vh;
}
header {
  background: black;
  height: 50px;
  line-height: 50px;
  color: white;
  z-index: 1;
}
.content__1 {
  display: table;
  height: calc(100vh - 50px);
  text-align: center;
  width: 80%;
  margin: 0 auto;
}
.inner {
  display: table-cell;
  vertical-align: middle;
}
img {
  width: 60%;
  max-height: 70%;
  height: auto;
}
p {
  margin: 0;
}
<section class="container-fluid flex">
  <header>This is a header</header>
  <div class="content__1">
    <div class="inner">
      <img class="img-responsive" src="http://rack.2.mshcdn.com/media/ZgkyMDE1LzA5LzEzLzNjL2dvb2dsZXRodW1iLmIyNGE0LmpwZwpwCXRodW1iCTk1MHg1MzQjCmUJanBn/63126c72/af4/google-thumb.jpg" />
      <p>This is some awesome text</p>
    </div>
  </div>
</section>

关于html - 无法在内容垂直/水平居中的全高页面上保持响应行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36259364/

相关文章:

javascript - 在 Angular 2 中使用 HTML5 主题

html - 切换的容器应该向上移动其他容器

html - 来自较低文件夹的图像链接不起作用

javascript - 创建一个 javascript slider ;幻灯片 Action 在第一张幻灯片上不起作用,但滑动 Action 在第二张幻灯片后起作用?

html - 如何将水平条转换为响应式?

html - 你如何覆盖 <DT> 背景颜色来模拟禁用?

html - Bootstrap网格系统中推/拉和偏移的作用

CSS 书写模式不适用于某些字符

html - 合并两行使其成为一行

javascript - TinyMCE:添加复杂格式