都说“金三银四求职季”,本人也选择了在这个时候成为这浩浩荡荡的求职大军中的一员,几次面试下来,发现面试官都爱问的一个问题就是:“说说垂直水平居中都有哪些实现方式吧?”
      面试过程巴拉巴拉一大堆,现在终于有时间把这些知识点总结归纳起来,希望能帮自己巩固下,也希望可以帮到有需要的小伙伴~大神路过求轻喷求包涵。
     言归正传,既然说到垂直水平居中,那现在咱们就来好好归纳下:“水平居中”、“垂直居中”以及“垂直水平都居中” 到底利用css或者css3是怎么实现的。
    一、css实现水平居中
           (1)行内元素:在其父元素上设置text-align:center;
<p class="align" style="text-align: center;width: 300px;border: 1px solid #666666;"><a href="#">测试行内元素的水平居中效果</a></p>
            (2)单个块级元素(也可以运用到给一个浮动的元素设置):设置width以及margin:0 auto
<div class="margin" style="width: 200px;background: aqua;margin: 10px auto;height: 100px;"></div>
            (3)多个块级元素实现水平居中:
            ①为这些块级元素设置display:inline-block属性,其父元素设置:text-align:center     (这块的代码就不贴出了)
           ②利用flexbox布局:在这些块级元素的父元素上设置display:flex;justify-content:center
          注意:一般的浏览器设置:display:-webkit-flex;display:flex;对于IE浏览器需设置display:-ms-flexbox
css样式:
.flexbox div{width: 100px;height: 100px;background: pink;margin: 0px 20px;}
<div class="flexbox">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
二、css实现垂直居中(1)单行的行内元素 设置子元素的line-height等于父元素的height,  
<p class="line-he" style="width: 300px;height: 200px;color: #666;border: 1px solid #00FFFF;"><a style="height: 200px;line-height: 200px;">这是测试单行的行内元素的垂直居中</a></p>
 (2)多行的行内元素 :
