【前端】这可能是你看过最全的css居中解决方案了~
1.水平居中:行内元素解决方案
适用元素:文字,链接,及其其它inline或者inline-*类型元素(inline-block,inline-table,inline-flex)
html部分代码:
    <div>文字元素</div>
    <nav>
  <a href="">链接元素01</a>
  <a href="">链接元素02</a>
  <a href="">链接元素03</a>
    </nav>
css部分代码:
    nav, div{
    text-align: center;
        }
/*
解决方案:
将inline元素包裹在一个display属性为block的父级元素中(如,div, nav)
设置这个父级元素属性: text-align:center即可
*/
/* 现在大家可以看到nav和div中的子元素水平居中了 */
2. 水平居中:块状元素解决方案
对于块状元素(display:block)来说,我们需要将它的左右外边距(即,margin-left,margin-right)设置为auto,即可实现块状元素的居中,如下:
 html部分代码:
    <div class="center">
  水平居中的块状元素
    </div>
    <p class="center">水平居中的块状元素</p>
 css部分代码:
/*
注意:需要居中的块元素需要有固定的宽度,否则无法实现居中,因为占据100%宽度
*/
div,p {
  width: 200px; /* 这里需要设置元素宽度 */
  height: 150px;
  background: #222;
  color: #FFF;
}
/* 定义居中关键属性 */
.center{
  /* 这里可以设置顶端外边距 */
  margin: 10px auto;
}
/* 现在大家可以看到居中效果的块状元素了 */
3.水平居中:多个块状元素解决方案
如果页面里有多个块状元素需要水平排列居中,可以将元素的display属性设置为inline-block,并且把父元素的text-align属性设置为center即可实现。
 html部分代码:
    <div class="center">
    水平居中的块状元素
    </div>
    <div class="center">
    水平居中的块状元素
    </div>
<!--
现在大家可以看到以上两个块状元素水平横向排列并且居中
提示:如果需要将以上两个元素垂直排列居中的话,使用上一节的margin: 0 auto;即可实现
-->
  css部分代码:
/*
解决方案:
设置这几个块状的元素display属性为inline-block,并且设置父元素text-align属性为center即可
*/
.center{
  display:inline-block;
}
body{
  text-align:center;
}
/* 元素美化 */
div{
  width: 100px;
  background: #222;
  height: 50px;
  color: #FFF;
  padding: 10px;
}
4.水平居中:多个块状元素解决方案 (使用flexbox布局实现)
使用flexbox布局,只需要把待处理的块状元素的父元素添加属性display:flex及justify-content:center即可
 html部分代码:
<div>水平居中的块状元素</div>
<div>水平居中的块状元素</div>
 css部分代码:
解决方案:
设置需要水平居中的块状元素的父元素display为flex ,并且justify-content属性为center即可
body{
  display: flex;
  justify-content: center;
}
/* 页面美化元素 */
div{
  width: 100px;
  background: #222;
  height: 50px;
  color: #FFF;
  padding: 10px;
  margin: 10px;
}
5. 垂直居中:单行的行内元素解决方案
当一个行内元素,即inline,inline-*类型的元素需要居中的话,可以将它的height和line-height同时设置为父元素的高度即可实现垂直居中效果。
 html部分代码:
    <div id="container">
    <a href="#">hello, gbtags.com</a>
    </div>
  css部分代码:
解决方案:将inline元素的高度和line-height设备为一致即可
#container{
  background: #222;
  height: 200px;
}
/*  以下代码中,将a元素的height和line-height设置的和父元素一样高度即可实现垂直居中 */
a{
  height: 200px;
  line-height:200px;
  color: #FFF;
}
6.垂直居中:多行的行内元素解决方案
组合使用display:table-cell和vertical-align:middle属性来定义需要居中的元素的父容器元素生成效果,如下:
 html部分代码:
<div class="container">
  <a href="#">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis blanditiis optio accusamus quia sapiente at labore consectetur in quasi veritatis possimus quod nihil aliquam vero saepe rem quas. Ratione eligendi!
  </a>
