CSS垂直居中指南

大概整理下css中的垂直居中问题

主要分两大类

1 知道块元素尺寸,一般就是指知道元素高度。

方法一:最简单的,类比水平居中。

         思路:子元素设置为absolute;  top bottom都设置为0 ; margin:auto;这样就行啦;

<div class="lev1">我是第一层
        <div class="lev2">我是第二层
        </div>
    </div>

/*CSS*/
       .lev1{
            width:200px;
            height:200px;
            background-color: #008BCD;
            border: 1px solid #1874CD;
            position: relative;
        }

        .lev2{
            background-color: #C078CD;
            border: 1px solid #B800CD;
            width:100px;
            height:100px;
            position: absolute;
            top: 0;
            bottom: 0;
            margin:auto;
        }
方法二:同样设置子元素绝对定位,让其margin-top:-height/2; top:50%;

         思路:同样是绝对定位,理解负margin是要点。多说两句负margin  margin 设为负值会使该元素实际高度变矮,映射到HTML上一般表现为被向上拉(margin-top2为负)或者把其他元素拉到上面(margin-bottom为负)。具体的可以参考这篇博客 http://www.51xuediannao.com/html+css/htmlcssjq/css-margin.html

      最后多说两句:如果并不知道子元素高度  可以transform: translateY(-50%);  是不是很机智!!!

<div class="lev3  lev">我是第一层
    <div class="lev4">我是第(absolute margin:-height/2;top:50%)
    </div>
</div>

/css/
 .lev3{
            width:200px;
            height:200px;
            background-color: #008BCD;
            border: 1px solid #1874CD;
            position: relative;
        }
        .lev4{
            background-color: #C078CD;
            border: 1px solid #B800CD;
            width:100px;
            height:100px;
            position: absolute;
            top: 50%;
            margin-top: -50px;
        }
方法三:增加一个多余子div,让其高度等于50%;然后设置其margin-bottom:-height/2;相当于子div把content向上拉了这么多高度

        思路:理解负margin是关键。要点  floater要设置的属性(float  为何要设置float 又要清除? 设置其高度为50%是相对于父元素;margin-top:-height/2 相当于把子元素向上拉这么多距离)

<div id="parent">
<div id="floater"></div>
<div id="child">Content here</div>
</div>

/*CSS*/
#parent {height: 250px;}
#floater {
float: left;
height: 50%;
width: 100%;
margin-bottom: -50px;
}
#child {
clear: both;
height: 100px;
}
方法四:父元素设置为table,子元素设置为table-cell vertical-alight:middle;

        思路:改变布局属性,优点是其可以布局未知高度元素。顺便复习下vertical-align属性,这个鬼呢,好像深究起来挺复杂,记住最简单的,只对inline 和 inline-block属性有效

       传送门 vertical-align 具体理解 http://www.zhangxinxu.com/wordpress/2010/05/%E6%88%91%E5%AF%B9css-vertical-align%E7%9A%84%E4%B8%80%E4%BA%9B%E7%90%86%E8%A7%A3%E4%B8%8E%E8%AE%A4%E8%AF%86%EF%BC%88%E4%B8%80%EF%BC%89/