① 针对非IE浏览器 组合使用table-cell和vertical-align:middle 
② 针对IE浏览器 利用font-size 本例中的*针对的是IE6-7浏览器(对于IE的各种hack我自己掌握的也不是很全面,要补一补这块的知识了)
<style>
.parent{
width:200px;height:200px;border:1px solid black;
line-height:200px;
display: table-cell;vertical-align:middle;
*display: block;
*font-size:175px;
*font-family:Arial;}
.iemiddle img{vertical-align: middle;}
</style>
<div class="parent">
<img src="img/HBuilder.png"/>
</div>
(3)已知子元素(块级元素例如:div)的高度和宽度 利用position:absolute(注:如果该元素的高度和宽度是动态添加的,可以利用jq动态移动margin-top以及margin-left)
①已知div的高度和宽度 :在子元素上设置position:absolute;top:50%;left:50%;(因为子元素的左右上下移动是以该元素的左上角的为顶点的,因此需要再利用margin-top和margin-left)再稍微调整;
②需要根据子元素的动态宽高进行动态移动的 利用jq
$(window).resize(function(){ 
$(".mydiv").css({ 
position: "absolute", 
left: ($(window).width() - $(".mydiv").outerWidth())/2, 
top: ($(window).height() - $(".mydiv").outerHeight())/2 
}); 
}); 
此外在页面载入时,就需要调用resize()。
$(function(){ 
$(window).resize(); 
}); 
<style>
.parent{position: relative;width: 300px;height: 300px;border: 1px solid plum;}
.chlid{width: 100px;height: 100px;background: red;position: absolute;top: 50%;margin-top: -50px;left: 50%;margin-left: -50px;}
</style>
<div class="parent">
<div class="chlid"></div>
</div>
(4)利用table实现垂直居中 table元素作为父级元素添加 align="middle":
<table class="table" style="width: 600px;height: 200px;border: 1px solid #00FFFF;">
<tr >
<td align="middle">
<div>
测试垂直居中
测试垂直居中
测试垂直居中
测试垂直居中 
</div>
</td> 
</tr>
</table>
三、css实现垂直水平居中
      (1)单行的行内元素  
        ① 图片元素   在父元素上设置  display:table-cell(重点) text-align:center  vertical-align:middle
        ②文字  在父元素上设置text-align:center 自身设置line-height:为父元素的高度  height:父元素的高度
        ③图片与文字都有  父元素设置display:table-cell  vertical-align:center;text-algin:center;
        
      (2) 块级元素
          ①单个块级元素(绝对定位+nativemargin) :父元素设置position:relative  自身设置position:absolute;top:50%;left:50%;margin-top:-(为自身的高度的一般;margin-left:-(为自身宽度的一半) ;

四、利用css3实现垂直水平居中
      (1)css3实现子元素不定宽高水平垂直居中
      关键点:  1.justify-content:center;//让子元素水平居中
 2. align-items:center;//让子元素垂直居中
 3. display:-webkit-flex;
       flex布局实现水平居中    ①(适用于块级元素与行内元素的单个元素或多个)实现水平居中 :在父元素上设置 display:flex  justify-content:center
       
      (2)利用transform实现垂直水平居中
       关键点:1.transform:translate(-50%,-50%)
         2.position:relative;top:50%;left:50%;
<style> 
.box{
display: flex;
justify-content: center;
background: #0099cc
}
.box h1{
color: #FFF;
font-size:.5rem;
border: 1px dashed #fff;
padding: 1rem;
font-weight: normal;
}

.box1{
display: flex;
justify-content: center;
width: 100%;
background: #0099cc;
margin-top: 2rem;
}
.box1 h1{
font-size: 1rem;
padding: 1rem;
border: 1px dashed #FFF;
color: #FFF;
font-weight: normal;
}

.box2{
display: flex;
width: 650px;
height: 15rem;
align-items:center; 
background: #0099cc;
margin-top:20px ;
}
.box2 h1{
font-size: 1rem;
padding: 1rem;
border: 1px dashed #FFF;
color: #FFF
}
.parent {
width: 200px;
height: 200px;
background-color: black;
}
.child {
position: relative;
height: 100px;
width: 100px;
top: 50%;
left: 50%;
background-color:red; 
-webkit-transform: translate(-50%, -50%) ;
-moz-transform: translate(-50%, -50%) ;
-ms-transform: translate(-50%, -50%) ;
-o-transform: translate(-50%, -50%) ;
transform: translate(-50%, -50%) ;
}
</style>
<div class="box">
<h1>justify-content属性实现单个元素水平居中</h1> 
</div>
<div class="box1">
<h1>justify-content实现多个元素水平居中</h1> 
<h1>justify-content实现多个元素水平居中</h1> 
<h1>justify-content实现多个元素水平居中</h1>
</div> <div class="box2"> <h1> align-items实现元素垂直居中</h1> <h1>align-items实现元素垂直居中</h1>
<h1>align-items实现元素垂直居中</h1>
</div> <div class="parent"> <div class="child">利用css3实现垂直水平居中</div> </div>

css(css3)实现垂直水平居中的那些事相关推荐

  1. CSS实现DIV垂直水平居中

    CSS实现DIV垂直水平居中 在页面设计中,很多地方都需要div的垂直水平居中,在前端开篇的学习中,也是使用较多的地方,所以我整理了三种方法帮助大家去解决问题,代码可直接使用,仅供参考学习. 方法 方 ...

  2. html body不定宽居中,纯CSS实现元素垂直水平居中-非固定宽度

    这里不讨论行内元素的居中!! 盒子垂直居中+水平居中的需求时经常遇到的,看到的较多实现逻辑是固定content-box的宽度,通过让margin-left和margin-top等于宽或高的负一半来实现 ...

  3. css 怎么设置盒子水平居中,用一段css实现盒子垂直水平居中方法(8种)-案例

    效果图 - 在线案例 css3中的属性:transform: translate(x,y) .box { width: 100px; height: 100px; background: orange ...

  4. 关于css设置元素垂直水平居中的问题

    第一种: 利用定位属性实现,但需要知道元素的宽高 <div class="box"></div><style>.box{weight:200px ...

  5. CSS里各种垂直水平居中方式的基础用法

    首先,依旧是概念.介绍一下行内元素和块级元素,这个很重要,因为有的属性只能用于块元素,而有的正好相反,在一定的情况下,它们也可以相互转换,比如用display来进行设置. 行内元素(又叫内联元素inl ...

  6. css图片如何垂直水平居中设置

    css设置图片垂直居中的方法: 一.使用flex实现垂直居中 利用css flex实现垂直居中,有些浏览器可能不兼容flex. 首先要创建一个包裹着图片的div元素,然后定义基础属性. 以下图片img ...

  7. html元素垂直水平居中显示,关于css:html-元素垂直水平居中

    一. 不定宽高元素程度垂直居中 1.transform: translate() 程度垂直居中 .wrapper{ background-color: #eee; height:200px; } .c ...

  8. css面试题实现元素垂直水平居中-包括未知宽高的元素五种回答

    css实现元素垂直水平居中-包括未知宽高的元素 这个一道很经典的面试题,做项目中也常会出现这样的需求. 现在我就用几种比较常用的方法.兼容性也列出来. 第一种已知宽高(定位加负边距解决)兼容到IE6 ...

  9. CSS 基础知识之垂直水平居中

    最近想转行前端 面试时被教育了 ,关于css设置水平垂直居中这个应该是基础的基础了 回答不上来确实还是有点尴尬的 我第一时间就想到了 最简单的 针对 div设置 margin 0 auto ; 实操一 ...

最新文章

  1. 【手把手带你学nRF52832/nRF52840 · 开发环境搭建】
  2. spring 与 guice 的区别好玩的好法(转)
  3. android 4.4 下拉菜单 透明,4.2状态栏,下拉,全局透明教程
  4. linux目录结构及作用详图
  5. Android笔记 fragment的向下兼容
  6. python编写赛车_python udp 协议发送接收秒速赛车平台搭建数据
  7. python select
  8. 美国 AI 博士爆料:掌握这9个要点,赚钱不再艰难
  9. python内置函数zip
  10. 因子和,因子数,1到n的因子和,1到n的因子数
  11. 万事俱备只欠东风 区块链数字资产一定是财富的未来!
  12. 验证volatile可见性之诡异事件
  13. 量化7年1000万知与行,回测量化7年如果只每月定投5.4万到沪深300指数基金,能否实现7年1000万
  14. 原装MTL安全栅MTL7742
  15. Wangle中EchoClient分析
  16. 802.11 NDP Sounding
  17. 为快乐工作而生的协同办公管理平台——IBOS!
  18. 考研数学-三角函数与反三角函数图像
  19. 看这篇就够了!能源企业数字化升级,推动绿色低碳发展
  20. uniapp发布h5和小程序样式或者一些其他问题

热门文章

  1. 生日祝福卡片 html,生日祝福卡片怎么写
  2. 探讨使用UML设计机器学习特征工程与深度学习建模等大数据分析软件
  3. [论文阅读] (10)基于溯源图的APT攻击检测安全顶会总结
  4. JavaScript 正则表达式控制文本框输入<GrootBaby>
  5. WinSCP之Windows与Windows之间传输文件
  6. 【SWAT】SWAT中预定义河网及流域
  7. 电脑桌面云便签怎么更改便签内容字体?
  8. 变频器恒压供水ABB变频器恒压供水触摸屏通讯程序
  9. Java8 之熟透 Lambda 表达式
  10. Codeforces Round #538 (Div. 2)