当前位置:首页 > 技术分析 > 正文内容

how to center a div,如何让一个DIV居中——示例详解

ruisui885个月前 (01-22)技术分析25

前言

如何让一个DIV居中,这应该是一个简单的问题吧?

难道有很多不同的应用场景,以及不同的写法吗?


常见代码示例

1、采用 margin 水平居中。

在元素的 宽度已知 的情况下,并且 小于父容器的宽度 时,能很直观的看到它居中了。

// 普通左右居中 margin: 0 auto;
.layour-center { margin-left: auto; margin-right: auto; }

2、采用 text-align:center 加 display:inline-block 实现水平居中。

<style type="text/css">
  .parent {
    background-color: coral;
    height: 200px;
    padding-top:15px;

    text-align: center;;
  }
.child {
  background-color: white;
  width:100px;
  height: 50px;

  display: inline-block;
  /* text-align:left;*/ /* 重置为默认 */
}
</style>



3、采用 绝对定位 方式,实现 水平和垂直居中 。一般常见于登录框、弹窗等应用场景。

使用 absolute 属性时,元素的定位是相对于其最近的被定位(position 属性设置为非 static 的元素)的父级元素或祖先元素进行计算的。如果没有找到被定位的父级元素或祖先元素,那么相对于文档的 body 元素进行计算。

使用 fixed 属性时,元素的定位是相对于浏览器窗口的。

所以应该根据实际情况选择具体的属性。

<style type="text/css">
  .container-login {
    background-color: coral;

    position: absolute;
    /* position:fixed */
    /** 
           水平居中
           左边距离50%,同时
           减去自身的 宽度 的一半。
        */
    width:130px;
    left:50%;
    margin-left:-65px; 

    /** 
           垂直居中
           上边距离50%,同时
           减去自身的 高度 的一半。
        */
    height:140px;
    top: 50%;
    margin-top:-70px;

  }
</style>

4、采用 flex 布局,实现 水平和垂直居中 。父容器设置轴线以实现子容器的居中。

<style type="text/css">
  .parent {
    background-color: coral;
    display: flex;
    /* 沿着主轴水平居中 */
    justify-content: center; 
    /* 沿着交叉轴垂直居中 */
    align-items: center; 
    /* 父容器的高度不能为auto */
    height: 300px; 
  }
.child {
  background-color: white;
  /* 确定子元素的大小 */
  width: 200px;
  height: 100px;
}
</style>

5、使用 transform ,实现 水平和垂直居中 。 -50% 表示向左/上移动元素的一半,从而实现完美居中。

<style type="text/css">
  .parent {
    background-color: coral;
    position: relative;
    height: 230px;
  }
.child {
  background-color: white;
  position: absolute;
  width:80px;
  height: 80px;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
</style>


人人为我,我为人人,谢谢您的浏览,我们一起加油吧。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/474.html

分享给朋友:

“how to center a div,如何让一个DIV居中——示例详解” 的相关文章

Alpine.js 如何火起来的!比 React/Vue 如何?

大家好,很高兴又见面了,我是"高级前端?进阶?",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!前言前端 JavaScript 框架的创新是这个时代最伟大的技术文化现象之一。Alpine 发音为 /??lpa?n/,中文为阿尔卑斯山、...

微信小程序发展越来越快,Flutter应用开发越来越低效?

目前的疑惑微信小程序发展的越来越快,目前小程序甚至取代了大部分 App 的生态位,公司的坑位不增反降,只能让原生应用开发兼顾或换岗进行小程序的开发。以我的实际情况来讲,公司应用采用的 Flutter 框架,同样的功能不可避免的就会存在 Flutter 应用开发和微信小程序开发兼顾的情况,这种重复造轮...

详解编程中的同步和异步

本文主要总结一些自己对异步的理解,话不多说 下面开始。一. 单线程 我们常说“JavaScript是单线程的”,所谓单线程,是指在JS引擎中负责解释和执行JavaScript代码的线程只有一个。不妨叫它主线程 但是实际上还存在其他的线程。例如:处理AJAX请求的线程、处理DOM事件的线程、定时器线程...

linux网络编程Socket之RST详解

产生RST的三个条件:1. 目的地为某端口的SYN到达,然而该端口上没有正在监听的服务器;2. TCP想取消一个已有的连接;3. TCP接收到一个根本不存在的连接上的分节;现在模拟上面的三种情况:client:struct sockaddr_in serverAdd; bzero(&s...

vue 如何实现跨域

跨域问题是因为浏览器的同源策略引起的,一种浏览器的安全机制,要求协议,域名,端口,都要一致!出于浏览器的同源策略限制,浏览器会拒绝跨域请求。什么叫跨域?非同源请求,均为跨域。名词解释:同源 —— 如果两个页面拥有相同的协议(protocol),端口(port)和主机(host),那么这两个页面就属于...

vue跨域(前端配置/nginx+springboot配置)

前言 学完vue,就想搞点前后端分离玩玩,然而在请求路径的时候却出现了跨域问题!因此我就想解决一下!开搞1.前端配置解决跨域1-1.创建文件 vue-cli3的项目没有带那个config/index.js,只能自己创建一个叫vue.config.jsvue.config.js1-2.写东西image...