块级元素:div p h1 h2 h3 h4 form ul
行内元素: a b br i span input select
Css盒模型:内容,border ,margin,paddingjavascript
咱们经常使用的display属性值有:css
inline block inline-block none
把 display 设置成 none 不会保留元素本该显示的空间,可是 visibility: hidden
还会保留。html
咱们最关心的仍是display:inline、display:block和display:inline-block
的区别:java
inline特性
内联对象inline给它设置属性height和width是没有用的,导致它变宽变大的
缘由是:
它实际宽度为:内部元素的宽+2*(padding+border+margin)
。inline
对象不单独占一行。nginx
block特性
而块对象block
是能够设置宽高的,可是它的实际宽高是:width+2*(padding+border+margin)
。block
元素单独占一行。segmentfault
然而,当咱们即须要div有宽高,又不但愿它独占一行怎么办?浏览器
inline-block特性
这个时候咱们就须要使用inline-block
了:
由于inline-block既具备block的宽高特性又具备inline的同行元素特性。性能
行内元素特色ui
一、和其余元素都在一行上; 二、元素的高度、宽度、行高及顶部和底部边距不可设置; 三、元素的宽度就是它包含的文字或图片的宽度,不可改变。
块级元素特色spa
一、每一个块级元素都重新的一行开始,而且其后的元素也另起一行。 二、元素的高度、宽度、行高以及顶和底边距均可设置。 三、元素宽度在不设置的状况下,是它自己父容器的100%,除非设定一个宽度。
元素分类(关于这点我还有些问题,暂且放上来,慢慢修改,很是欢迎纠正)
HTML中的标签元素大致被分为三种不一样类型:块状元素,内联元素和内联块状元素
常见的块状元素有:
<div>,<p>,<h1>...<h6>,<ol>,<ul>,<dl>,<table>, <address>,<blockquote>,<form>
常见的内联元素有:
<a>,<span>,<i>,<em>,<strong>,<label>,<q>,<var>,<cite>,<code>, <img>,<input>,<select>,<textarea>,<button>
有类特殊的元素:如img|input|select|textarea|button|label等,他们被称为可置换元素(Replaced element)。他们区别通常inline元素(相对而言,称non-replaced element)是:这些元素拥有内在尺寸(intrinsic dimensions),他们能够设置width/height属性。他们的性质同设置了display:inline-block的元素一致。
margin在块级元素下,他的性能能够彻底体现,上下左右任你设定。
margin也能用于内联元素,这是规范所容许的,可是margin-top和margin-bottom对内联元素(对行)的高度没有影响,而且因为边界效果(margin效果)是透明的,他也没有任何的视觉影响。
首先,全部主流浏览器都支持 display
属性。其次,咱们都知道display
属性规定元素应该生成的框的类型。默认值:inline
咱们经常使用的display
属性值有:
inline
block
inline-block
none
把 display
设置成 none
不会保留元素本该显示的空间,可是 visibility: hidden
还会保留。
那么,display
:inline、display
:block和display
:inline-block有什么区别呢?
<style> .inline{display:inline; width:100px; height:100px; padding:5px; background-color:#F00;} .block{display:block; width:100px; height:100px; padding:5px;background-color:#0f0;} .inline-block{display:inline-block; width:100px;height:100px; padding:5px;background-color:#00f;} </style> <body> <span class="inline"> inline </span>inline <span class="block"> block </span> block <span class="inline-block"> inline-block </span>inline-block </body>
点击result查看demo:
http://jsfiddle.net/qjgcjLm8/
咱们发现内联对象inline
给它设置属性height
和width
是没有用的,导致它变宽变大的
缘由是
内部元素的宽高`+padding`。观察inline对象的先后元素咱们会发现`inline`不单独占一行, 其它元素会紧跟其后。
而块对象`block`是能够设置宽高的,可是它的实际宽高是自己宽高`+padding`。 观察`block`的先后元素咱们会发现`block`要单独占一行。
然而,当咱们即须要div有宽高,又不但愿它独占一行怎么办?
这个时候咱们就须要使用inline-block
了,再观察一下上面的demo,咱们会发现:
inline-block既具备block的宽高特性又具备inline的同行元素特性。
也就是说,当咱们想要让一个元素既不独占一行,又能够设置其宽高属性的时候,咱们就能够选择inline-block
了。
然而,在IE6/7下padding
对inline
的宽高是对其没影响的。
由此,咱们能够联想到行内元素和块级元素
一、和其余元素都在一行上; 二、元素的高度、宽度、行高及顶部和底部边距不可设置; 三、元素的宽度就是它包含的文字或图片的宽度,不可改变。
一、每一个块级元素都重新的一行开始,而且其后的元素也另起一行。(真霸道,一个块级元素独占一行) 二、元素的高度、宽度、行高以及顶和底边距均可设置。 三、元素宽度在不设置的状况下,是它自己父容器的100%(和父元素的宽度一致),除非设定一个宽度。
在html中,<span>、<a>、<label>、<input>、 <img>、 <strong> 和<em>
就是典型的行内元素(inline)元素。
块级元素是能够设置宽高的,可是它的实际宽高是自己宽高+padding。block元素要单独占一行。内联元素不单独占一行,给他设置宽高是没有用的。
在html中<div>、 <p>、<h1>、<form>、<ul> 和 <li>
就是块级元素。设置display:block
就是将元素显示为块级元素。以下代码就是将行内元素a转换为块状元素,从页使用a元素具备块状元素特色。
a{display:block;}
那么,display
的其余属性值呢?
list-item
此元素会做为列表显示。
run-in
此元素会根据上下文做为块级元素或内联元素显示。
compact
CSS 中有值 compact,不过因为缺少普遍支持,已经从 CSS2.1 中删除。
marker
CSS 中有值 marker,不过因为缺少普遍支持,已经从 CSS2.1 中删除。
table
此元素会做为块级表格来显示(相似table),表格先后带有换行符。inline-table
此元素会做为内联表格来显示(相似table),表格先后没有换行符。table-row-group
此元素会做为一个或多个行的分组来显示(相似tbody)table-header-group
此元素会做为一个或多个行的分组来显示(相似thead)table-footer-group:
此元素会做为一个或多个行的分组来显示(相似tfoot)table-row
此元素会做为一个表格行显示(相似 tr )。table-column-group
此元素会做为一个或多个列的分组来显示(相似 colgroup )。table-column
此元素会做为一个单元格列显示(相似 col )table-cell
此元素会做为一个表格单元格显示(相似 td 和 th)table-caption
此元素会做为一个表格标题显示(相似 caption)