美文网首页
css垂直水平居中的方法

css垂直水平居中的方法

作者: jack_rofer | 来源:发表于2024-02-24 15:44 被阅读0次

总结七种实现html/CSS垂直水平居中的办法
第一种:flex布局(不定宽高)-- (ie11)【推荐-兼容性好些】
第二种:grid布局(不定宽高)-- (不支持ie)
第三种:table-cell布局(不定宽高) -- 兼容性好 (ie7)
第四种:定位+margin:auto(不定宽高) -- 兼容性好
第五种:transfrom(不定宽高);--兼容性好(ie9+)
第六种:定位+calc(固定宽高);-- 兼容性好
第七种:定位+margin(固定宽高);-- 兼容性好

温馨提示:所有代码在文末,可直接复制查看效果
公共样式代码
.fatherBox{
  width: 200px;
  height: 200px;
  border: 1px solid black;
}
.childBox{
  width: 150px;
  height: 150px;
  border: 1px solid red;
}
第一种.flex布局(不定宽高)

html代码

   <div class="fatherBox flex-father">
      <div class="childBox">
flex
      </div>
   </div>

css代码


.flex-father{
  display: flex;
  justify-content: center;
  align-items: center;
}

效果图


WechatIMG56.jpg
第二种:grid布局(不定宽高)

html代码

   <div class="fatherBox grid-father">
      <div class="childBox">
grid
      </div>
   </div>

css代码

.grid-father{
   display: grid;
  justify-content: center;
  align-items: center;
}
效果图 WechatIMG57.jpg
第三种:table-cell布局(不定宽高) - 兼容性好 (ie7)

原理:在父元素设置text-align和vertical-align,并将父元素设置为table-cell元素,子元素设置为inline-block元素

html代码

   <div class="fatherBox table-father">
      <div class="childBox table-child" > 
table-cell
      </div>
   </div>

css代码

.table-father{
  display: table-cell;
  vertical-align: middle;
  text-align: center;
}
.table-child{
   display: inline-block;

}
效果图 WechatIMG58.jpg
第四种:定位+margin:auto(不定宽高)

html代码

   <div class="fatherBox auto-father">
      <div class="childBox auto-child" > 
auto
      </div>
   </div>

css代码

.auto-father{
   position: relative;
}
.auto-child{
   position: absolute;
   left: 0;
   top: 0;
   right: 0;
   bottom: 0;
   margin: auto;
}
效果图 WechatIMG60.jpg
第五种:transfrom(不定宽高)

html代码

   <div class="fatherBox transform-father">
      <div class="childBox transform-child" > 
transform
      </div>
   </div>

css代码

.transform-father{
   position: relative;

}
.transform-child{
   position: absolute;
   left: 50%;
   top: 50%;
   transform: translate(-50%, -50%);

}
效果图 WechatIMG59.jpg
第六种:定位+calc(固定宽高)

html代码

   <div class="fatherBox calc-father">
      <div class="childBox calc-child" > 
calc
      </div>
   </div>

css代码

.calc-father{
   position: relative;
}
.calc-child{
   position: absolute;
   top: calc(50% - 75px);
   left: calc(50% - 75px);
}
效果图 WechatIMG62.jpg
第七种:定位+margin(固定宽高)

html代码

   <div class="fatherBox margin-father">
      <div class="childBox margin-child" > 
margin
      </div>
   </div>

css代码

.margin-father{
  position: relative;
}
.margin-child{
   position: absolute;
   left: 50%;
   top: 50%;
   margin-top: -75px;
   margin-left: -75px;

}
效果图 WechatIMG61.jpg

整体代码


<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>css垂直水平居中</title>
</head>
<style>
//共公样式、、、
.fatherBox{
  width: 200px;
  height: 200px;
  border: 1px solid black;
}
.childBox{
  width: 150px;
  height: 150px;
  border: 1px solid red;
}
//、、、

.flex-father{
  display: flex;
  justify-content: center;
  align-items: center;
}
.grid-father{
   display: grid;
  justify-content: center;
  align-items: center;
}
.table-father{
  display: table-cell;
  vertical-align: middle;
  text-align: center;
}
.table-child{
   display: inline-block;

}
.transform-father{
   position: relative;

}
.transform-child{
   position: absolute;
   left: 50%;
   top: 50%;
   transform: translate(-50%, -50%);
}
.margin-father{
  position: relative;
}
.margin-child{
   position: absolute;
   left: 50%;
   top: 50%;
   margin-top: -75px;
   margin-left: -75px;

}
.auto-father{
   position: relative;
}
.auto-child{
   position: absolute;
   left: 0;
   top: 0;
   right: 0;
   bottom: 0;
   margin: auto;
}
.calc-father{
   position: relative;
}
.calc-child{
   position: absolute;
   top: calc(50% - 75px);
   left: calc(50% - 75px);
}
</style>

<body>
   <div>css垂直水平居中</div>
   <div class="fatherBox flex-father">
      <div class="childBox">
flex
      </div>
   </div>
   <br/>
   <div class="fatherBox grid-father">
      <div class="childBox">
grid
      </div>
   </div>
   <br/>
   <div class="fatherBox table-father">
      <div class="childBox table-child" > 
table-cell
      </div>
   </div>
   <br/>
   <div class="fatherBox transform-father">
      <div class="childBox transform-child" > 
transform
      </div>
   </div>
   <br/>
   <div class="fatherBox auto-father">
      <div class="childBox auto-child" > 
auto
      </div>
   </div>
   <br/>
   <div class="fatherBox margin-father">
      <div class="childBox margin-child" > 
margin
      </div>
   </div>
   <br/>
   <div class="fatherBox calc-father">
      <div class="childBox calc-child" > 
calc
      </div>
   </div>

</body>
</html>

相关文章

网友评论

      本文标题:css垂直水平居中的方法

      本文链接:https://www.haomeiwen.com/subject/vvkoadtx.html