DIVCSS 基础五:块状元素和内联元素

[复制链接]
建站高手 发表于 2015-9-5 18:22:35 [DIVCSS] 显示全部楼层 |阅读模式 上一主题 下一主题
ad广告
ad广告

马上注册,一起探讨正确快速的建站方法

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
我们在布局页面的时候,会将HTML标签分成两种,块状元素和内联元素(我们平时用到的标签div和p就是块状元素,链接标签a就是内联元素)。它们是很重要的两个概念,既然说到概念就先看看块状元素和内联元素的定义,在定义中你要留意它们两个的不同之处。

注:这节课看似挺长,其实内容很少,通过举例子帮助大家更容易理解而已,不要被眼前的文字和代码吓到。

块状元素

一般是其他元素的容器,可容纳内联元素和其他块状元素,块状元素排斥其他元素与其位于同一行,宽度(width)高度(height)起作用。常见块状元素为div和p。

内联元素

内联元素只能容纳文本或者其他内联元素,它允许其他内联元素与其位于同一行,但宽度(width)高度(height)不起作用。常见内联元素为“a”。

做了个对比表,帮助大家理解。
1.png
对于上面的概念,我们用实例的方式给大家讲明白,如下

【要求】
ID为div1的红色(#900)区域,宽度和高度均为300像素,并且包含一个ID为div2的绿色区域,长度宽度均为100像素的div2。

CSS代码如下:

  1. #div1{width:300px; height:300px; background:#900;}
  2. #div2{width:100px; height:100px; background:#090;}
复制代码


HTML代码如下:

  1. <div id="div1">
  2. <div id="div2"></div>
  3. </div>
复制代码


为了方便初学者更好的学习,我把完整的代码发出来

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  6. <title>站帮网---“可容纳内联元素和其他块状元素”</title>
  7. <style type="text/css">
  8. <!--
  9. #div1{width:300px; height:300px; background:#900;}
  10. #div2{width:100px; height:100px; background:#090;}
  11. -->
  12. </style>
  13. </head>
  14. <body>
  15. <div id="div1">
  16. <div id="div2"></div>
  17. </div>
  18. </body>
  19. </html>
复制代码


怎么样,是不是下面的效果:
2.jpg
如果你做出来了,就继续往下看,咱们给刚才的要求再加一个条件,在div1里放入一个链接a,内容为“可容纳内联元素和其他块状元素”颜色为白色。

CSS代码如下:
  1. #div1{width:300px; height:300px; background:#900;}
  2. #div2{width:100px; height:100px; background:#090;}
  3. a{color:#fff;}
复制代码


HTML代码如下:
  1. <div id="div1">
  2. <div id="div2"></div>
  3. <a href="#">可容纳内联元素和其他块状元素</a>
  4. </div>
复制代码


是不是下面的效果:
3.jpg
到这里,我们可以看到div1这个块状元素里面拥有两个元素,一个是块状元素div2,另一个是内联元素a,这就是块状元素概念里面说的“一般是其他元素的容器,可容纳内联元素和其他块状元素”,为什么要说一般呢,因为块状元素不只是用来做容器,有时还有其他用途,这方面的内容会在后面详细讲解,因为不属于本节知识,就不多说。

好~!我们继续加条件,在div1里面div2的后面再放入一个ID为div3的长宽均为100像素的蓝色(#009)区域块,代码如下

CSS代码如下:
  1. #div1{width:300px; height:300px; background:#900;}
  2. #div2{width:100px; height:100px; background:#090;}
  3. #div3{width:100px; height:100px; background:#009;}
  4. a{color:#fff;}
复制代码


HTML代码如下:
  1. <div id="div1">
  2. <div id="div2"></div>
  3. <div id="div3"></div>
  4. <a href="#">可容纳内联元素和其他块状元素</a>
  5. </div>
复制代码


是不是下面这个效果:
4.jpg
是不是和自己事先想象的不一样,本以为蓝色会处于绿色的右侧,可是却位于下侧,如果你再加几个div4,div5同样的他们还是继续位于前一个下面,垂直排列,这就是块状元素概念中说的“块状元素排斥其他元素与其位于同一行”说白了,就是块状元素比较霸道,谁都别想和他坐同一行,甭管你是和他有亲戚关系的块状元素还是毫无联系的内联元素,都不行,都到下面一行待着去,看看例子中,绿色方块和蓝色方块是不是各处同一行,内联元素a也别想和他处一行,但是事情是没有绝对的,块状元素不是不允许其他元素和他处一行嘛,不是比较霸道嘛,没关系,咱有办法,具体什么办法,我们后面会详细讲解,知识不属于本节内容,就也不多说了,大家留意后面的教程就可以了~

到这里,我想大家对“块状元素”的概念已经比较清楚了,下面通过例子给大家继续解释“内联元素”的概念,当然还是继续加条件,加个什么条件呢,在a的后面再加一个内容为“Love CSS”的链接,所有链接的背景设置为淡橙色(#F93)

CSS代码如下:
  1. #div1{width:300px; height:300px; background:#900;}
  2. #div2{width:100px; height:100px; background:#090;}
  3. #div3{width:100px; height:100px; background:#009;}
  4. a{color:#fff; background:#F93;}
复制代码


HTML代码如下:
  1. <div id="div1">
  2. <div id="div2"></div>
  3. <div id="div3"></div>
  4. <a href="#">可容纳内联元素和其他块状元素</a>
  5. <a href="#">Love CSS</a>
  6. </div>
复制代码


效果是不是下面这个:
5.jpg
两个链接a是不是处于同一行(不要忘记a是内联元素),这就解释了概念上说的“内联元素允许其他内联元素与其位于同一行”,为什么不说“内联元素允许其他元素与其位于同一行”,因为其他元素包括两种元素,内联元素和块状元素,它如果和内联元素在一块那就肯定在一行了,如果和块状元素在一块,即使它同意,他后面的块状元素也不同意,块状元素会另起一行位于它的下一行。

我们继续添加条件,现在大家给内联元素a在css中加上宽度和高度,比如width:100px;height:50px;,看看有什么变化

CSS代码
  1. #div1{width:300px; height:300px; background:#900;}
  2. #div2{width:100px; height:100px; background:#090;}
  3. #div3{width:100px; height:100px; background:#009;}
  4. a{color:#fff; background:#F93;width:100px;height:50px;}
复制代码

看到效果了没有,是不是没有任何变化呢,这就说明了概念中的内联元素的宽度(width)高度(height)不起作用,它的大小只随内部文本或者其他内联元素变化,具体证明算是给大家一个作业,自己来证明一下。

如果要让定义好的宽度和高度对内联元素起作用,有什么办法没有?答案是:当然。因为事情没有绝对的在CSS上面也成立,因为CSS中有两种元素,内联元素和块状元素,但是宽度和高度只对块状元素起作用,内联元素不起作用,如果我们把内联元素转化成块状元素,他不就具有了块状元素的特性了嘛,当然宽度和高度也就起作用了,如果你能想到这个思路,证明你的大脑现在非常活跃哟,这时候我们只需要给相应的内联元素加上一个属性display:block就可以了,如下
a{color:#fff; background:#F93;width:100px;height:50px; display:block;}
怎么样,起作用了吧,和下面的效果一样吗~
7.jpg
为什么两个a不处于同一行了呢,那是因为这两个内联元素a都被转化成了块状元素,既然成功转化为块状元素,就应该具有块状元素最显著的一个特点,不允许其他元素与他同一行,所以这两个a垂直排列喽~

那有没有办法让他们处于同一行?当然有啦,后面课程会告诉大家^_^

好了,到这里,大家通过实例对内联元素的概念理解的也应该很透彻了,后面就列出所有的内联元素和块状元素,方便以后大家查阅,常用的块状元素和内联元素,就那么几个,多练习练习自然而然就记住了,平时给大家做培训的时候更强调的是要理解,而不是刻意去记!硬是记下来的,持久性也不长过段时间就忘,在课堂我时常拿例子,通过合理的引导,大家就可以自己推理,自己总结,这样学习效果就非常理想!

另外推荐阅读:
基础四:盒子模型
http://bbs.zb7.com/thread-529504-1-1.html
基础三:CSS选择器命名及常用命名
http://bbs.zb7.com/thread-529503-1-1.html
基础二:CSS选择器
http://bbs.zb7.com/thread-529501-1-1.html
基础一:CSS如何控制页面
http://bbs.zb7.com/thread-529478-1-1.html




上一篇:基础四:盒子模型
下一篇:xHTML究竟有多少个标签?

大神点评2

teamczyx 发表于 2015-9-6 00:40:22 [DIVCSS] 显示全部楼层
我只是路过站帮网打酱油的,顺便支持下
huakhl 发表于 2015-9-6 14:07:16 [DIVCSS] 显示全部楼层
强烈支持,站帮网有你更精彩
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

快速回复 返回顶部 返回列表