水平,垂直居中的15种方法

一.水平居中

1.文字水平居中

<div class="one">

  测试居中

</div>

<style>

.one{

  width: 200px;

  height: 100px;

  border:1px solid red;

  text-align: center;

}

</style>

2.盒子居中

<div class="one">是盒子居中</div>

<style>

.one{

  width: 200px;

  height: 100px;

  border:1px solid red;

  margin: 0 auto;

}

</style>

3.多块级元素水平居中

<div class="container">

<div class="child">

简单不先于复杂

</div>

<div class="child">

而是在复杂之后

</div>

<div class="child">

简单不先于复杂,而是在复杂之后。

</div>

<div class="child">

简单不先

</div>

</div>

<style>

.container {

  height:100px;

  padding: 8px;

  text-align: center;

  border: 2px dashed #f69c55;

}

.child {

  padding: 8px;

  width: 4rem;

  margin: 0 8px;

  color: #fff;

  background: #000;

  display: inline-block;

}

</style>

4.弹性布局,多块级水平居中

<div class="flex-center">

<div>

测试1

</div>

<div>

测试2测试2测试2测试2测试2测试2测试2

</div>

<div>

测试3测试3测试3测试3

</div>

</div>

<style>

.flex-center {

  width: 800px;

  padding: 8px;

  display: flex;

  justify-content: center;

  border: 2px dashed #f69c55;

}

.flex-center >div {

  padding: 8px;

  width: 100px;

  margin: 0 8px;

  color: #fff;

  background: #000;

}

</style>

display: flex;兼容性不好可以这样解决:最少支持ie10以上

.flex-center{ display: -webkit-flex; /* 新版本语法: Chrome 21+ */

       display: flex; /* 新版本语法: Opera 12.1, Firefox 22+ */

      display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */

      display: -moz-box; /* 老版本语法: Firefox (buggy) */ display: -ms-flexbox; /* 混合版本语法: IE 10 */

     }

.flex-center>div { -webkit-flex: 1; /* Chrome */

        -ms-flex: 1 /* IE 10 */

        flex: 1; /* NEW, Spec - Opera 12.1, Firefox 20+ */

         -webkit-box-flex: 1 /* OLD - iOS 6-, Safari 3.1-6 */

        -moz-box-flex: 1; /* OLD - Firefox 19- */

        }

5.垂直居中

1.元素是display:block和display:inline-block都可以使用height:100px ,line-height:100px;

2.利用display:table-cell

<div class="center-table">

<p class="v-cell">The more technology you learn</p>

</div>

<style>

.center-table {

  width: 800px;

  display: table;

  height: 140px;

  border: 2px dashed #f69c55;

}

.v-cell {

  display: table-cell;

  vertical-align: middle;

}

</style>

3.用flex布局

<div class="center-flex">

  <p>Dance like nobody </p>

</div>

<style>

.center-flex {

  width: 500px;

  height: 140px;

  display: flex;

  flex-direction: column;

  justify-content: center;

  border: 2px dashed #f69c55;

}

</style>

4.块级元素固定高度(这个应该是大家最熟悉的,例子就不放了)

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  height: 100px;
  margin-top: -50px;
}

5.不知高度

<div class="parent">

<div class="child">世界上有 10 种人,懂二进制的和不懂二进制的。</div>

</div>

<style>

.parent {

height: 140px;

position: relative;

border: 2px dashed #f69c55;

}

.child {

  position: absolute;

  top: 50%;

  transform: translateY(-50%);

  background: black;

  color: #fff;

  padding: 1rem;

  width: 12rem;

}

</style>

transform的兼容性:

transform: translate(50px,100px);
-ms-transform: translateY(-50%)		/* IE 9 */
-webkit-transform:  translateY(-50%)	/* Safari and Chrome */
-o-transform: translateY(-50%)/* Opera */
-moz-transform:  translateY(-50%);	/* Firefox */

三,水平居中,垂直居中

1.固定宽高的水平垂直居中(大家熟悉的)

