再谈垂直居中

问题描述

  • 一段html代码是这样
<main className="main">
    <h3 className="head">垂直居中</h3>
    <p className="p"><span>如何做到当然是非常难的</span></p>
    <div className="div">xxxxxxxx</div>
</main>
.main{
  margin: 0;
  line-height: 1;
  font-size: 16px;
  background-color: antiquewhite;
}

.head{
  vertical-align: middle;
  margin: 0;
  font-size: 30px;
  display: inline-block;
}

.p{
  height: 22px;
  vertical-align: middle;
  margin: 0;
  background-color:red;
  display: inline-block;
}


.div{
  vertical-align: middle;
  margin: 0;
  font-size:15px;
  display: inline-block;
}
image.png
  • 接着我希望他们都能是垂直居中的
  • 根据刚刚了解vertical-align想要让一个块元素中的所有inline-block,垂直居中,只要给块元素设置一个行高,借助vertical-align对inline-block有效的特点,直接给每个子元素设置vertical-align:middle
  • 但是却是这个样子的


    image.png
  • 为什么呢?

问题解答

  • Q1:为什么会出现如图效果?
  • A1:首先设置了父元素的line-height:2,并将所有的inline-block子元素都设置了vertical-align:middle。
    • vertical-align:middle:让元素的中垂点与 父元素的基线加1/2父元素中字母x的高度 对齐。很抽象,但是看起来所有的(inline-block)子元素的中垂点好像是在父元素的中线上

  • Q2:那么为什么红色背景的子元素会出现这种效果呢?
  • A2:因为vertical-align只对作用的inline或者inline-block元素有效,因此对其子元素span没有任何作用,其子元素span的vertical-align仍然是baseline

  • Q3:那么如何处理红色背景子元素中的字呢?
  • A3:首先先确定红色框中的子元素是span是一个inline元素,让这个inline元素垂直居中即可,因此首先需要给红框设置行高,
    • 如果想要红框中的字垂直居中,那么需要给红框设置行高,可以给红框设置行高和本身div高度一致,这样中线就大概在div中央了
    • 然后设置span vertical-align:middle

这篇只是谈如何解决我手头的垂直居中问题,再遇到垂直居中的难题,一定还会再好好研究

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,022评论 1 92
  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 8,313评论 3 30
  • 在页面布局中,居中在各种各样的场景中广泛被用到,也经常被新人提及。以前做过一些自己探索居中问题的demo,今天翻出...
    彬_仔阅读 364评论 0 6
  • 介绍一下行内元素和块级元素,这个很重要,因为有的属性只能用于块元素,而有的正好相反,在一定的情况下,它们也可以相互...
    吧啦啦小汤圆阅读 812评论 0 3
  • 本文主要是起笔记的作用,内容来自慕课网. 认识CSS样式 CSS全称为“层叠样式表 (Cascading Styl...
    0o冻僵的企鹅o0阅读 2,744评论 0 30

友情链接更多精彩内容