html居中代码-老板手机收到红包,为什么红包不在中央? 如何使元素水平和垂直居中?

2023-08-23 0 3,054 百度已收录

本文最新内容将在GitHub上实时更新。 欢迎关注我的GitHub,一起上手,共同推进后端。

前言

老板手机收到红包,为什么红包不在中央?

如何使子元素在父容器中水平和垂直居中? 这个问题一定要测试一下,在实战开发中也应用得很多。

您也许可以手动编写多个实现。 然而,大多数人的写作风格还不够规范,经不起反复考验。 换句话说:那些人只是在笔试的时候说说而已,但真正上战场的时候,却不敢这样写,也不知道怎么写最靠谱。

在这篇文章中html居中代码,我们列出几种常见的写作方式,你最终会明白哪种写作方式是最高尚的。

其实我就拿出实际应用中的真实场景来举例,让大家体验一下标准垂直居中的魅力。

如何使内联元素(文本、图片等)水平和垂直居中

内联元素居中的问题比较简单。

html居中代码-老板手机收到红包,为什么红包不在中央? 如何使元素水平和垂直居中?

行内元素水平居中

设置父容器

    text-align: center;

行内元素垂直居中

使文本的列宽等于包的高度可以使单行文本垂直居中。 例如:

    .father {
        height: 20px;
        line-height: 20px;
    }

如何使块级元素水平和垂直居中

这一段是本文的核心。 如何使块级子元素在父容器中水平和垂直居中? 有几种写法。 我们上去看看吧。

margin:auto的问题

在 CSS 中水平居中元素非常简单:如果是内联元素,则将 text-align:center 应用于其父容器; 如果是块级元素,则应用 margin:auto 或然后 margin: 0auto。

这里,margin:auto 等同于 margin:autoautoautoauto。 margin:0auto 与 margin:0auto0auto 等价,四个值分别对应上、右、下、左。 其估计值取决于剩余空间。

但是,如果您想让元素垂直居中,则 margin:auto 将不起作用。

例如下面这段代码:




    
    
    Document
    
        .father{
            height: 500px;
            background: pink;
        }
        .son {
            width: 300px;
            height: 200px;
            background: red;
            margin: auto;
        }
    


    

里面的代码中,父元素和子元素都有固定的宽度和高度。 尽管在这些情况下,我为子元素设置了 margin:auto,但子元素仍然没有垂直居中。

那么有没有更好的通用做法呢?

方法一:绝对定位+margin(需要指定子元素的宽高,不推荐)




    
    
    Document
    
        * {
            margin: 0;
            padding: 0;
        }
        .father{
            position: relative;
            min-height: 500px;
            background: pink;
        }
        .son {
            position: absolute;
            width: 200px;
            height: 100px;
            background: red;
            top: 50%;
            left: 50%;
            margin-top: -50px;
            margin-left: -100px;
        }
    


    
子元素的内容

代码解释:我们先将子元素左上角居中,然后向下连接一半长度(50px),达到垂直居中的效果; 水平居中的原理类似。

缺点:需要指定子元素的宽度和高度,margin-top和margin-left属性值可以写。

html居中代码-老板手机收到红包,为什么红包不在中央? 如何使元素水平和垂直居中?

但一般来说,对于这些需要居中的元素,其宽度和高度往往是由其内容决定的,不建议固定宽度和高度。

方法二:绝对定位+平移(无需指定子元素宽高,推荐)




    
    
    Document
    
        * {
            margin: 0;
            padding: 0;
        }
        .father{
            position: relative;
            min-height: 500px;
            background: pink;
        }
        .son {
            position: absolute;
            background: red;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
        }
    


    
子元素的内容

这些写法可以让子元素在父容器中垂直居中,而无需指定子元素的宽度和高度。 由于在translate()函数中使用了比例值,因此它是根据元素本身的长和高(动态估计的宽和高)进行转换和连接的。

形式三:flex布局(待完善)

将父容器设置为Flex布局,然后给父容器添加属性justify-content:center,这样子元素就可以水平居中; 然后给父容器添加一个属性align-items:center,让子元素可以垂直居中。