parent {

    position: relative;
}
.child {
    width: 300px;
    height: 100px;
    padding: 20px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin: -70px 0 0 -170px;
}2.不知宽高-水平垂直居中
.parent {
    position: relative;
}
.child {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
3.flex布局(上面水居中和垂直居中有例子就不写了)
.parent {
    display: flex;
    justify-content: center;
    align-items: center;
}
4.利用grid实现水平垂直居中,兼容性较差,不推荐。
.parent {
  height: 140px;
  display: grid;
}
.child {
  margin: auto;
}5.弹窗的水平居中(截图不好放,就不放了,大家粘贴就可以运行)

<div class="element">

<div>水平垂直居中了,好开心哦</div>

</div>

<style>

.element{

  width: 300px;

  height: 300px;

  background-color: deeppink;

  position: absolute;

  left: 0;

  right: 0;

  top: 0;

  bottom: 0;

  margin: auto;

}

</style>

大家有好的方法就留言哈
 

原文地址:https://www.cnblogs.com/qianduanting/p/8663663.html

时间: 2024-10-12 21:36:06

水平,垂直居中的15种方法的相关文章

定位实现水平垂直居中的两种方法(无需计算)

首先给想要居中的元素设置绝对定位,其父元素设置相对定位. 然后,方法一:top,left,right,bottom都设置为0,margin:auto,即可在父元素中水平垂直居中. 方法二:top,left都设置为50%,然后transform:translate(-50%,-50%),如果其他地方也用到了transform并且设置transition容易误伤这里.

CSS水平垂直居中的几种方法

直接进入主题! 一.脱离文档流元素的居中 方法一:margin:auto法 CSS代码: div{ width: 400px; height: 400px; position: relative; border: 1px solid #465468; } img{ position: absolute; margin: auto; top: 0; left: 0; right: 0; bottom: 0; } HTML代码: <div> <img src="mm.jpg&quo

使元素相对于窗口或父元素水平垂直居中的几种方法

如果一个元素具有固定或相对大小,要使其不管如何调整窗口大小或滚动页面,始终位于浏览器窗口中间,可使用如下方法: <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title><meta charset="utf-8&q

未知宽高的图片水平垂直居中的几种方法

最近在项目中遇到不固定宽高的图片要水平垂直居中的情况,发现垂直居中存在兼容性问题,下面收集了一些方法,可根据需要权衡使用. 1. 背景法(兼容性好,简单,但不利于动态导入的图片) html: <div class="wrap"></div> css: .wrap{ width:300px; height:200px; background: url(../img/test.jpg) center center no-repeat; } 2. 图片外面用个p标签,

CSS水平垂直居中的几种方法2

直接进入主题! 一.脱离文档流元素的居中 方法一:margin:auto法 CSS代码: div{ width: 400px; height: 400px; position: relative; border: 1px solid #465468; } img{ position: absolute; margin: auto; top: 0; left: 0; right: 0; bottom: 0; } HTML代码: <div> <img src="mm.jpg&quo

CSS-水平垂直居中的15种方法

一.水平居中 1.文字水平居中 <div class="one"> 测试居中 </div> <style> .one{ width: 200px; height: 100px; border:1px solid red; text-align: center; } </style> 2.盒子居中 <div class="one">是盒子居中</div> <style> .one{ w

CSS子元素在父元素中水平垂直居中的几种方法

1. 水平居中(margin: auto;)子父元素宽度固定,子元素上设置 margin: auto; 子元素不能设置浮动,否则居中失效. #div1{ width: 300px; height: 300px; border: 1px solid red; } #div1 p { width: 100px; height: 100px; background-color: green; /*float: left; !*如果设置了浮动,则自动居中就会失效.*!*/ margin: 0 auto;

让一个元素水平垂直居中的几种方法

1.方法一——margin负 div.box{ weight:200px; height:400px; position:absolute; <!--设置元素的定位位置,距离上.左都为50%--> left:50%; top:50%; <!--设置元素的左外边距.上外边距为宽高的负1/2--> margin-left:-100px; margin-top:-200px; } 优点:兼容性好; 缺点:必须已知元素的宽高: 2.方法二——translate负50% div.box{ w

让div盒子相对父盒子垂直居中的几种方法

div相对于父盒子垂直居中的几种方法,之前在网上看到很多种方法,确实说的很对,也很具体,但是我感觉对于初学者来说,一目了然是最重要的,所以,我把很高深的技巧,和很复杂的css样式都剔除掉,旨在让更多人能看懂. 具体事例方法如下:    1.   其实这里的重点是,一定要给父盒子设置相对定位 <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <