line-height 与垂直居中!

在此之前,对于line-height 与垂直居中的问题,经常碰到。

比如,图片与span在同一个box中的时候,竟然会各种偏移。要想达到理想的效果真的是各种难。

有时间,决定认真的啃一啃。

一 line-heigtht:

1. line-height: 顾名思义,行高,指代文本中,行与行之间的基线间的距离。

2. 基线: 这里的基线不是指代文字的底部,而是英文字母x 的下沿。

3 行距: 行距表示文字的高度与行高的差距。

4. 内容区域: 行中每一个元素都有一快内容区域,主要由字体的大小决定。

5 行内框: 在默认条件下,行内框是等于内容区域的。在如果设置了行高,那么,行内框就会等于行高,并且在内容区域的两侧添加空白。

6 行框: 行框在默认条件下是等于行内框,但是如果在同一行中,有行高超过了当前元素的行内框高度的时候,当前元素的行框就会默认为最高的行高的高度。

这里的行框的告诉只与本行中的最高的行高的关,与关元素的告诉无关。这也是导致图片和文字在同一行时不能对齐的原因。

7 在有图片时,图片会将行框的高度撑到图片的高度,但同时默认的对其方式为基级对齐方式。

具体如下图所示:

二 vertical-align

垂直居中,这里需要注意的一点就是,vertical-align 只能对行内元素有效,对说类似div,p之类的块级元素是无效的。

需要垂直居中,只需要:vertical-align:middel

三 zoom

曾经一直很奇怪很多的网站为什么给元素总是要加一个zoom:1的样式。

原来这一切都是为了兼容ie 6/7/8 , 用来触发ie的haslayout内部属性。导致ie重新计算自身的高度。

大多数因为浮动所产生和定位问题bug 都可以用zoom来解决。

四 inline-block

inline属性的特点是,行内元素,能够在同一行内显示,但是其高度,宽度,行高,margin,padding 等元素都不能设置。所以就产生了inline-block;

inline-block行内元素,但不失block 的效果。在是在ie 6/7下没有被完全支持。

关于ie 6/7对于 inline-block的不完全支持,也可以采用上面的方法解决。

如:

display:inline-block; *display:inline; zoom:1; width:80px; height:20px; margin:10px; padding:10px; text-align:center; background:#cfc;

  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>span</title>
    <style type="text/css">
        .test{
            line-height: 50px;
        }
        .test img{
            vertical-align: middle;
            height: 50px;
            line-height: 50px;
        }
        .test-span{
            line-height: 50px;
        }  

    </style>
</head>
<body>
<p class="test"><img src="未标题-1.jpg" width="265" height="203" /><span class="test-span">dd</span></p>
</body>
</html>

  这里会存在一个小问题, 图片img会的p元素的顶部存在3像素作用的间距。

百度之,原来是个bug , 解决办法蛮多

第一种就是换doctype为<!doctype html>

其它如果不改doctype可以去设置含有img元素的高度,并且需要float一下就ok了。

.test{
            line-height: 50px;
            flost:left;
            height: 50px;
        }

  

注意问题:这里需要垂直居中,是采用设置img的vertical-align的属性,而不是文本。

当然这也不是绝对的,具体需要看那一个元素的高度更高,就去设置哪一个元素的vertical-align属性。

当然还有一个经验之谈就是在切图的时候,将图的高度切为单数。这样的ie6/7下就不会有多出的1px的问题。

时间: 2024-09-27 12:35:58

line-height 与垂直居中!的相关文章

line height 与 vertical align

一.line height 其中代表inline box(包含上下间距,若height==line-height,则行间距=line-height - font-size/2),big代表content area. 注: 若line-height < content area ,则line box要取line-height的值,这也是为什么会重叠的原因. line-height属性取值: 1. % 若自身没有设置line-height,则line-height = 父元素的font-size *

深入了解css的行高Line Height属性

来源:http://www.cnblogs.com/fengzheng126/archive/2012/05/18/2507632.html 什么是行间距? 古时候我们使用印刷机来出来文字.印刷出来的每个字,都位于独立的一个块中. 行间距,即传说中控制两行文字垂直距离的东东.在CSS中,line-height被用来控制行与行之间垂直距离. 不过,行间距与半行间距,还是取决于CSS中的line-height.那么,如何来使用line-height呢? 默认状态,浏览器使用1.0-1.2 line-

