美文网首页
css居中前言

css居中前言

作者: 张培_ | 来源:发表于2018-01-18 22:06 被阅读16次

垂直居中前言

问题描述

  • 一段html代码是这样
<main className="main">
    <h3 className="head">垂直居中</h3>
    <p className="p">如何做到当然是非常难的</p>
    <div className="div">hahahah</div>
</main>
.main{
  background-color: antiquewhite;
}

.head{
  font-size: 30px;
  display: inline-block;
}

.p{
  height:21px;
  background-color:red;
  display: inline-block;
}

.div{
  font-size:15px;
  display: inline-block;
}

这时候样式是这样的
我们希望所有的inline-block的元素都是垂直居中的


image.png
  • 按照以往使用的方法,第一个想到可以试着设置行高,然后使用vertical-align:middle

  • 因此我设置了

    line-height:43px //和左边垂直居中四个字高度一样
    vertical-align: middle
    background-color:red;
    display: inline-block;
    
image.png

发现变成了这个样子

  • 产生很多疑惑
    • line-height是什么高度
    • line-height应该设置成什么样子才能垂直居中
    • vertical-align:middle为什么不起作用了
      • 如果使用
      • 使用条件是什么
    • 如果不适用line-height + vertical-align:middle如何做到垂直居中?
    • 水平居中又是如何做到的? 又有什么要求条件呢?

如何做到水平居中

  • Q1:是不是只要使用text-align:center就可以使得元素居中?

  • A1:经过尝试发现不是这样的,只有针对行级元素才能成功:

    • 针对行内元素
      • 只要给他的父元素设置text-align:center这个行内元素就可以相对于父元素居中
        - 只要行级元素的某个长辈元素设置了text-align:center那么这个行级元素就会相对于父元素居中
        - 但是针对块级元素完全无效
  • Q2:如何使得块级元素居中?

  • A2:一般使用margin:

    • 针对块级元素:在父元素中水平居中
    • 只要给他自身设置一个margin:auto
    • margin:auto 不生效的情况
      1.被设置的元素是行内元素
      - 通过将该元素设置为display:inline-block
      2.本身宽度和父元素一致
      - 通过给该元素设置一个宽度(小于父元素)

使用line-height+vertical-align的垂直居中

  • Q1:一般使用line-height+vertical-align实现垂直居中,他的限制条件是什么呢?什么时候又会失效呢?

  • A1:首先从line-height下手:

    line-height(这里只说和问题相关的属性)
    • 仅仅作用于行内元素
    • 值=行间距+font-size (盗一张图瞬间明白)


      image.png
  • line-height的值推荐使用相对值(相对于font-size),相对值是一个无单位数字,代表大小为:数字* font-size

vertical-align
  • 该属性只对且只可以作用于:inline或者inline-block或者table-cell有用,换句话说block元素完全不work,但是对于block和inline-block的作用方式又是不一样的

  • 前提:给其inline-block或者block的父元素设置行高

  • vertical-align的默认值是baseline,还有其他的一些值的介绍参考http://www.cnblogs.com/hykun/p/3937852.html

  • vertical-align的值可以是length(它由一个 <number> 后紧随一个长度单位(px,em,pt,in,mm,...)组成)数值可以为负数

    使用这两个属性做到垂直居中
    • 给inline-block或者block的父元素设置一个line-height
    • 给需要居中的子inline-block或者inline子元素设置一个vertical-align:middle 既可做到

还有两篇文章很赞:

下篇文章继续研究实现block元素的垂直居中

相关文章

  • 前端秘籍,CSS垂直居中必学八式,一招一式尽显功力

    前言 设计网页的时候,除了CSS水平居中的需求外,还会经常遇到CSS垂直居中的需求,CSS垂直居中跟CSS水平居中...

  • css居中前言

    垂直居中前言 问题描述 一段html代码是这样 这时候样式是这样的我们希望所有的inline-block的元素都是...

  • CSS - 垂直水平居中方法

    前言 总括:整理 css 垂直水平居中方法,区分内联元素与块级元素 CSS垂直居中和水平居中 用css让一个容器水...

  • 垂直居中的方法

    行内元素居中 html css before元素居中 html css table-cell居中 css 垂直居中...

  • CSS图片居中(水平居中和垂直居中)

    css图片水平居中 css图片垂直居中 css图片水平垂直居中

  • CSS居中完全指南——构建CSS居中决策树

    CSS居中完全指南——构建CSS居中决策树 本文总结CSS居中,包括水平居中和垂直居中.本文相当于CSS决策树,下...

  • 垂直居中,水平居中

    CSS设置行内元素的水平居中 CSS设置行内元素的垂直居中 CSS设置块级元素的水平居中 CSS设置块级元素的垂直居中

  • 【css】居中方案

    前言:根据最近学习的课程,简单总结一下学习到的css左右布局以及居中方案。后期学习深入之后再回来进行css居中的完...

  • css居中十八式

    前言 在使用css设置页面样式时会经常遇到需要居中的情况,下面我总结了一些css在不同条件下实现居中的方法。大家看...

  • 文本的垂直居中

    简单理解css中的垂直居中和水平居中,即vertical-align和text-align属性前言:在很多情况下,...

网友评论

      本文标题:css居中前言

      本文链接:https://www.haomeiwen.com/subject/hydgoxtx.html