[HTML/CSS]盒子模型,块级元素和行内元素

目录

概述

盒子模型

块级元素

行内元素

可变元素

总结

概述

在div+css中,了解块级元素和行内元素还是非常有必要的,比如:对行内元素使用width属性就会失效。虽然自己不是做前端的,但是,在项目中,曾经也弄过从前端布局,也吃过这方面的亏。今天,群里有朋友问起这个,就趁着学习一下,也算是查漏补缺吧,虽然,谈不上精通,但是了解,还是很有必要的。

盒子模型

css盒子模型分为两种,一种是遵循w3c标准的标准盒子模型,另外一种就是IE盒子模型。

标准盒子模型

IE盒子模型

通过上面两张图可以看出,两种盒子模型都包括padding,margin,border,content,但是ie盒子模型的content包括border和padding。

一个例子

一个盒子的 margin 为 20px,border 为 1px,padding 为 10px,content 的宽为 200px、高为 50px。

标准盒子模型

盒子需要占据的位置为:宽 20*2+1*2+10*2+200=262px、高 20*2+1*2*10*2+50=112px,

盒子的实际大小为:宽 1*2+10*2+200=222px、高 1*2+10*2+50=72px;

IE盒子模型

盒子需要占据的位置为:宽 20*2+200=240px、高 20*2+50=70px,

盒子的实际大小为:宽 200px、高 50px。

选择多了,就要比个哪个好?

当然是“标准 W3C 盒子模型”了。怎么样才算是选择了“标准 W3C 盒子模型”呢?很简单,就是在网页的顶部加上 DOCTYPE 声明。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

如果不加 DOCTYPE 声明,那么各个浏览器会根据自己的行为去理解网页,即 IE 浏览器会采用 IE 盒子模型去解释你的盒子,而 FF 会采用标准 W3C 盒子模型解释你的盒子,所以网页在不同的浏览器中就显示的不一样了。反之,如果加上了 DOCTYPE 声明,那么所有浏览器都会采用标准 W3C 盒子模型去解释你的盒子,网页就能在各个浏览器中显示一致了。

块级元素block element

块状元素排斥其他元素与其位于同一行,可以设定元素的宽(width)和高(height),块级元素一般是其他元素的容器,可容纳块级元素和行内元素。常见的块级元素有div, p ,h1~h6等。

块级元素有哪些?

 1 <address>//定义地址
 2 <caption>//定义表格标题
 3 <dd>    //定义列表中定义条目
 4 <div>     //定义文档中的分区或节
 5 <dl>    //定义列表
 6 <dt>     //定义列表中的项目
 7 <fieldset> //定义一个框架集
 8 <form> //创建 HTML 表单
 9 <h1>    //定义最大的标题
10 <h2>    // 定义副标题
11 <h3>     //定义标题
12 <h4>     //定义标题
13 <h5>     //定义标题
14 <h6>     //定义最小的标题
15 <hr>     //创建一条水平线
16 <legend>    //元素为 fieldset 元素定义标题
17 <li>     //标签定义列表项目
18 <noframes>    //为那些不支持框架的浏览器显示文本,于 frameset 元素内部
19 <noscript>    //定义在脚本未被执行时的替代内容
20 <ol>     //定义有序列表
21 <ul>    //定义无序列表
22 <p>     //标签定义段落
23 <pre>     //定义预格式化的文本
24 <table>     //标签定义 HTML 表格
25 <tbody>     //标签表格主体(正文)
26 <td>    //表格中的标准单元格
27 <tfoot>     //定义表格的页脚(脚注或表注)
28 <th>    //定义表头单元格
29 <thead>    //标签定义表格的表头
30 <tr>     //定义表格中的行

 

行内元素inline element

行内元素不可以设置宽(width)和高(height),但可以与其他行内元素位于同一行,行内元素内一般不可以包含块级元素。行内元素的高度一般由元素内部的字体大小决定,宽度由内容的长度控制。常见的行内元素有a, em ,strong等。

行内元素有哪些?

 1 <a>     //标签可定义锚
 2 <abbr>     //表示一个缩写形式
 3 <acronym>     //定义只取首字母缩写
 4 <b>     //字体加粗
 5 <bdo>     //可覆盖默认的文本方向
 6 <big>     //大号字体加粗
 7 <br>     //换行
 8 <cite>     //引用进行定义
 9 <code>    // 定义计算机代码文本
10 <dfn>     //定义一个定义项目
11 <em>     //定义为强调的内容
12 <i>     //斜体文本效果
13 <img>     //向网页中嵌入一幅图像
14 <input>     //输入框
15 <kbd>     //定义键盘文本
16 <label>     //标签为 input 元素定义标注(标记)
17 <q>     //定义短的引用
18 <samp>     //定义样本文本
19 <select> // 创建单选或多选菜单
20 <small>     //呈现小号字体效果
21 <span>     //组合文档中的行内元素
22 <strong> //加粗
23 <sub>     //定义下标文本
24 <sup>     //定义上标文本
25 <textarea>     //多行的文本输入控件
26 <tt>     //打字机或者等宽的文本效果
27 <var>    // 定义变量

可变元素

根据上下文语境决定转为块级元素还是行内元素。

1 <button>     //按钮
2 <del>    // 定义文档中已被删除的文本
3 <iframe>     //创建包含另外一个文档的内联框架(即行内框架)
4 <ins>     //标签定义已经被插入文档中的文本
5 <map>     //客户端图像映射(即热区)
6 <object>     //object对象
7 <script>     //客户端脚本

 

