我的css释疑-float line-height inline-block vertical-align
markdown的图片和链接格式相类似:
[链接文字/图片的alt text] (链接地址/ 图片的地址), 只是图片要在前面加上感叹号!
当内容中含有图片的时候,如果图片的高度大于行高,则含有图片 行的行框将被撑开到图片的高度
注意:图片虽然撑开了行框,但是不会影响行高,因此也不会影响到基于行高来计算的其他属性。
提示:当行内含有图片的时候,图片和文字的垂直对齐方式默认是基线对齐
![图片撑高行框] (http://www.baidu.com/)
vertical-align 是使(行内) 元素的基线和 元素所在行/ (行框)的 基线 之间的垂直对齐方式
vertical-align 只是对行内元素有效.对块级元素无效
由于需要确定行框的基线高度, 所以对于空的div,(由于没有行框基线),所以 为了对图片进行垂直方向上的
vertical-algin布局, 还需要专门去创建一个空的span元素, 设置span元素与父容器的高度相同, 然后,对图
片应用vertical-align:center样式...
vertical-align主要是应用于: 行内的图片 和 文字 之间的 对齐 方式
vertical-align的值有: baseline/ top middle bottom/ super sub/ text-top text-bottom(text没有text-middle对齐)/...
实际在使用时, 其实是不会过度关注(太在意)它们之间的对比排列位置的, 只要设置好就行.
vertical-align属性是不适用于块元素的,这就是为什么有些人使用vertical-align属性无效的原因。
但是可以使用display属性,设置其值为table-cell/inline,将块元素转化为单元格,然后再使用vertical-align属性。但存在兼容性问题
此处需要特别注意的是:垂直对齐属性只对行内元素有效。例如有如下代码:
<p style=”vertical-align:super;”>垂直对齐<span>上标</span></p>
<p>元素默认为块级元素,因此在浏览器内浏览时将不会有任何变化。而如下代码:
<p>垂直对齐<span style=”vertical-align:super;”>上标</span></p>
<span>元素默认为行内元素
为什么垂直居中 要使用/ 要写 两个元素的vertical-align: middle样式?
因为, 如果只写一个元素如图片的vertical-align: middle, 则是让该图片元素的middle中间
跟行框的baseline对齐, 而行框的baseline默认的是文字的baseline, 在span的底部, 这样, 自然的图片
就在div的底部, 不能跑到div的垂直中间了.
如果连同 "辅助布局元素" span和图片元素, 的vertical-align都写middle. 则能使这两个元素的middle中
心相对齐了, 即: 图片居于div的垂直中心了.
也可以这样看, 前面那个span的 vertical-align:middle, 就使得行框的baseline称为div的垂直中心线了...
所以后面的img 的: vertical-align: middle, 就使得图片的middle跟行框的中心线对齐了.
注意: 即使对于要应用垂直居中的元素是 文字, 也要用两个 vertical-align: middle. 也要增加一个布局
的 span元素.
对于图片元素来说, 其基线就是指 图片的底端
块级元素和行内元素的转换
块级元素和行内元素的区别: 是否自动产生换行? <是否前后都有换行>
常用的块级元素: 表格相关的table/th/tr/td, 列表相关的ol/ul/li, 标题hx
行内元素->块内元素: span: display:block.
块级元素->行内元素(内联元素): div: display:inline.
display的有哪些值?
对于 HTML 等文档类型,如果使用 display 不谨慎会很危险
,因为可能违反 HTML 中已经定义的显示层次结构
参考w3school的内容
style type="text/css" // 这里指明类型type就是css就好了!
display: block
display:inline
display: inline-block:作用: 在排版布局上同inline, 但是 "内联 非替换元素"原来不能不生效的
width, height,内/外边距的 上下边距 属性将会如同block一样 得以生效.
inline-block的主要使用场景: 触发 \<span\>等元素的 layout 设置属性, 以满足某些特殊的布局需要
display: list-item:作为列表样式显示.
display: 作为表格/及表格相关的一些元素显示: table/inline-table/table-row(~~\<tr\>, 不会显示边框)
/table-column(~~<col>仅仅是指定列的对齐方式,不会显示内容)/table-cell(~~th, td).
css的版本
css1: 发布于1996年
css2: 发布于1999年
css2.1: 草案2007年.(以此为应用较多).
边框的显示范围?
对于行内 非替换元素, 它的边框线,只会包围 其内容的部分, 因为上下方向的内外边距无效.
而对于block块级元素, 包括 inline-block元素, 边框线都会扩展到内外边距的范围.
block元素和inline元素的区别?
display:block
block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父
元素宽度。(占父元素的100%宽度)
block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。
block元素可以设置margin和padding属性。
display:inline
inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换
一行,其宽度随元素的内容而变化。
inline元素设置width,height属性无效。
inline元素的margin和padding属性,水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;
但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。
display:inline-block
简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联对象会被排列在同一行内。
比如我们可以给一个link(a元素)inline-block属性值,使其既具有block的宽度高度特性又具有inline的同行特性。
补充说明
一般我们会用display:block,display:inline或者display:inline-block来调整元素的布局级别,其实
display的参数远远不止这三种,仅仅是比较常用而已。
IE(低版本IE)本来是不支持inline-block的,所以在IE中对内联元素使用display:inline-block,理
论上IE是不识别的,但使用<font color="red"><strong>display:inline-block在IE下会触发layout,
从而使内联元素拥有了display:inline-block属性的表象
text-align与vertical-align的区别?
text-align与vertical-align, 虽然都是设置align, 但是他们的用法差别很大:
应用的级别不同, text-align应用的对象是 块级元素, 而vertical-align应用的是行内元素.
书写的位置不同: text-align要写在父容器的div上, 而vertical-align写在行内元素本身上,
作用的对象不同: text-align是设置 div容器中的 图片和文字(注意虽然名字叫text...,实际上对图片也有效)(不是div容器本身)的水平排布对齐位置, 它并不对div其作用. 而vertical-align就是设置行内元素自己!
div的高度height:100% 无效?
无效, 是因为height:100% , 是将div的高度设置为 父容器 高度的100%, 而div无法获取它的父容器: body
的高度. 所以, body就会以div本身的大小来显示body的高度.
注意: html文档的整个标签, 包括body, html 都是有实际意义的.
body的父容器是html标签, 而html标签的父容器(或者说其本身所指代的)是: window, 或document
标签.
如果没有指定body, html的高度, 那么他们本身就是根据body中包含的内容, 来决定其高度的.
所以, 要设置div的高度为整个屏幕, 就要显式的设置body和html标签 的高度:
body, html{
height: 100%;
}
这样, html和body的高度就为整个屏幕客户区: window.ClientTop/ClientHeight/ClientWidth的高度,
然后, body下的div的高度为100%, 就是为其父容器的高度. ...
margin-left: -1px?
使用左边距, 这是一个技巧, 可以让 仅仅是为了布局而引入的span,div等占用的宽度/高度, 被还原出来.
而不影响其他元素的占位关系.
line-height在单行文本 垂直居中的应用.
line-height除了在指定 文字行 与 行之间的 间距, 增大或减小行间距(如同 word中的单倍行距/ 2倍行距
等)(关于line-height和 font-size/ 行距的数学关理论如前 ) 之外,
还可以用于使文字 居于 有背景图片的 单行 垂直居中位置: 因为指定line-height后, 会在文字的上下方
增加 (lineHeight - fonetSize)/2 这样的一个空白间距(内padding)
w3school上的解释是: 该属性会影响行框的布局。在应用到一个块级元素时,它定义了该元素中基线之间的
最小距离而不是最大距离。
line-height 与 font-size 的计算值之差(在 CSS 中成为“行间距”)分为
两半,分别加到一个文本行内容的顶部和底部。可以包含这些内容的最小框就是行框。
所以只要使 文字的容器span或p的line-height: 100px; 和包含背景图片的div的高度 相等就可以使文字垂
直居中!
line-height应用的元素的 层次?
line-heig字ht, 叫行高, 仅仅是指 文/文本, 而不管图片. line-height是容器中 文本行 与 文本行之间的距离.而不管容器是块级还是行级.
它等于font-size 与 行间距 之和.
line-height是指 (块级/行内)元素容器 中包含的 文本行之间 的距离.
line-height并没有限制 包含 文字/文本 的父容器的 类型, 它可以是 块级元素, 也可以是行内容器.
也就是说, 块级元素和 行内元素, 都可以使用 line-height样式. 文本可以是 单行, 也可以是多行.
如: p.small, p.big , p , div,li, span { line-height: 200px;}
如果 块级元素中, 只包含一行, 单行, 那么, 设置行高line-height等于容器(如li, p, div)的高度, 则文字的上下正好填充行间距的1/2.
从而使单行文字 居于容器的 垂直居中. 这是line-height非常常用的一个用法
我的css释疑-float line-height inline-block vertical-align的更多相关文章
- css样式float造成的浮动“塌陷”问题的解决办法
什么是CSS Float? 定义: float 属性定义元素浮动到左侧或右侧.以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动.浮动元素会生成一个块级元素,而不论 ...
- css之float
在 HTML中的所有对象,默认分为两种:块元素(block element).内联元素(inline element),虽然也存在着可变元素,但只是随上下文关系确定该元素是块元素或者内联元素. 其实C ...
- css position float (写的相当好)
对CSS中的Position.Float属性的一些深入探讨 对于Position.Float我们在平时使用上可以说是使用频率非常高的两个CSS属性,对于这两个属性的使用上面可能大多数人存在一些模糊与不 ...
- css 的float和inline-block区别
CSS布局创建网站,浮动绝对占据了很大的比例.大块区域如主内容及侧边栏,以及在其中的小块区域,都可以看到浮动的影子.这里浮动是唯一的解决方案吗? 浮动通常表现正常,但有时候搞起来会很纠结.特别是处理内 ...
- css之float(浮动)的特性
详解CSS float属性 float本身不脱离文档流,但是和 position:absolute;搭配使用会脱离文档流 阅读目录 基础知识 float的详细细节 float特殊情况 clear属性 ...
- CSS 布局Float 【2】
1.页面标准文档流.浮动层.float属性 1.1 文档流 HTML页面的标准文档流(默认布局)是:从上到下,从左到右,遇块(块级元素)换行. 1.2 浮动层 浮动层:给元素的float属性赋值后,就 ...
- CSS 布局Float 【0】
float是 css 样式的定位属性.我们在印刷排版中,文本可以按照需要围绕图片.一般把这种方式称为“文本环绕”.在网页设计中,应用了CSS的float属性的页面元素就像在印刷布局里面的被文字包围的图 ...
- css浮动(float)及清除浮动的几种实用方法
CSS浮动是现在网页布局中使用最频繁的效果之一,而浮动可以帮我们解决很多问题,那么就让我们一起来看一看如何使用浮动. 一.css浮动(float) (1)html文档流 自窗体自上而下分成一行一行,并 ...
- CSS 浮动(float)与定位(position)
一.浮动 1.三个属性:left.right.none. 2.特点:容易造成父项塌陷,故在父项需要清除浮动 3.父项塌陷现象 4.父项塌陷解决方案(建议使用):清除浮动 .parent:after{ ...
随机推荐
- Android Home键状态保存运用场景
当我们在一个Activity中有接收Intent过来的值,或者当前Activity有保存数据时候,如果此时不小心按到了Home键,然后没有及时回来而是运行了其它应用程序,当你想起来的时候,恐怕已经是几 ...
- 关于app的清除缓存的功能
一直寻寻觅觅找app的清除缓存的方法,发现:并没有什么固定的方法,你既然有做对应的缓存机制,这个机制就应该有清除缓存的方法.例如如果你使用某个第三方的图片库,这个库有缓存机制,那么它就应该提供对应的清 ...
- Object C学习笔记24-关键字总结
学习Object C也有段时间了,学习的过程中涉及到了很多Object C中的关键字,本文总结一下所涉及到的关键字以及基本语法. 1. #import #import <> 从syste ...
- EF,MVC相关项目请参见→
End_Test和YM_EF抽象工厂 这两个项目
- Objective-C 高性能的循环遍历 forin - NSEnumerator - 枚举 优化
Cocoa编程的一个通常的任务是要去循环遍历一个对象的集合 (例如,一个 NSArray, NSSet 或者是 NSDictionary). 这个看似简单的问题有广泛数量的解决方案,它们中的许多不乏 ...
- Timer的性能优势
假如有这样一个场景,1个100万用户同时在线的系统,假设有一个Session管理器来管理它们的存亡,每个用户的Session有效时间假设5分钟,通常一个最简单的做法是在一个Session管理器中启动一 ...
- [转]Java中的private、protected、public和default的区别
原文地址:http://my.oschina.net/u/1169535/blog/403589 (1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类.接口. ...
- iOS边练边学--static(作用域),copy(深浅拷贝)
一.static作用 二.copy
- 使用Owin中间件搭建OAuth2.0认证授权服务器
前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...
- 【codevs1044】导弹拦截问题与Dilworth定理
题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某 ...