css常用元素水平垂直居中方案

所属分类: 网页制作 / CSS 阅读数: 786
收藏 0 赞 0 分享

flex实现水平垂直居中

适用场景:父子宽高都可未知(比较推荐这种方式,简单,而且目前兼容性也不错。)

<html>
  <head>
    <style>
      .parent {
          width: 100%;
          height: 100px;
          background: cyan;
          display: flex;
          justify-content: center;
          align-items: center;
        }
        .son {
          width: 20%;
          height: 20%;
          background: pink;
        }
    </style>
  </head>
  <body>
    <div class='parent'>
       <div class='son'></div>
    </div>
  </body>
</html>

绝对定位加上负margin

适用场景:父元素宽高已知未知都行,但是首先得有宽高。其次子元素的宽高必须已知,因为需要设置子元素的负margin. (也可以将负margin设置成translate来做位移实现)

<html>
  <head>
      <style>
      .parent {
          position: relative;
          width: 200px;
          height: 200px;
          background: pink;
        }
        .son {
          position: absolute;
          left: 50%;
          top: 50%;
          margin-left: -25px;
          margin-top: -25px;
          width: 50px;
          height: 50px;
          background: yellow;
        }
      </style>
  </head>
  <body>
    <div class='parent'>
       <div class='son'></div>
    </div>
  </body>
</html>

绝对定位 + auto margin

适用场景:父子元素宽高都未知的情况(该方式不需要明确知道子元素宽高,子元素宽高可用百分比,对于子元素宽高不确定需要居中的情况比较适合。)

<html>
  <head>
    <style>
      .parent {
          position: relative;
          width: 200px;
          height: 200px;
          background: cyan;
        }
        .son {
          position: absolute;
          left: 0;
          top: 0;
          bottom: 0;
          right: 0;
          margin: auto;
          width: 10%;
          height: 10%;
          background: yellow;
        }
    </style>
  </head>
  <body>
    <div class='parent'>
       <div class='son'></div>
    </div>
  </body>
</html>

网格布局

适用场景:父子元素宽高未知,兼容性不大好

<html>
  <head>
    <style>
      .parent {
          display: grid;
      }
      .son {
        jusitify-self: center;
        align-self: center;
      }
    </style>
  </head>
    <body>
      <div class='parent'>
       <div class='son'></div>
    </div>
    </body>
</html>

Table-cell + text-align + vertical-align

适用场景: 父元素大小已知(非百分比高度),子元素大小未知,但子元素须为行内块元素,较好的兼容性

<html>
  <head>
    <style>
      .parent {
          display: table-cell;
          vertical-align: middle;
          text-align: center;
          width: 100vw;
          height: 90vh;
          background-color: yellowgreen;
        }
        .son {
          display: inline-block;
          width: 200px;
          height: 200px;
          background-color: Indigo;
        }
    </style>
  </head>
  <body>
    <div class='parent'>
       <div class='son'></div>
    </div>
  </body>
</html>

伪元素

适用场景:父子宽高都可未知,子元素需为行内块元素(这种方式其实就是使用伪元素的高度为100%,子元素和伪元素都设置 vertical-align: middle实现垂直居中的效果)

<html>
  <head>
    <style>
    .parent {
      height: 100vh;
      width: 100vw;
      text-align: center;
      background: #c0c0c0;
    }
     
    .parent:before {
      content: "\200B";
      display: inline-block;
      height: 100%;
      vertical-align: middle;
    }
     
    .son {
      display: inline-block;
      vertical-align: middle;
      width: 200px;
      height: 200px;
      padding: 10px 15px;
      background: #f5f5f5;
    }
    </style>
  </head>
  <body>
    <div class="parent">
      <div class="son"></div>
    </div>
  </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

css实现的让图片垂直居中的方法

图片的宽度和高度是未知的,没有一个固定的尺寸,在这个前提下要使图片在一个固定了宽度和高度的容器中垂直居中,想想感觉还是挺麻烦的,由于最近的项目可能会用到这个方案,所以把一些常用的方法都收集整理了一下。
收藏 0 赞 0 分享

3个比较有用的网页制作技巧

我们在进行DivCSS布局的时候,非常关注CSS技巧的学习,今天向大家推荐3个所谓的 “顶级”CSS技巧!虽然没有什么新意,但对新手而言却非常重要!
收藏 0 赞 0 分享

让你写出更轻巧、更快并且更不会让你头疼的CSS的方法

为什么我们的CSS变得一团糟——我们真的很容易陷入这样的困惑中。有时这是一开始就马虎编程的结果,有时是由于后期多重的附加代码(hacks)和修改造成的。
收藏 0 赞 0 分享

利用CSS3的checked伪类实现OL的隐藏显示的方法

随着CSS3的发布,国外研究正如火如荼,但在国内还有很多人抱着IE不支持CSS3的想法,始终无动于衷不肯去学习。
收藏 0 赞 0 分享

CSS多浏览器兼容性(IE和Firefox)技巧大全推荐

CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理技巧并整理了一下。
收藏 0 赞 0 分享

固定位置显示弹出层(兼容IE6,IE8,FF)

兼容IE6,IE8,FF弹出层固定位置显示,主要是通过css的控制
收藏 0 赞 0 分享

div完美自适应动态上下左右居中

div完美自适应动态上下左右居中,多用于信息提示框效果。
收藏 0 赞 0 分享

display:inline的用法

和 display:inline 对应的是 display:block,block 会让应用了该 CSS 属性的 HTML 标记变成块级别元素,例如 SPAN 是行内显示的,但是你加了 display:block 属性就不一样了
收藏 0 赞 0 分享

css样式实现整个页面背景使用一张图片

最近一直被css背景困扰,因为是仿站,别人网站背景图片无论怎样另存,都是相同文件名,打开一看,整个网站的各个角落背景图片都在一个文件中分布,于是上网搜集资料,发现使用这种方法的网站很多,源自于雅虎最早。
收藏 0 赞 0 分享

关于CSS样式表文件组织形式的整理

以下引用网络上的一篇文章,不知道作者是谁了,总体上概括的不错,但是在实际应用当中还是要根据项目情况来具体实施比较好。
收藏 0 赞 0 分享
查看更多