总结

块级元素和行内元素区别

  1. 行内元素同一行水平排列。
  2. 块级元素各占据一行,垂直方向排列。
  3. 块级元素可以包含行内元素和块级元素。但行内元素不能包含块级元素。
  4. 行内元素与块级元素属性的不同,主要是盒模型属性上。
  5. 行内元素设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效

可以通过修改样式display属性改变元素是以块级还是行内元素呈现,当display的值设为block时,元素将以块级方式呈现;当display值设为inline时,元素将以行内形式呈现。

如果想让一个元素可以设置宽度高度,又让它以行内形式显示,我们可以设置display的值为inline-block。

一个例子

a{display:inline-block; width:100px; height:100px;}

参考
百度百科

http://www.cnblogs.com/releaseyou/archive/2009/04/16/1437456.html

博客地址: http://www.cnblogs.com/wolf-sun/
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。

转载:http://www.cnblogs.com/wolf-sun/p/4024414.html

时间: 2024-08-04 06:10:14

[HTML/CSS]盒子模型,块级元素和行内元素的相关文章

CSS块元素和行内元素的相互转换

块元素和行内元素可以使用display进行相互转换 display:inline ->转为行内元素(例如div) display:block ->转为块元素(例如a) 例: <html> <head> <title>块元素和行内元素的相互转换</title> <link rel="stylesheet" style="text/css" href="test.css" />

Css块内元素和行内元素

行内元素(inline element),又叫内联元素: 内联元素可容纳文本或者其它内联元素,常见的内联元素有<span>.<a>.<input>. 块元素(block element): 块元素一般都从新行开始,可以容纳文本.其它内联元素和其它块元素. 即使内容不满一行,块元素也要把整行占满,而且会换行显示,常见的块元素有<div>.<p>. 某些CSS属性可能对行内元素不生效,这与浏览器的版本和类型有关, 因此,要尽可能使用块元素定位. 例:

深入理解CSS盒子模型

深入理解CSS盒子模型 前言:前阵子在做一个项目时,在页面布局方面遇到了一点小问题,于是上stackoverflow上求助.ifaou在帮助我解决我问题的同时,还推荐我阅读一篇有关CSS盒子模型的文章<The CSS Box Model>,阅读之后受益匪浅,才知道自己对盒子模型知识还是如此欠缺.恰逢学期末,项目验收后暂时告一段落,有空闲的时间.于是想把这篇文章翻译出来,一方面再给自己一点挑战和锻炼,另一方面也给大家参考,让更多的人受益. 这篇文章适合初级web设计朋友,让你对盒子模型有更近一步

HTML中的CSS盒子模型边界(box-model)问题详解

HTML中的元素我们把他分为一个一个的盒子,盒子里面可以再放盒子,也可以放置文本,默认情况下,我们给盒子设置maring.padding和border的时候,不管设置的是什么单位的值,这些值都会计算在盒子的总体面积以内,这虽然是很基础的CSS技术,但是很多编写代码的人却不甚了解,导致网页错位却不知道怎么解决. HTML中的CSS盒子模型边界(box-model)问题详解 我一直到很不喜欢CSS和填充间距边框的关系,你忙着去定义宽度来满足你的网格布局比例,然后接下来你开始添加文本和设置适量的间距和

CSS盒子模型实例

实例要求:一个盒子内有多个图片,图片的边距一致,并能自动换行,实现图片橱窗效果.最终效果图见文章结尾. 实现思路: 基本结构: <div> <ul> <li><img src="" /></li> </ul> </div> html文件: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "h

CSS盒子模型

CSS盒子模型示意图: 我们在网页设计中的一些常用属性名:内容(content).填充(padding).边框(border).边界(margin),CSS盒子模型均具备这些属性. 例子: html文件内容: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head

行内元素、块元素都有哪些

行内元素只占内容的宽度,块元素不管内容多少都要占全行,下面为大家介绍下常见的行内元素及块元素有哪些,感兴趣的朋友可以参考下,希望对大家有所帮助   1.行内元素只占内容的宽度,块元素不管内容多少都要占全行. 2.行内元素只能容纳文本和其他行内元素,块元素可以容纳行内元素和块元素.(与浏览器有关) 3.有些css属性对行内元素不生效,建议尽可能使用块元素定位.(与浏览器有关) 4.常见的行内元素有:<a>.<span>.<input type="xxx"&g

清除行内元素之间HTML空白的几种解决方案

行内块(inline-block)是非常有用的特别是想要不用'block'和'float'来控制这些行内元素的margin,padding之时,行内元素之间的空白有时候显示在屏幕上那是相当的讨厌   至今我还记得年轻是在IE6上开发的那些苦逼日子,特别希望IE浏览器采用 inline-block 的显示方式. 行内块(inline-block)是非常有用的,特别是想要不用'block'和'float'来控制这些行内元素的margin,padding之时. 问题来了,HTML源码中行内元素之间的空

【原】行内元素产生水平空隙是bug吗

重构工程师们在设计代码时,有喜欢手动删除行内元素之间产生的额外空隙,并通过设置margin或padding来获取想要间距吗?如代码: <div class=""><span class="bgr">去掉了间距</span><span class="bgr">去掉了间距</span><span class="bgr">去掉了间距</span>&l