居中面试问题

2024-01-08 18:13:31

前端常问居中面试问题

css文本居中

文本水平居中

<div class="father">
    <div class="child"><div>
<div>

子类元素为行内元素,则给父类元素定义text-align:center

如果子元素是块元素,则给子元素定义margin:0 auto;

如果子元素是块级元素,可以通过display将子元素定义成行内元素,在给父元素定义text-align:center

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Document</title>
    <style>
        .father {
            width: 800px;
            height: 800px;
            background-color: skyblue;
        }
        .child {
            display: block;
            text-align: center;
            background-color: orange;
        }
    </style>
</head>
<body>
    <div class="father">
        <span class="child">我是一棵小小小小草奥</span>

    </div>
</body>
</html>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果margin:0 auto;加在父元素上,则父元素相对与body水平居中。text-align是作用于自身

文本垂直居中

<div>hello word </div>

例如这个高为100px,让文本居中你需要两个条件

div {
    vertical-align:middle
    display:table-cell;
}

这里display必须是table-cell

是table-cell会控制这个盒子的宽度为里面text的宽度,并不是真正可以设置宽高

另一种方法是,对单行文本的垂直居中可以将行高line-height设置为盒子的高度

给盒子做居中

盒子水平居中

margin:auto

盒子垂直居中,不能用margin,可以用定位或者flex布局实现或者浮动

用定位实现常见的父子盒子都是块元素的情况
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Document</title>
    <style>
        .father {
            width: 800px;
            height: 800px;
            background-color: skyblue;
            position: relative;
        }
        .child {
            width: 200px;
            height: 200px;
            top: 50%;
            left: 50%;
            transform: translate(-50%,-50%);
            position: absolute;
            background-color: orange;

        }
    </style>
</head>
<body>
    <div class="father">
        <div class="child"></div>
    </div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Document</title>
    <style>
        .father {
            width: 800px;
            height: 800px;
            background-color: skyblue;
            position: relative;//父元素开启相对定位
        }
        .child {
            width: 200px;
            height: 200px;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            margin: auto; //居中关键就是外边距为auto
            position: absolute; //子元素开启固定定位
            background-color: orange;

        }
    </style>
</head>
<body>
    <div class="father">
        <div class="child"></div>
    </div>
</body>
</html>

方式不一样但是呈现的样式是一样的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

弹性盒子居中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Document</title>
    <style>
        .father {
            width: 800px;
            height: 800px;
            display: flex; //这里必须要开启弹性盒子
            justify-content: center; //水平居中
            align-items: center;//垂直居中
            background-color: skyblue;
        }
        .child {
            width: 200px;
            height: 200px;
            background-color: orange;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="child"></div>
    </div>
</body>
</html>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

文章来源:https://blog.csdn.net/qq_65225435/article/details/135460051
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。