</div>
  css部分代码:
解决方案:
使用display:table-cell和vertical-align来控制元素的居中效果
.container{
  background: #222;
  width: 300px;
  height: 300px;
  /* 以下属性垂直居中 */
  display: table-cell;
  vertical-align:middle;
}
a{
  color:#FFF;
}
7. 垂直居中:已知高度的块状元素解决方案
html代码:
<div class="item">
</div>
css代码:
解决方案:将待居中元素设置为绝对定位,并且设置margin-top为居中元素高度一半的负值
div{
  width: 100px;
  height: 100px;
  background: #222
}
/* 以下为居中代码 */
.item{
  top: 50%;
  margin-top: -50px;
  position: absolute;
  padding:0;
}
/* 现在可以看到这个元素垂直居中了,如果元素有padding设置,请自己相对计算一下margin-top值 */
8.垂直居中:未知高度的块状元素解决方案
对于无法知道高度的元素,使用transform属性来垂直移动来实现垂直居中:
html代码:
    <div class="item">
  Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet sint repellendus ab aut quisquam eligendi est in deleniti.
</div>
css代码:
解决方案:
因为无法指定margin-top的偏移量,所以这里使用transform属性,垂直移动-50%即可
div{
  width: 150px;
  background: #222;
  color: #FFF;
}
/* 元素垂直居中代码 */
.item{
  top: 50%;
  position: absolute;
  transform: translateY(-50%); /* 这里我们使用css3的transform来达到类似效果 */
}
9. 水平垂直居中:已知高度和宽度的元素解决方案
html代码:
<div class="item">
</div>
css代码:
解决方案:
将设置元素绝对定位,并且设置margin-left和margin-right为居中元素(高度或宽度/2)的负值即可
div{
  width: 150px;
  height: 150px;
  background: #222;
  color: #FFF;
}
.item{
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -75px;
  margin-left: -75px;
}
/* 以上代码即可保证一个已知高度和宽度的元素水平垂直都居中 */
10.水平垂直居中:未知高度和宽度元素解决方案
html代码:
<div class="item">
  Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate nostrum quaerat debitis.
