html - 为什么要给伪元素添加 block 级别?

标签 html css pseudo-element

从此页面上的代码:http://css-tricks.com/snippets/css/sticky-footer/

.page-wrap {
  min-height: 100%;
  /* equal to footer height */
  margin-bottom: -142px; 
}
.page-wrap:after {
  content: "";
  display: block;
}

谁能解释一下 .page-wrap:after block 在做什么?我理解 after 伪元素,但我不明白这里发生了什么。

最佳答案

查看何时编辑 Codepen 演示,并从设置其高度的行或其 display: block 属性中删除 .page-wrap:after 。然后点击“添加内容”。因为 .page-wrap 的 margin-bottom 为负值,所以它只会将页脚向下推 142 像素,太晚了,让文本溢出。 所以简而言之,它填充了负的底部边距...是的,您可以通过使用具有相对定位、z 索引等的简单 div 来执行相同的操作。实际测试它并添加 block 元素在 .page-wrap 之后,像这样也可以:

.fix {
  position: relative;
  display: block;
  z-index: -2;
  bottom: 0;
  height: 142px;
  width: 100%;
}

但是,既然 HTML5 和 CSS3 都存在,为什么不使用它呢。嘿,你不必创建一个新元素,只需从 CSS 中设置它即可。这太棒了!

:after 前缀的其他更多和更流行的用途(我在 WP 主题中看到了一些)包括使用它作为 ClearFix div 的替代品。查看这篇文章以进一步阅读:http://css-tricks.com/snippets/css/clear-fix/

你可能想知道为什么他首先设置负的底部边距;答案:因为他希望 .page-wrap {min-height: 100% } 在页面加载时不要将页脚推到折叠下方,如果内容不再进一步扩展的话。百分比高度可以消除任何这些技巧的需要,例如页脚高度 10%,换页最小高度 90%,但缺点是您无法控制确切的页脚高度...

关于html - 为什么要给伪元素添加 block 级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23399396/

相关文章:

javascript - DOMDocument -> 无法从 href 提取结果

html - Bootstrap - 3 列全响应全高介绍页面

javascript - JQuery 没有单选按钮检查问题

html - 如何在 CSS 中为 MVC 4 Razor 创建类层次结构?

css - 定位一个:before selector

css - float div 之间的水平线

html - 基础框架 : How can I get multiple links in a mobile drop-down to be horizontally aligned and not stacked?

html - 嵌套 <p> 和 <img>,如 '<p><img src=' '></p>'

css - IE8 和 MOzilla firefox 之间的跨浏览器兼容性问题

html - 使用 :not(:last-child):after pseudo elements for each row inside an unordered list