水平居中和垂直居中

整理一下。。。

水平居中

块级元素:给元素设置magin:0 auto;


<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .block{
            width: 200px;
            height: 200px;
            background-color: plum;
            margin: 0 auto;//水平居中
        }
    </style>
</head>
<body>
<div class="block"></div>
</body>
</html>

行级元素:给父级元素设置text-align:center;


<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .block{
            width: 200px;
            height: 200px;
            background-color: plum;
            text-align: center;//子元素水平居中
        }
    </style>
</head>
<body>
<div class="block">
    <span>很高兴认识你</span>
</div>
</body>
</html>

输出结果:

垂直居中

块级元素

1.绝对定位+相对定位


<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .block{
            position: relative;
            width: 200px;
            height: 200px;
            background-color: #f5ff9b;
        }
        .block_1{
            width: 100px;
            height: 100px;
            position: absolute;
            top: 50%;
            background-color: palevioletred;
            margin: -50px 0 0 0;
        }

    </style>
</head>
<body>
<div class="block">
    <div class="block_1"></div>
</div>
</body>
</html>

输出结果:

注意:如果不知道被垂直居中的块级元素的大小则无法实现。

2.使用transform

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .block{
            position: relative;
            width: 200px;
            height: 200px;
            background-color: #f5ff9b;
        }
        .block_1{
            width: 100px;
            height: 100px;
            position: absolute;
            top: 50%;
            background-color: palevioletred;
            transform: translate(0,-50%);
        }
    </style>
</head>
<body>
<div class="block">
    <div class="block_1"></div>
</div>
</body>
</html>

3.使用绝对定位和负外边距

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .block{
            position: relative;
            width: 200px;
            height: 200px;
            background-color: #f5ff9b;
        }
        .block_1{
            width: 100px;
            height: 100px;
            position: absolute;
            top: 50%;
            background-color: palevioletred;
            margin: -25% 0 0 0;
        }
    </style>
</head>
<body>
<div class="block">
    <div class="block_1"></div>
</div>
</body>
</html>

注意:使用magin来实现垂直居中必须依赖于子元素相对于父元素的百分比,这种方法有局限性。

4.绝对定位后设置top,bottom,magin值,注意top和bottom值只要设置相等就可以。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .block{
            position: relative;
            width: 200px;
            height: 200px;
            background-color: #f5ff9b;
        }
        .block_1{
            width: 100px;
            height: 100px;
            position: absolute;
            top: 0;
            bottom: 0;
            margin: auto;
            background-color: palevioletred;
        }
    </style>
</head>
<body>
<div class="block">
    <div class="block_1"></div>
</div>
</body>
</html>

5.使用flex布局:

  方式一:父元素设置display:flex;align-items: center;

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .block{
            width: 200px;
            height: 200px;
            display: flex;
            align-items: center;
            background-color: #f5ff9b;

        }
        .block_1{
            width: 100px;
            height: 100px;
            background-color: palevioletred;
        }
    </style>
</head>
<body>
<div class="block">
    <div class="block_1"></div>
</div>
</body>
</html>

方式二:父元素设置display:flex,设置好之后改变主轴的方向flex-direction: column;justify-content属性定义了项目在主轴上的对  齐方式。

1.flex-direction 属性规定灵活项目的方向。

属性值

 描述
row主轴为水平方向,起点在左端
row-reverse主轴为水平方向,起点在右端;
column主轴为垂直方向,起点在上沿;
column-reverse主轴为垂直方向,起点在下沿。

 

2.justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式。

属性值

 描述
flex-start默认值。项目位于容器的开头。左对齐
flex-end项目位于容器的结尾。右对齐
center项目位于容器的中心。居中
space-between两端对齐,各个项目之间的间隔均相等;
space-around各个项目两侧的间隔相等。
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .block{
            width: 200px;
            height: 200px;
            display: flex;
            flex-direction: column;
            justify-content: center;
            background-color: #f5ff9b;

        }
        .block_1{
            width: 100px;
            height: 100px;
            background-color: palevioletred;
        }
    </style>
</head>
<body>
<div class="block">
    <div class="block_1"></div>
</div>
</body>
</html>

 

行级元素

1.使用flex布局

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .block_1{
            width: 100px;
            height: 100px;
            display: flex;
            align-items: center;
            background-color: palevioletred;
        }
    </style>
</head>
<body>
<div class="block_1">
    <span>你好</span>
</div>
</body>
</html>

输出结果:

2.使用line-height

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .block{
            width: 200px;
            height: 200px;
            line-height: 200px;
            background-color: #f5ff9b;
        }
    </style>
</head>
<body>
<div class="block">
    <span>很高兴认识你</span>
</div>
</body>
</html>

输出结果:

注意:如果line-height取值为百分比时候的描述:基于当前字体尺寸的百分比行间距。这里的百分比并不是相对于父元素尺寸而言,而是相对于字体尺寸来讲的。

垂直居中+水平居中

行级元素:父元素设置display:table;将父元素转化为块级表格来显示

                  子元素设置display:table-cell;vertical-align: middle;text-align: center;将子元素作为一个表格单元格显示


<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .block{
            width: 200px;
            height: 200px;
            background-color: #f5ff9b;
            display: table;
        }
        .block_1{
            display: table-cell;
            vertical-align: middle;
            text-align: center;
        }
    </style>
</head>
<body>
<div class="block">
    <span class="block_1">你好</span>
</div>
</body>
</html>

注意:vertical-align属性只对拥有valign特性的html元素起作用,例如表格元素中的<td><th>等等,像<div><span>这样的元素是不能使用的。

块级元素:

一、使用弹性盒

align-items 属性定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。

 

属性值

 描述
stretch

默认值。元素被拉伸以适应容器。

如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。

center

元素位于容器的中心。

弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。

flex-start

元素位于容器的开头。

弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。

flex-end

元素位于容器的结尾。

弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。

baseline

元素位于容器的基线上。

如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。


<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .block{
            display: flex;
            justify-content: center;
            align-items: center;
            width: 200px;
            height: 200px;
            background-color: #f5ff9b;
        }
        .block_1{
            width: 100px;
            height: 100px;
            background-color: palevioletred;
        }

    </style>
</head>
<body>
<div class="block">
    <div class="block_1"></div>
</div>
</body>
</html>

输出结果:

二、利用定位

父元素相对定位,子元素绝对定位


<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .block{
            position: relative;
            width: 200px;
            height: 200px;
            background-color: #f5ff9b;
        }
        .block_1{
            width: 100px;
            height: 100px;
            position: absolute;
            top: 50%;
            left: 50%;
            background-color: palevioletred;
            transform:translate(-50%,-50%);
        }

    </style>
</head>
<body>
<div class="block">
    <div class="block_1"></div>
</div>
</body>
</html>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值