垂直和水平居中方法小结

水平居中

行内元素

text-align:center;

块元素

1.定宽块元素水平居中

 margin:0 auto;

2.不定宽块元素水平居中

方法一:利用浮动的包裹性和百分比相对定位

<div class='outer'><div class='inner'></div>
</div>

我们想要使inner(不定宽)水平居中于outer,能够这么做:
先在inner外面再加一层div:

<div class='outer'><div class='wrap'><div class='inner'></div></div>
</div>

起初盒子是这种:

CSS这么写:

.wrap{float:left;position:absolute;left:50%;
}
.inner{position:relative;  //为啥用absolute没用啊left:-50%;
}

wrap设置为float的原因是形成包裹。把inner包裹住。此时浮动元素wrap的宽和高都是有内部元素inner撑开的。不再是占满整行。

也就是说wrap的宽和inner的宽相等。

position:relative设置百分比意思是相对于父元素宽度的百分之几。此时,wrap的左边缘距离outer的左边缘是outer.width的一半,也就是说wrap的左边缘在outer的中线上。

可是我们想要inner的中线和outer的中线重叠,那么就须要inner再往左移动它自身宽度的一半,可是它自身的宽度不知道啊,这就是为什么须要再加一层wrap且wrap要浮动(包裹)的原因。可依据“relative设置百分比意思是相对于父元素宽度的百分之几”这个规则。

因为wrap的宽度和inner的相等,50%就是inner的宽度的50%。

这种方法也有缺点。因为wrap浮动了。应该清除浮动。

方法二:将要居中的元素放到table的一个td标签中
原因是table不是块元素。它不会占满整行,其宽度是由内容来撑开的。此时能够设置table的