</div>
css代码:
解决方案:将设置元素绝对定位,并且设置transform的translate为X,Y轴同时移动-50%即可
div{
  background: #222;
  color: #FFF;
}
/* 以下代码保证元素在水平和垂直方向上绝对居中 */
.item{
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
11.水平垂直居中:使用flex布局实现
 html代码:
<div class="parent">
  <div class="item"></div>
</div>
 css代码:
解决方案:设置flex布局,并且定义居中元素的父元素justify-content和align-items属性为center即可
/* 子元素CSS */
.item{
  background: #222;
  color: #FFF;
  width: 100px;
  height: 100px;
}
.parent{
  display: flex;
  justify-content:center;
  align-items: center;
  /* 注意这里需要设置高度来查看垂直居中效果 */
  background: #AAA;
  height: 300px;
}
注:以上资源整理自极客标签学习文档,推荐大家学习使用
附上网址:http://www.gbtags.com           【前端】这可能是你看过最全的css居中解决方案了~的更多相关文章
- UI前端开发都是做什么的以及html、css、php、js等究竟是神马关系
		
第一个问题: 1.UI,是视觉方面的呈现.一个网页首先由UI完成整体设计,然后把每一个模块切图,例如组件.logo.版块等.常用工具:PS,AI,DW. 2.前端,是将UI的设计代码化,因为计算机无法 ...
 - vue—你必须知道的       js数据类型    前端学习    CSS 居中    事件委托和this    让js调试更简单—console   AMD && CMD   模式识别课程笔记(一)   web攻击   web安全之XSS  JSONP && CORS   css 定位  react小结
		
vue—你必须知道的 目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...
 - js 处理日期 看着比较全,备用
		
http://www.cnblogs.com/endora/archive/2012/12/06/endorahe.html js 处理日期 看着比较全,备用
 - 仅以一个前端开发人员的角度看微信小程序
		
看了几天的小程序(当然也包括了上手书写),才有了这篇博文,非技术贴,只是发表下个人观点,仅以个人技术能力来看小程序. 首先说下优点: 调试工具:官方的工具还是做了很多工作,包括监听文件变动自动刷新,编 ...
 - 最全的前端Git基础命令,看完保证你会!
		
常见信息 master: 默认开发分支 origin:默认远程版本库 Head: 默认开发分支 Head^:Head 的父提交 创建新仓库 git init git init [project-nam ...
 - 前端调用接口报错看不到报错响应时  console.dir
		
console.dir() 可以看到很多.log看不到的属性和方法
 - 【开源】前端练手笔记,Chrome扩展应用程序(html+CSS+JS) (1)
		
项目名称:github-notification 项目地址:https://github.com/WQTeam/github-notification 说明:本人打算抽时间学习前端(html + cs ...
 - 前端开发规范:命名规范、html 规范、css 规范、js 规范
		
上周小组的培训内容是代码可读性艺术,主要分享如何命名.如何优化代码排版,如何写好的注释.我们都知道写出优雅的代码是成为大牛的必经之路. 下面感谢一位前端开发小伙伴总结的前端开发规范,通过学习相关开发规 ...
 - 回顾:前端模块化和AMD、CMD规范(全)
		
先列举下一些著名言论: "我想定义一个 each 方法遍历对象,但页头的 util.js 里已经定义了一个,我的只能叫 eachObject 了,好无奈." "Requi ...
 
随机推荐
- js 判断元素的display是否为block或者none
			
if($(this).css("display")=="none"){ //隐藏的 }else{ //显示的 }
 - qsub|pasta|
			
cd /xxx/genome_stat/Annotation ln -s /xxx/02.annotation/gff_v2/*.homolog.v2.gff /xxx/genome_stat/Ann ...
 - Uber退出东南亚留下烂摊子,给“中国式并购”带来哪些启示
			
当下,从全球范围内来看很多互联网企业都采用了"复制+粘贴"的疯狂推进模式.它们往往在某一个国家或地区取得领先优势后,就快速将相同模式在全球推进去占领当地市场.无论结果是一家独大占据 ...
 - Leetcode_开篇碎碎念
			
已经计划写leetcode3天了,但是到目前为止一道题还没有写,执行力我太差了. 写leetcode的原因有两个,一是锻炼自己代码水平,提高实力:二是考研据了解到的都会有上机考试,基本是c++,jav ...
 - django框架基础-ORM进阶-长期维护
			
############### ORM进阶---contenttype ################ 设计思路: """ 路飞有两种课,专题课和学位课, ...
 - jQuery插件开发小结
			
jQuery插件开发规范 1. 使用闭包 (function($) { // Code goes here })(jQuery); 这是来自jQuery官方的插件开发规范要求,使用这种编写方式有什么好 ...
 - mysql 索引和视图
			
第五节:创建索引5.1 创建表的时候创建索引 CREATE TABLE 表名(属性名数据类型[完整性约束条件], 属性名数据类型[完整性约束条件], .... 属性名数据类型 [UNIQUE | FU ...
 - ZOJ-1183-Scheduling Lectures
			
可以用贪心求最小讲课次数,贪心策略也很好想,就是对于任意主题,能早讲就早讲.这种方案的讲课次数一定是最少的,但是不满意指标不一定是最小,然后再利用动态规划求在最少讲课次数前提下的最小不满意指标. 方法 ...
 - Trie树的插入,查前缀,查单词,删前缀和删单词。
			
这个Trie原先用C++就敲得很熟了,看了蓝桥杯的视频后学会把一个功能这样封装起来,以后用的时候就很爽可以直接调用了,所以就用Java写了: public class Trie { private f ...
 - 吴裕雄--天生自然HTML学习笔记:HTML 表单和输入
			
HTML 表单用于收集不同类型的用户输入. <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...