div自适应水平垂直居中的方法
1.Flexbox布局:
display:flex;
justify-content:center;
align-items:center;
width:100%;
2.Bootstrap栅格布局
一共12格,分成3块,每块占4列。居中的内容写在中间的那一块。
3.圣杯/双飞翼(水平自适应居中的基础上)
第一步:居中的div写在最前面,width:100%撑满一整行。三个div都向左浮动float:left;
<div class="main">Main</div>
<div class="left">Left</div>
<div class="right">Right</div>
第二步:让三个div显示在同一行
div.left { marin-left:100%}
div.right{ marin-left:自身的宽度}
第三步:让中间的div能够自适应
圣杯布局的做法:
div.main{
padding-left:左div的宽度;
padding-right:右div的宽度;
}
双飞翼布局的做法:
在div.main内部再添加一个div.mc:
然后设置div.mc的margin值
margin-left:左div的宽度;
margin-right:右div的宽度;
现在,水平居中已经实现了;
第四步:垂直居中

在div.left,div.right,div.main外面再加一个div.wrap,
然后对div.con设置 display:table,对div.wrap设置
display:table-cell;
vertical-align:middle;
4.relative/positive + top/left+tarnsform
父元素:
position:relative
子元素:
position:absolute;
top:50%;
left:50%;
transform: translate(-50%, -50%);
transform: translate(-50%, -50%);意思是向右移动自身50%的宽度,向下移动自身50%的高度。
为什么有了top:50%;left:50%还要 transform: translate(-50%, -50%);
最初:

加了top:50%;left:50%后:

还需要再往左、往上挪一挪:

5.relative/positive + top/left+left + margin
和方法4一样,用top和left挪到中间:

这之后用margin-left和margin-right进行处理:
先给div.child设置宽度,然后设置margin:

6.用top,left,bottom,right

计算公式:
top + div.child 的 height +bottom = div.parent 的 height
left + div.child 的 width +right = div.parent 的 width
如果子元素是行内元素,如<p>,要注意一开始就要去掉margin和padding
方法4、5、6有的demo,详见 github
div自适应水平垂直居中的方法的更多相关文章
- div盒子水平垂直居中的方法推荐
父盒子是position:relative 方法一:(宽高确定) div绝对定位水平垂直居中[margin 负间距], 方法二: (宽高确定) div绝对定位水平垂直居中[margin:auto实现绝 ...
- div盒子水平垂直居中的方法
这个问题比较老,方法比较多,各有优劣,着情使用. 一.盒子没有固定的宽和高 方案1.Transforms 变形 这是最简单的方法,不仅能实现绝对居中同样的效果,也支持联合可变高度方式使用.内容块定义t ...
- DIV文字水平垂直居中的方法
水平居中 text-align:center 垂直居中(vertical-align) vertical-align:middle; vertical-align时而没效果 然而真实使用的时候,我们会 ...
- div盒子水平垂直居中方法
文章转载自:div盒子水平垂直居中的方法 - 雪明瑶 这个问题比较老,方法比较多,各有优劣,着情使用. 一.盒子没有固定的宽和高 方案1.Transforms 变形 这是最简单的方法,不仅能实现绝对居 ...
- 一个div在另一个div中水平垂直的方法
html <div id="main"> <div id="box"> 一个div在另一个div中垂直居中实现方法 </div&g ...
- 53.CSS---CSS水平垂直居中常见方法总结
CSS水平垂直居中常见方法总结 1.元素水平居中 当然最好使的是: margin: 0 auto; 居中不好使的原因: 1.元素没有设置宽度,没有宽度怎么居中嘛! 2.设置了宽度依然不好使,你设置的是 ...
- Div实现水平垂直居中
在实际应用中很多地方不仅要求实现元素的水平居中或者垂直居中效果,还可能会在水平方向和垂直方向上都要实现居中效果,下面就简单介绍几种元素水平垂直居中的方法(注:不同的方法会存在一些优缺点以及兼容性问题) ...
- css3 flex 详解,可以实现div内容水平垂直居中
先说一下flex一系列属性: 一.flex-direction: (元素排列方向) ※ flex-direction:row (横向从左到右排列==左对齐) ※ flex-direction:row- ...
- css的div动态水平垂直居中
div动态水平垂直居中,思路如下: (1)先定位.如果相对于距离最近的父元素,用absolute:如果相对于body,用fixed. (2)然后,top和left都设为50%. (3)要居中的di ...
随机推荐
- rabbitMQ windows 安装 入门(转)
rabbitMQ windows 安装 入门 1.下载,其实erlang不装也是可以的 下载 rabbitMQ :http://www.rabbitmq.com/download.html,安装r ...
- 移动web开发ajax缓存操作
移动web开发过程中网速是必须考虑的一个因素,所以一般是尽可能的在本地存储数据,避免弱网环境下请求数据失败导致页面没有内容的情况. 前后端分离是web开发的必然趋势,在PC端我们有时甚至为了避免aja ...
- HTML DOM insertBefore() 方法 问题
写即时通讯时,每次新增的回话插到原有子节点的前面. 但是出现了以下报错的情况 如图: MDC: var insertedElement = parentElement.insertBefore(new ...
- 日常捕获的野生知识 - javascript 与 类
javascript 并不提供类这样方便实用的面向对象类型,今天学习到了,直接上代码: <!DOCTYPE html> <html lang="en"> & ...
- 用 State Pattern 来实现一个简单的 状态机
首先要理解 State Pattern 模式. http://www.dofactory.com/net/state-design-pattern Definition Allow an object ...
- 26_线程池_ThreadPoolExecutor
[ThreadPoolExecutor简述] 无论是Executors类的newFixedThreadPool().newSingleThreadExecutor(),还是newCachedThrea ...
- 21_ConcurrentHashMap和ConcurrentSkipListMap
[简述] ConcurrentHashMap内部使用段(Segment)来表示这些不用的部分,每个段其实就是一个小的HashTable,他们有自己的锁,只要多个修改操作发生在不同的段上,他们就可以并发 ...
- matlab练习程序(三角形外接圆)
三角形两边的垂直平分线就能确定外接圆. 结果如下: matlab代码如下: clear all;close all;clc; p=rand(,); %(x,y) cen1=(p(,:)+p(,:))/ ...
- js漂浮广告实现代码(合集经典)
<html> <head> <title>漂浮广告</title> <body> <div id="codefans_net ...
- 有时间,可以研究哈redis的源代码
1 2 3 4 留位,以后自己用!