margin:0 auto;`

就可以。
缺点是添加了无语义标签。

方法三 改变块元素属性为inline或者inline-block
这样其父元素就能够使用text-align:center居中内部元素

垂直居中

单行文本

设置父元素的height和line-height相等。

父元素高度确定的多行文本、图片、块元素

方法一:
将要垂直居中的元素放到table的td中,然后对td设置:

verticle-align:middle;

事实上默认就是这样。verticle-align仅仅适用于 inline level, inline-block level 及 table-cells 元素上。

方法二:
在chrome、firefox 及 IE8 以上的浏览器下能够设置块级元素的 display 为 table-cell,激活 vertical-align 属性。但注意 IE6、7 并不支持这个样式。能够不用table-row这一层,直接外层table。内层table-cell就能实现内层元素中的内容垂直居中。比如以下的toCenter想要在box中垂直居中。须要设置box为table-cell。这样就能够激活其vertical-align:


<div class="box"><div class="toCenter">我想要在父元素中垂直居中显示</div>
</div>.box{display: table-cell;width:200px;height:200px;background: pink;vertical-align: middle;}
.toCenter{width:100px;height:100px;background: purple;}

缺点:ie6和ie7并不支持display:table-cell。

方法三:要居中的元素高度确定
1.利用定位

<div class="outer"><div class="inner"></div>
</div>

CSS代码为:

.outer{background:#FFCCCC;border:1px solid #000;position:relative;  
}.inner{width:100px;height:100px;background:#CCFF66;position:absolute;top:50%;  //父元素高度的一半margin-top:-50px;  //上移自身高度的一半             
}

为啥垂直居中不能够像水平居中方法一一样啊?

.inner{position:relative; top:-50%;
}

没实用?

??

2.在要居中元素之前加入一个浮动块,再设置该块的margin-bottom

<div class="box"><div class="floater"></div><div class="toCenter">我想要在父元素中垂直居中显示</div>
</div>.box{width:500px;height:500px;}
.toCenter{width:100px;height:100px;position: relative;clear: both} //清除浮动
.floater{height: 50%;float:left;margin-bottom: -50px}//下边距为 -要居中元素高度的一半

方法四 父元素的上下padding值设为一样
当父元素的高度未设置时,将父元素的上下padding值设置为一样就能够让其内部的块元素垂直方向上看上去居中了。

方法五

.box{position:relative;}
.toCenter{position:absolute; top:0; bottom:0; left:0; right:0; margin:auto; height:240px; width:70%; 
}

方法六 使用box属性
父元素设置:

display:box;
box-align:center;  //将剩余空间均分到子元素上下两側

參考资料:
未知宽度水平居中的几种方法
CSS实现垂直居中的5种方法

待看资料: CSS 元素垂直居中的 6种方法

转载于:https://www.cnblogs.com/wzzkaifa/p/7197144.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL命令行导出数据库

MySQL命令行导出数据库&#xff1a; 1&#xff0c;进入MySQL目录下的bin文件夹&#xff1a;cd MySQL中到bin文件夹的目录 如我输入的命令行&#xff1a;cd C:\Program Files\MySQL\MySQL Server 4.1\bin (或者直接将windows的环境变量path中添加该目录) 2&#xff0c;导出数据库…

在51单片机上使用递归的注意事项

目录问题应对措施原理普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 问题 在Keil C51中直接使用递归会报如下警告&#xff1a; recursive call to non-reentrant function 为了提高运行效率&#xff0c;C51采用静态分配局部变量…

ASP.Net 获取服务器信息

1: Response.Write("服务器机器名&#xff1a;" Server.MachineName); 2: Response.Write("<br/>");3: Response.Write("服务器IP地址&#xff1a;" Request.ServerVariables["LOCAL_ADDR"]);4: Response.Write("<br/…

POJ 2456 - Aggressive cows(二分)

Description Farmer John has built a new long barn, with N (2 < N < 100,000) stalls. The stalls are located along a straight line at positions x1,…,xN (0 < xi < 1,000,000,000). His C (2 < C < N) cows don’t like this barn layout and becom…

〖Android〗存在多个Android设备时,使用Shell脚本选择一个Android设备

Shell脚本&#xff1a; #!/bin/bash devices( $(adb devices|grep device$|awk {print $1}|xargs echo) )case ${#devices[]} in0 )echo "cant found a android device!";;1 )serial$devices;;* )select serial in ${devices[]}; dobreak;done;; esacif [[ -z $seria…

C盘瘦身:QQ文件的清理及Group2文件夹

目录问题解决方法Windows 10 20H2 TIM 问题 最近C盘被撑爆了 使用SpaceSniffer一扫发现QQ的文件中有个Group2文件夹占了我17G 但使用QQ自带的个人文件夹清理却扫不到&#xff0c;据说直接删除会丢失近期所有群聊的聊天图片 解决方法 在这个地方找到了大神fsz1987给出的解…

分享20个Android游戏源代码。以后看看。

分享20个Android游戏源码&#xff0c;希望大家喜欢哈&#xff01;http://www.apkbus.com/android-21834-1-1.htmlAndroid 疯狂足球游戏源码http://www.apkbus.com/android-20986-1-1.htmlandroid源码捏苍蝇游戏源码http://www.apkbus.com/android-20987-1-1.htmlAndroid游戏源码…

【.Net】C# 将Access中时间段条件查询的数据添加到ListView中

一、让ListView控件显示表头的方法 在窗体中添加ListView 空间&#xff0c;其属性中设置&#xff1a;View属性设置为&#xff1a;Detail&#xff0c;Columns集合中添加表头中的文字。 二、利用代码给ListView添加Item。 首先&#xff0c;ListView的Item属性包括Items和SubItems…

获取ArcGIS安装路径

在要素类进行符号化时&#xff0c;使用axSymbologyControl需要安装路径下的Style文件路径&#xff0c;在AE9.3VS2008中是这样的&#xff1a; Microsoft.Win32.RegistryKey regKey Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\ESRI\\CoreRuntime",…

【51单片机快速入门指南】3.2:定时器/计数器

目录快速使用硬知识传统51单片机 CPU 时序的有关知识&#xff08;12T&#xff09;51 单片机定时器原理51 单片机定时/计数器结构定时器/计数器0/1定时器/计数器0和1的相关寄存器控制寄存器工作模式寄存器工作模式模式0(13位定时器/计数器)模式1(16位定时器/计数器)模式2(8位自动…

EBS并发管理器请求汇总(按照并发消耗时间,等待时间,平均等待事件等汇总)...

此数据集用于确定正在使用中并发管理器&#xff0c;并可与实际的在启动时分配的并发管理器。而且考虑完成状态为 正常/警告 的请求。 select q.concurrent_queue_name,count(*) cnt,sum(r.actual_completion_date - r.actual_start_date) * 24 elapsed,avg(r.actual_completion…

Linux内核RCU(Read Copy Update)锁简析

在非常早曾经&#xff0c;大概是2009年的时候。写过一篇关于Linux RCU锁的文章《RCU锁在linux内核的演变》&#xff0c;如今我承认。那个时候我尽管懂了RCU锁&#xff0c;可是我没有能力用一种非常easy的描写叙述把Linux的实现给展示出来&#xff0c;有道是你能给别人用你自己的…

sublime_text 3 注册序列号

为什么80%的码农都做不了架构师&#xff1f;>>> ----- BEGIN LICENSE ---- Andrew Weber Single User License EA7E-855605 813A03DD 5E4AD9E6 6C0EEB94 BC99798F 942194A6 02396E98 E62C9979 4BB979FE 91424C9D A45400BF F6747D88 2FB88078 90F5CC94 1CDC92DC 845…

【51单片机快速入门指南】3.2.1:PWM、呼吸灯与舵机

目录硬知识PWM&#xff08;脉冲宽度调制&#xff09;基本原理脉宽调制分类上机实战呼吸灯main.c中断服务函数修改TIM.c中的中断服务函数效果开发板电路分析舵机控制舵机控制方法main.c中断服务函数修改中断服务函数舵机测试程序main.c效果普中51-单核-A2 STC89C52 Keil uVisio…

Oracle常用查看表结构命令

转载自:http://blog.520591.com/1301 获取表&#xff1a; select table_name from user_tables; //当前用户的表 select table_name from all_tables; //所有用户的表 select table_name from dba_tables; //包括系统表 select table_name from dba_tables where owner’用户名…

Centos7 安装oracle数据库

参考的内容&#xff1a; http://docs.oracle.com/cd/E11882_01/install.112/e24325/toc.htm#CHDCBCJF http://www.cnblogs.com/yingsong/p/6031452.html http://www.cnblogs.com/yingsong/p/6031235.html 步骤主要是有&#xff1a; 1、安装依赖的 软件包 2、创建用户和目录&…

ABAP常见面试问题

ABAP常见面试问题 1. What is the typical structure of an ABAP program? 2. What are field symbols and field groups.? Have you used "component idx of structure" clause with field groups? 3. What should be the approach for writing a BDC program? …

车牌识别之车牌定位(方案总结)

尊敬原作者&#xff0c;转自:http://blog.csdn.net/hqw7286/article/details/5810353 一直研究车牌识别算法&#xff0c;主要关注车牌定位和字符识别。我想分享一下我对车牌定位的看法。 从根本上讲&#xff0c;车牌定位的算法分为三类&#xff0c;一类是基于边缘的&#xff0c…

Proteus仿真单片机:51单片机的仿真

目录新建工程调试在Proteus中编写程序导入Keil生成的Hex程序Windows 10 20H2 Proteus 8 Frofessional v8.9 SP2 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 新建工程 设置名称和路径 下一步 下一步 选择系列、控制器和编译器 双击MCU设置主频 …

CentOS多网卡重命名配置

CentOS多网卡重命名配置在CentOS7中我安装了3块网卡&#xff0c;但是名字是enoxxxxx的格式&#xff0c;让我这个有强迫症的***座很是不爽&#xff0c;以下是我配置网卡并且重命名为ethx的详细步骤前提工作要做好&#xff1a;1.查看网卡UUID# nmcli con show名称 UUID …