方法一 :table、cell-table

思路:显示设置父元素为:table,子元素为:cell-table,这样就可以使用vertical-align: center,实现水平居中
优点:父元素(parent)可以动态的改变高度(table元素的特性)
缺点:IE8以下不支持

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>未知宽高元素水平垂直居中</title>
</head>
<style>.parent1{display: table;height:300px;width: 300px;background-color: #FD0C70;
}
.parent1 .child{display: table-cell;vertical-align: middle;text-align: center;color: #fff;font-size: 16px;
}</style>
<body><div class="parent1"><div class="child">hello world-1</div></div>
</body>
</html>

方法二:

思路:使用一个空标签span设置他的vertical-align基准线为中间,并且让他为inline-block,宽度为0
缺点:多了一个没用的空标签,display:inline-blockIE 6 7是不支持的(添加上:_zoom1;*display:inline)。
当然也可以使用伪元素来代替span标签,不过IE支持也不好,但这是后话了

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>未知宽高元素水平垂直居中</title>
</head>
<style>
.parent2{height:300px;width: 300px;text-align: center;background: #FD0C70;
}
.parent2 span{display: inline-block;;width: 0;height: 100%;vertical-align: middle;zoom: 1;/*BFC*/*display: inline;
}
.parent2 .child{display: inline-block;color: #fff;zoom: 1;/*BFC*/*display: inline;
}</style>
<body><div class="parent1"><div class="child">hello world-1</div></div><div class="parent2"><span></span><div class="child">hello world-2</div></div>
</body>
</html>

方法三:绝对定位

思路:子元素绝对定位,距离顶部 50%,左边50%,然后使用css3 transform:translate(-50%; -50%)
优点:高大上,可以在webkit内核的浏览器中使用
缺点:不支持IE9以下不支持transform属性

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>未知宽高元素水平垂直居中</title>
</head>
<style>
.parent3{position: relative;height:300px;width: 300px;background: #FD0C70;
}
.parent3 .child{position: absolute;top: 50%;left: 50%;color: #fff;transform: translate(-50%, -50%);
}
</style>
<body>
<div class="parent3"><div class="child">hello world-3</div></div>
</body>
</html>

方法四:弹性盒子flex

思路:使用css3 flex布局
优点:简单 快捷
缺点:兼容不好吧,详情见:http://caniuse.com/#search=flex

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>未知宽高元素水平垂直居中</title>
</head>
<style>
.parent4{display: flex;justify-content: center;align-items: center;width: 300px;height:300px;background: #FD0C70;
}
.parent4 .child{color:#fff;
}
</style>
<body>div> <div class="parent4"><div class="child">hello world-4</div></div>
</body>
</html>

更多专业前端知识,请上 【猿2048】www.mk2048.com

CSS未知宽高元素水平垂直居中相关推荐

  1. 未知宽高div水平垂直居中的3种方法

    方法一 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8& ...

  2. 未知宽高盒子水平垂直居中方法

    1.用css3提供的transform属性 上代码 .wrap{width: 400px;height: 400px;background-color: red;position: relative; ...

  3. 未知宽高元素的水平垂直居中

    大致有4种方法实现:         一.table布局(display:table)         二.绝对布局(position:absolute)+translate         三.转化 ...

  4. CSS中实现div元素水平垂直居中

    常用7种实现水平垂直居中方法: 1.行内元素水平垂直居中 2.绝对定位 + margin 3.绝对定位+margin:auto 4.绝对定位 + translate 5.flex 布局 6.flex+ ...

  5. 已知/未知宽高的浮动元素水平居中对齐 和 图片水平垂直居中对齐

    一.已知宽高的浮动元素水平垂直居中对齐 效果: 样式CSS: 1 <style> 2 .parent{ 3 position:relative; 4 border:2px solid #0 ...

  6. CSS Transform让百分比宽高布局元素水平垂直居中

    CSS Transform让百分比宽高布局元素水平垂直居中 很早以前了解过当元素是固定宽度和高度的时候,水平垂直高居中的方法可以设置margin的负值来使其居中,这个负值是元素的宽和高的一半,比如宽高 ...

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

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

  8. CSS块元素水平垂直居中的实现技巧

    针对之前遇到过的一些特殊样式的实现,我今天做个总结,目的有二:一是将这些方法记录下来,以便将来需要用到时查找使用.二为将这些大神们智慧的结晶发扬光大,让广大前端程序猿们能够少走弯路.此贴为更新帖,以后 ...

  9. 图片 + 未知宽高 + 垂直居中

    图片 + 未知宽高 + 垂直居中 第一种: table-cell / inline-block + vertical-align 条件: 容器宽高受图片默认宽高影响 html结构: <div&g ...

最新文章

  1. debian预装环境软件的设置
  2. 牛客第四次多校Maximum Mode
  3. 《springcloud超级入门》Spring Boot简介《五》
  4. 全互联+杜比影音ThinkPad X1 Carbon 2019全新上市
  5. Python序列之字符串
  6. H.264简单码流分析
  7. 利用Hibernate进行数据库的增删改查
  8. MySQL-快速入门(9)视图
  9. java1.8 ojdbc14.jar_ojdbc14_g.jar与ojdbc14.jar区别
  10. PADS2007pads9.2使用技巧
  11. 归并排序(MergeSort)
  12. OLED屏显和汉字点阵编码原理
  13. php mysql知识总结_Mysql数据库知识总结(看资料总结出来的)
  14. python爬虫入门案例day06:QianTu
  15. openwrt路由器安装Transmission软件包与web控制台(中文界面)
  16. 猴子吃桃问题之暴力解法
  17. K线图|K线图分析法简介 |K线图怎么看
  18. STL——SET操作与并交差
  19. 六边形格子地图的基本实现
  20. 2000-2020全要素生产率OP法+LP法+OLS和固定效应法三种方法合集含原始数据和计算过程Stata代码

热门文章

  1. 一种伪随机交织器的生成方法
  2. 荣耀v10Android9新功能,荣耀10、荣耀V10开启安卓9.0内测 日常领跑行业
  3. linux权限体系有哪些角色,详解Linux下系统权限
  4. html页面js遍历listview,javascript实现的listview效果
  5. Altium Designer导入pcb原件之后都是绿的
  6. python tkinter Listbox用法
  7. git冲突Please move or remove them before you can merge
  8. 连载《一个程序猿的生命周期》-2.城市校园生活
  9. 简单代码生成器原理剖析(一)
  10. JPDL3.1规范手册