当前位置: 首页 > news >正文

常见面试题—css实现垂直水平居中

前言

面试中常常被问到,如何使用css来实现一个元素的垂直水平方向上居中,特别是笔试题的时候,这道题目的出现频率还是比较高的,当然,在我们的生活中,也常常会有垂直水平居中的需求。

css实现垂直水平居中的三种方案

  • 1.容器内元素display:inline/inline-block

这种情况就比较容易了,直接设置容器的text-align就可以实现内容元素的水平居中,设置垂直居中的话要设置容器的高度,然后设置容易的line-height===height就可以,如下:

     <div class="container">
        <span>this is text</span>
     </div>
复制代码
    .container{
        text-align: center;
        height: 50px;
        background: green;
        line-height: 50px;
    }
复制代码
  • 2.容器内元素display:block,且元素宽高已知

这种情况下我们使用position这个属性结合设置偏移来实现。首先设置容器的position:relative,设置元素position为absolute,然后设置元素(.inner-box)的偏移top,left,margin-top,margin-left,其中,top,left设置为50%,而margin-top/margin-left的偏移量均为本身元素高/宽的一半,为负值。

代码如下:

    
    <div class="container">
        <div class="inner-box"></div>
    </div>
    
复制代码
    .container {
        height: 200px;
        width: 200px;
        background: pink;
        position: relative;
    }


    .inner-box {
        position: absolute;
        top: 50%;
        left: 50%;
        margin-top: -50px;
        margin-left: -50px;
        height: 100px;
        width: 100px;
        background: green;
    }
    
    
    
复制代码
  • 3.容器内元素display:block,且元素宽高未知

这种方法与方法二类似,但是不同的是不能通过设置margin-top/left偏移来达到效果了,因为容器内元素的宽高是未知的。这次我们通过设置left/top/bottom/right:0,然后设置margin:auto。 代码如下:

    <div class="container">
        <div class="inner-box"></div>
    </div>
复制代码
    .container {
            height: 200px;
            width: 200px;
            background: pink;
            position: relative;
        }


    .inner-box {
        position: absolute;
        height: 100px;
        width: 100px;
        top: 0;
        right: 0;
        left: 0;
        bottom: 0;
        margin: auto;
        background: green;
    }
复制代码

后话

实现垂直水平居中的方式有多种,通过设置translate,或者使用flex布局也是可以的,但是以上写的几种方法是兼容性比较好的。如果有不足,欢迎这位大佬指出。

转载于:https://juejin.im/post/5b1e3422e51d4506a269be9d

相关文章:

  • hyperLedger fabric 从0到1 + End2EndIT源码解析
  • 天猫校园店一个月签约100家高校!未来要服务2000万高校人群
  • T-SQL 簡易小數處理
  • 基于 CentOS 搭建 WordPress 个人博客
  • eclipse部署jrebel热启动后报错java.lang.OutOfMemoryError: PermGen space问题
  • Powershell渗透测试系列–进阶篇
  • 【leetcode】802. Find Eventual Safe States
  • 架构的代码结构
  • 做RAID1 遇到种种问题
  • jira安装
  • 对指定多个目录的第一级保留进行保留(再递归删除空目录)
  • C++之const类成员变量,const成员函数
  • 小程序开发之路(一)
  • js学习笔记之自调用函数和原型链
  • vivx面试题
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • codis proxy处理流程
  • Javascript弹出层-初探
  • Java的Interrupt与线程中断
  • leetcode46 Permutation 排列组合
  • uni-app项目数字滚动
  • windows-nginx-https-本地配置
  • 不上全站https的网站你们就等着被恶心死吧
  • 从零开始在ubuntu上搭建node开发环境
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 官方解决所有 npm 全局安装权限问题
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 前端设计模式
  • 因为阿里,他们成了“杭漂”
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • scrapy中间件源码分析及常用中间件大全
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (二)Linux——Linux常用指令
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (五)MySQL的备份及恢复
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)树状数组
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 回调、接口回调、 委托
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .skip() 和 .only() 的使用
  • @RequestBody的使用
  • @我的前任是个极品 微博分析
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • []指针
  • [20150629]简单的加密连接.txt
  • [2016.7.Test1] T1 三进制异或
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用