代码示例:




    
    
    Document
    
        * {
            margin: 0;
            padding: 0;
        }
        .father{
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            background: pink;
        }
        .son {
            background: red;
        }
    


    
子元素的内容

上述写法的缺点是,给父容器设置属性 justify-content: center 和align-items: center 后html居中代码,父容器中的所有子元素垂直居中(如果父容器中有多个子元素)容器) )。 但我显然想要将指定的子元素居中,我该如何改进呢?

形式4:flex布局+margin:auto(推荐)

html居中代码-老板手机收到红包,为什么红包不在中央? 如何使元素水平和垂直居中?

我们只需要写两行声明:先为父容器设置display:flex,然后为指定的子元素设置熟悉的margin:auto,这样就可以在剩余空间中水平和垂直放置指定的子元素居中。 你完成了。

代码示例:




    
    
    Document
    
        * {
            margin: 0;
            padding: 0;
        }
        .father{
            display: flex;
            min-height: 100vh;
            background: pink;
        }
        .son {
            margin: auto;
            background: red;
        }
    


    
子元素的内容,想水平垂直居中
这个元素不想水平垂直居中

请注意,当我们对父容器使用flex布局时,子元素的margin:auto不仅可以水平方向居中,还可以垂直方向居中。

参考文章:参观flex上下文中神奇的手动边距

垂直居中典型应用场景:红包窗帘/弹窗问题引入

以“弹窗”为例。 如今,你的弹窗各种风格、布局满天飞。 然而,进入公司后,新人在第一次写弹窗之前都会问一个问题:“这么常见的弹窗没有标准吗?” 向上。

建议在写弹窗的时候,无论怎样,一定要严格使用水平居中和垂直居中的写法。

不要用margin-top来估计弹出窗口距离屏幕底部的位置,太垃圾了。 不要让领导想:“你后端代码写了这么久,连一个弹窗都处理不了?”

联通终端,红包帘/弹窗居中标准写法(特殊标准)

在联通场景下,这里是红包帘/弹窗的居中书写方式。 请注意,它是严格居中且非常标准的。 为什么选择中国联通? 你见过PC网页给你发红包吗?

实际开发中,可以直接使用下面的代码。 注释很详细,也很贴心。



    
        
        
        Document
        
            /* 整个弹窗组件 */
            .component_popup {
                position: fixed;
                top: 0;
                bottom: 0;
                left: 0;
                right: 0;
                z-index: 100;
            }
            /* 遮罩背景 */
            .popup_mask {
                position: fixed;
                top: 0;
                bottom: 0;
                left: 0;
                right: 0;
                background: rgba(0, 0, 0, 0.7);
            }
            /* 弹窗区域(内容 + close):严格居中 */
            .popup_content {
                position: absolute;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);
            }
            /* 弹窗的内容部分 */
            .content_box {
                width: 15.45rem;
                height: 19.32rem;
                background: url(http://img.smyhvae.com/20191010_1500_red-packet.png) no-repeat;
                background-size: 15.45rem 19.32rem;
            }
            /* 弹窗的close图标 */
            .content_close {
                width: 1.25em;
                height: 1.25em;
                background: url(http://img.smyhvae.com/20191010_1500_close.png) no-repeat;
                background-size: 1.25rem 1.25rem;
                margin: 0 auto;
                margin-top: 0.5rem;
            }
        
    
    
        
默认文档流中的页面主体

达到疗效:

补充:

1、如果你的页面中有很多弹窗,建议将弹窗封装成一个具体的组件。

2、任何弹窗都需要解决“滚动浏览”的问题。 本文篇幅有限,请自行参考。

最后一段

有些实现方法虽然简单,但必须经得起反复试验。 我们必须尊重每一行代码,而不是肤浅的。 团队发展需要的不是个性,而是标准和规范。

参考链接 我的公众号

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 html html居中代码-老板手机收到红包,为什么红包不在中央? 如何使元素水平和垂直居中? https://www.wkzy.net/game/143543.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务