css-实现元素垂直居中对齐

原文:css-实现元素垂直居中对齐 css-实现元素/元素内容,垂直居中对齐 一.单行内容的垂直居中(line-height:行高方法) 只考虑单行是最简单的,无论是否给容器固定高度,只要给容器设置 line-height 和 height,并使两值相等,就可以了. 缺点:1:这种方法局限性太大,只有单行文本的元素才适用,所以在多行元素中是不能使用这种方法的了.         2 :IE中不支持<img>等的居中. 优点:适合在所有浏览器,没有足够空间时,内容不会被切掉,同时支持块级和内联元

未知尺寸元素水平垂直居中:

浏览器参照基准:Firefox, Chrome, Safari, Opera, IE * 该未知尺寸元素水平垂直居中方案基于 inline-block 元素的 vertical-align:middle 特性实现,在这里需要对 line box 及 vertical-align 的应用情况有一定的了解 /*水平居中*/ text-align:center vertical-align知识点 vertical-align适用于 inline level, inline-block level 及

css实现水平居中和垂直居中的常见方式

我们在实际工作中常会遇到需要设置居中的场景,居中分为水平居中和垂直居中.针对不同的情况又有不同的实现方式,例如行内元素和块状元素. 水平居中: 行内元素:text-align:center://这个比较简单 块状元素:定宽的块状元素通过设置左右margin为auto实现,例如margin:10px auto:不定宽的块状元素:加入 table 标签后按照定宽元素进行设置:设置 display: inline 后按照行内元素设置:设置position:relative left:50% 通过给父元

水平居中与垂直居中,以及对齐

我以前一直都搞不清楚水平居中与垂直居中,更不用谈什么对齐,临时抱佛脚,也找不到很好的答案,于是把网上的代码研究了一番,总结一下经验: 盒子水平居中:margin:0 auto 注意:在IE8中使用margin:auto属性无法正常工作,除非声明 !DOCTYPE 如果宽度是100%,对齐是没有效果的,要给居中的元素一个宽度,否则无效. 加入margin:0 auto就不能加入float浮动样式,避免逻辑错误,造成布局居中不兼容. 行内元素水平居中:父元素设置text-align:center 单

三种常用垂直居中的方法

有时我们需要对元素内部内容进行垂直居中显示, 下面介绍三种我学到的简单的垂直居中方法 第一种: 利用td默认的vertical-align:middle特性达到多行文本垂直居中效果 CSS: .wrap{ width: 200px; height: 200px; border: 1px solid red; } HTML: <table class="wrap"> <tr> <td>需要居中的内容需要居中的内容需要居中的内容需要居中的内容需要居中的内

line-height系列——定义和工作原理总结

一.line-height的定义和工作原理总结 line-height的属性值: normal    默认  设置合理的行间距. number  设置数字,此数字会与当前的字体尺寸相乘来设置行间距line-height:1.5; length    设置固定的行间距.  例如:line-height:18px; %          基于当前字体尺寸的百分比行间距. 例如:line-height:150%; line-height 的定义: 首先认识下文字的四条线 从上到下四条线分别是顶线.中线

自适应居中

一.窗体居中 1 position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; /*height: 50px; width: 165px; */ 简析: position:固定位置显示(absolute|fixed): [absolute:窗口大小由上层position为absolute.fixed.relative的子父关系窗口决定:fixed:窗口大小由上层层position为fixed的子父关系窗口决定] t

【翻译】关于vertical-align所有你需要知道的

本文是翻译过来的,如果有不对的地方还请指教~,原文链接:Vertical-Align: All You Need To Know 前面一些说明,可以略过不看吧 我经常需要对元素进行垂直方向上的布局. CSS提供了一些方法来实现这个功能,比如float,position: absolute,手动地增加margin或padding. 我并不是很喜欢这些方法.Floats只能让元素在顶端布局,而且需要手动清除浮动.absolute定位让元素离开文档流,且不再影响它的周围环境.利用固定的margigin