CSS基础:block,inline和inline-block
css的display属性是前端开发中非常常见的属性,本文简单介绍下其中比较常用的属性值,即block、inline和inline-block。
HTML组件中呈现一片空白区域的组件都可当盒模型(box modal),而CSS则提供了display属性来控制盒模型的外观。
1. block类型(块)
这种盒模型的组件默认占据一行,允许通过CSS设置宽带、高度。
例如:<div .../>
、<p ../.>
、<form../>
、<table../
、<h1>
到<h6>
、<ul../>
等。
display:block
block 元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度会自动填满其父元素的宽度。
block元素可以设置width,height属性。块级元素及时设置了宽度,仍然是独占一行。
block元素可以设置margin和padding属性。
2. inline类型(内联)
这种盒模型的组件不会占据一行,不可以调整宽度、高度。
例如:<span../>
、<a../> <strong../>
、<em../>
、<label../>
、<input../>
、<select../>
、<textarea../>
、<img../>
、<br../>
。
CSS为display属性提供了block、inline两个属性值,可以改变HTML组件默认的盒模型。
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不会产生边距效果。
3. inline-block类型
CSS还提供了一种inline-block盒模型,这种盒模型时inline模型和block模型的综合体:inline-block盒模型的元素不会占据一行,同时也支持width、height指定指定宽带及高度。并且允许它的左边和右边出现其他内容。
display:inline-block
简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联元素会被排列在同一行内。比如可以给一个link(<a>
元素)inline-block属性,使其既有block的宽度高度特性、又具有inline的可同行性。
应用场合
很多时候我们必须让一些块元素并排显示,一般会想到浮动,但是块元素浮动设边距的时候在IE下会出现加倍的BUG,所以很多时候不得不把这个块元素套在一个内联元素里,然后给这个内敛元素浮动和边距。通过设置:display:inline-block,就将对象呈递为内联对象,但对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。
说明:
block元素可以包含block元素和inline元素,但inline元素只能包含inline元素。要注意这个是一个大概的说法,每个特定的元素能包含的元素也是特定的,所以具体到个别元素上,这条规律是不适用的。比如p元素,只能包含inline元素,而不能包含block元素。
一般来说,可以通过display:inline和display:block的设置来改变元素的布局级别。
兼容性问题:IE6、IE7不支持inline-block,所以在IE中对内联元素使用display:inline-block理论上IE是不识别的,但会在IE下触发layout,从而使内联元素拥有了display:inline-block属性的表象。
解决IE6、IE7兼容性的方法:
首先设置inline-block触发块元素,具有了layout的特性,然后设置display:inline使块元素呈现内联元素,此时layout的特性不会消失。
直接设置display:inline,使用zoom:1触发layout。
兼容所有浏览器的方法是:
.selector {
display : inline-block;
*display : inine;
*zoom:1;
}
本文只列出了display常见的三个属性,除此之外,display的属性值还有:inline-table、和表格相关的盒模型、list-item、run-in等。
原文地址:https://segmentfault.com/a/1190000016891690
最新文章
- Shiro权限验证代码记录,正确找到shiro框架在什么地方做了权限识别
- Spring,hibernate,struts的面试笔试题及答案
- Unable to locate player settings. bin/Data/settings.xml
- C#设计模式(11)——外观模式(Facade Pattern)
- 具有timeout 功能的函数调用
- OpenGL基础图形编程
- SharePoint 2013 开发——获取用户配置文件属性内容(User Profile)
- 调用webservice客户端方法 runtime modeler error: Wrapper class &#215;&#215;&#215; is not found. Have you run APT to generate them?
- java.util.List org.apache.struts2.components.Form.getValidators(java.lang.String) threw an exception
- Asp.net web api 知多少
- MySQL事务提交过程(一)
- JS的document.images函数使用示例
- thrift 安装历程
- 通过Hive将数据写入到ElasticSearch
- session会话示例
- ASP.net 控件实现数据级联
- 安卓数据解析之 fastjson 的解析以及Gson解析
- C++下实现同接口下多个类作为参数的调用和传参
- 【bzoj1096】仓库建设 斜率优化dp
- Objective-C 方法交换实践(二) - 方法指针交换
热门文章
- JavaSE---悲观锁与乐观锁
- xsi:schemaLocation=";http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd";>;报错
- Java基础:(一)数据类型
- 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here
- markdown-Macdown
- vuejs 学习旅程之 vue-resource
- jQuery toggle 使用
- GoDaddy网站程序根目录 网站文件上传到虚拟主机哪个目录
- 【extjs6学习笔记】1.7 初始:加载第三方库
- 利用任务计划自动删除指定日期的SQLServer备份文件