前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSS常用布局实现03-水平垂直居中

CSS常用布局实现03-水平垂直居中

作者头像
love丁酥酥
发布2018-08-27 15:56:17
3640
发布2018-08-27 15:56:17
举报
文章被收录于专栏:coding for lovecoding for love

1. 简介

其实,水平居中和垂直居中都是水平垂直居中的一部分,所以这一章节所讲到的方法稍微改下就可用于前面两章。说道水平垂直居中,那么居中的元素肯定是有宽度和高度的,要么是指定宽高,要么就是自适应的宽高。

2. 已知宽高

这种情况比较简单,因为已知宽高,根据宽高就能做很多处理。这里我只记录一种方法。 使用 -margin + absolute(relative):

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>负margin + absolute</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .wrap {
            position: relative;
            background: gray;
            height: 300px;
        }
        .inner {
            background: blue;
            width: 200px;
            height: 100px;
            position: absolute;
            top: 50%;
            left: 50%;
            margin-top: -50px;
            margin-left: -100px;
        }
    </style>
</head>
<body>

<div class="wrap">
    <div class="inner">inner content</div>
</div>
</body>
</html>

image.png

当然,这里使用这个方法的简化方法也可以,就是不设置父元素为absolute,设置子元素为relative,其余保持一样。

3. 未知宽高

3.1 使用 -margin + absolute:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>负margin + absolute</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .wrap {
            position: relative;
            background: gray;
            height: 300px;
        }
        .inner {
            background: blue;
            width: 200px;
            height: 100px;
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
            margin: auto auto;
        }
    </style>
</head>
<body>

<div class="wrap">
    <div class="inner">inner content</div>
</div>
</body>
</html>

这种方法很巧妙,使用也很多。IE7及之前版本不支持。

3.2 flex

是的,flex,flex,flex。

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>flex</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .wrap {
            background: gray;
            display: flex;
            height: 60px;
            align-items: center;
            justify-content: center;
        }
        .inner {
            background: blue;
        }
    </style>
</head>
<body>

<div class="wrap">
    <div class="inner">inner content</div>
</div>
</body>
</html>

3.3 grid

还有grid,grid,grid。

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>grid</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .wrap {
            background: gray;
            display: grid;
            height: 60px;
            align-items: center;
            justify-content: center;
        }
        .inner {
            background: blue;
        }
    </style>
</head>
<body>

<div class="wrap">
    <div class="inner">inner content</div>
</div>
</body>
</html>

3.4 table

当然,这种情景使用table也很方便。

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>table</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .wrap {
            display: table-cell;
            background: gray;
            height: 100px;
            width: 300px;
            text-align: center;
            vertical-align: middle;
        }
        .inner {
            background: blue;
        }
    </style>
</head>
<body>

<div class="wrap">
    <div class="inner">
        inner content
    </div>
</div>
</body>
</html>

ie8以后兼容。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.03.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 简介
  • 2. 已知宽高
  • 3. 未知宽高
    • 3.1 使用 -margin + absolute:
      • 3.2 flex
        • 3.3 grid
          • 3.4 table
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档