div id="parent">
<div id="child">Content here</div>
</div>
/*CSS/

#parent {display: table;}
#child {
display: table-cell;
vertical-align: middle;
}
方法五:也算黑科技了,用幽灵元素撑开

具体方法:

<div class="ghost-center">
  <p>I‘m vertically centered multiple lines of text in a container. Centered with a ghost pseudo element</p>
</div>

/*CSS/

body {
  background: #f06d06;
  font-size: 80%;
}

div {
  background: white;
  width: 240px;
  height: 200px;
  margin: 20px;
  color: white;
  resize: vertical;
  overflow: auto;
  padding: 20px;
}

.ghost-center {
  position: relative;
}
.ghost-center::before {
  content: " ";
  display: inline-block;
  height: 100%;
  width: 1%;
  vertical-align: middle;
}
.ghost-center p {
  display: inline-block;
  vertical-align: middle;
  width: 190px;
  margin: 0;
  padding: 20px;
  background: black;
}

当然最后还有几种未提及的,比如Flex布局,这个很简单,还有padding:10p 0; line-heights=height;

时间: 2024-08-08 07:06:49

CSS垂直居中指南的相关文章

css权威指南学习笔记--第七章

由于之前一直没有系统的看过css相关的书籍,导致自己css方面一直都是处于零散状态.知其然,不知其所以然.所以买了<css权威指南>.虽然比较老了,但是应该也会收获很大. 1 水平方向上 margin-left +border-left+padding-left+width+padding-right+border-right+margin-right 其中红色的是可以设置为auto,当设置为auto时,浏览器会自动计算该值.基于的原则就是 外层包裹容器的width=被包裹元素的width+p

CSS垂直居中布局方法

整理一下个人认为比较好的CSS垂直居中的布局方法. 1. 绝对定位+负值margin. //长宽的设置只是为了说明,实际使用没有限制 <div id="container-outer"> <div id="container-inner"></div> </div> //CSS #container-outer { width: 200rem; height: 100rem; position: relative; }

最常用的css垂直居中方法

css垂直居中一直以来都是一个被大家说烂了的话题,翻来覆去的炒.不过说实话,正是因为css没有提供标准的垂直居中方法(不过在css3中已经有了相关规范),所以大家才会对它进行专门的研究.这研究来研究去,垂直居中的方法比水平居中都要多了.但又说回来,各种方法人云亦云,不同的方法对于不同层次的人理解起来又有不同,用处也不同.本文结合技术实现的复杂度.理解性的难易度.以及大多数人的接触顺序对常用的垂直居中方法进行分等级的系统讲解,希望能对读者的工作和学习有所帮助. OK,闲话扯了一堆,下面开始正文,先

CSS权威指南学习笔记系列(1)CSS和文档

题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对,请谅解和指出.谢谢大家.正文: 第一章 CSS和文档---------- 1.CSS,称为层叠样式表.使用CSS的理由有:a.易于使用,样式表能大大减少Web创作人员的工作量:b.在多个页面上使用样式,可以创建一个样式表,然后把这个样式表应用到多个页面:c.层叠,CSS还规定了冲突规则:这些规则统称

《css设计指南》 读书笔记 一

<css设计指南>这本书是一个大神同学介绍给我的,据说覆盖了几乎所有前端面试的有关css的知识点,所以赶紧买来看看.( ps:这本书貌似绝版了,可以上淘宝买复印本,也可直接看电子书. ) 闭合标签,自闭合标签. html5中,将忽略所有自闭合标签最后的 / .可是建议在最后仍然加上  空格加/ 以规范格式. 所有img标签都需要加上alt属性. ps:视障用户使用的屏幕阅读器会读出图片的alt属性. 行内.块级标签.  块级: h1~h6, p, ol/ul, li, blockquote .

css权威指南 读书笔记

网上看见推荐的书总是喜欢买回家,但是大多数时候都不会立即就看,都是在书橱里蒙上了一层灰尘.从毕业到现在,由于公司业务原因,写js多余css,所以就想系统地看看css,并且做一些练习,于是就开始看<css权威指南>,看到了第六章,初步感觉,对于工作一年的我来说,很简单,当然也有一些我不熟悉的知识点,于是整理了下来. 一.@import 1.放在style容器中,且在其他css规则之前 2.每个人@import指令的样式都会加载使用 二.选择器 1.:first-letter 用于选取指定选择器的

CSS垂直居中完美有用实例

<!DOCTYPE HTML> <html> <head> <meta meta charset="utf-8"> <title>CSS垂直居中</title> <style type="text/css" media="all"> body{color:black;background-color:white;padding:50px;font-size: 12

css权威指南(下)

第七章 基本视觉格式化 正常流(没有浮动和定位元素).非替换元素(包含在文档中).替换元素(用作其它内容的占位符,如img).块级元素(会和其它元素形成换行,如div).行内元素(span之类的元素)和根元素(位于文档树顶端的元素,在HTML文档中就是元素html) 水平格式化 <p style="width:200px;">wideness?</p> /*200px指的是内容区的宽度*/ 水平格式化七大属性:margin-left.border-left.pa

《CSS设计指南》笔记--HTML标记与文档结构

通过阅读和学习书籍<CSS设计指南>总结 <CSS设计指南>/Charles lvyke-Smith著.李松峰译-人民邮电出版社 本书网站:http://www.stylinwithcss.com 强烈推荐!!深入浅出,精简,适合入门!! HTML标记与文档结构 1.1 HTML标记基础 1.1.1 文本用闭合标签 ??闭合标签的基本格式如下: <标签名>文本内容<标签名/> <标签名 属性_1="属性值" 属性_2="属