html - 垂直居中的元素在顶部留下空白空间

标签 html css css-position vertical-alignment

我用了this线程在我的网站页面上垂直居中元素。它可以工作,但在顶部留下很大的空白空间,我不明白为什么。

.wrappert {
  height: 100%;
  width: 100%;
  display: table;
}

.wrapper {
  height: 100%;
  vertical-align: middle;
  display: table-cell;
  text-align: center;
}

.cn-container {
  width: 60%;
  /* min-width: 600px; */
  max-width: 820px;
  margin: 10px auto 0 auto;
  text-align: left;
  position: relative;
}

.cn-slide{
	text-align: center;
	position: absolute;
	left: 0px;
	padding-top: 80px;
	margin: 0 5%;
	width: 90%; /* 738px fixed*/
	opacity: 0;
}

.cn-slide:target{
	opacity: 1;
	z-index: 1000;
}
<div class="wrappert">
  <div class="wrapper">
    <div class="cn-container">
      <div class="cn-slide" id="slide-main">Lorem ipsum dolor sit amet.</divv>
      <div class="cn-slide" id="slide-main">Nam dapibus euismod ex egestas dictum.</divv>
      <div class="cn-slide" id="slide-main">Interdum et malesuada fames ac ante ipsum primis in faucibus.</divv>
    </div>
  </div>
</div>

网址是http://www.glamparrucchieria.com

最佳答案

您错误地假设您的 .cn-slide 元素及其 position: absolute 将参与正常的布局流,扩展它们的容器高度并分配额外的如有必要,在顶部和底部留出空间。它们不会做那些事情——它们是绝对定位的,不会影响您的.cn-container 元素的大小。就好像它们根本不存在一样。

这就是为什么您会看到您所看到的——.cn-container 的高度为零,并且幻灯片只是在视觉上悬卡在它们静态放置时应该在的位置。如果您指定 lefttoprightbottom,您可以自由移动它们,具有最近的绝对或相对定位的祖先元素(或文档的一 Angular )作为枢轴。

如果您能想象的话,这有点像每张幻灯片都有一个视觉透明层,每张幻灯片都位于页面其余部分的前面。

您最安全的选择是通过从您的 .cn-slide 规则中删除 position: absolute 来放弃绝对定位,并应用 display: none对于那些需要从 View 中隐藏的“非事件”幻灯片,只显示一张带有 display:block 的“事件”幻灯片 (:target):

.cn-slide {
     display: none; /** 'disable' each slide */
     position: initial; /** or just make sure there is no absolute positioning, this is just to illustrate static positioning, if you don't have `position: absolute` applying for this selector, you don't need this rule. */
}
.cn-slide:target {
     display: block; /** enable the 'current' slide */ 
}

结合以上内容,您的页面应该看起来像您想要的那样。请记住,简单地说,绝对定位会在其他页面元素的前面或后面创建一个新层。阅读 "CSS basic box model"如果你想学习理论。

关于html - 垂直居中的元素在顶部留下空白空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43790823/

相关文章:

html - 如何使固定选取框居中?

html - 当我创建 CSS 条目时,class* 是什么意思?

css - 使用绝对和相对位置配置动态侧边栏

html - 子元素和兄弟元素中的 Z-index 问题

html - 使用位置 :fixed 时重置位置

html - 在 Bootstrap 4 面包屑中右对齐文本

CSS 背景图片 css/html

css - 如何找到合适的混合模式?

html - 将我的网站转移到 html5

javascript - 在 HTML 中预加载图像,有更现代的方法吗?