侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

css 块状元素和内联元素

前端  /  管理员 发布于 7年前   163

在用CSS布局页面的时候,我们会将HTML标签分成两种,块状元素和内联元素(我们平常用到的div和p就是块状元素,链接标签a就是内联元素)。是在CSS布局页面中很重要的两个概念,必须要理解透彻!既然说到概念就先看看块状元素和内联元素的定义。
注:这节课看似挺长,其实内容很少,通过举例子让大家更容易理解而已,不要被眼前的文字和代码吓到哟~
块状元素
一般是其他元素的容器,可容纳内联元素和其他块状元素,块状元素排斥其他元素与其位于同一行,宽度(width)高度(height)起作用。常见块状元素为div和p。
内联元素
内联元素只能容纳文本或者其他内联元素,它允许其他内联元素与其位于同一行,但宽度(width)高度(height)不起作用。常见内联元素为“a”。
做了个对比表,帮助大家更容易理解。
块状元素 内联元素
是否允许其他元素同处一行 no yes
width和height是否起作用 yes no
对于上面的概念,我们用实例的方式给大家讲明白,要注意听哟~
要求:ID为div1的红色(#900)区域,宽度和高度均为300像素,并且包含一个ID为div2的绿色区域,长度宽度
均为100像素的div2。
CSS代码如下:
#div1{width:300px; height:300px; background:#900;}
#div2{width:100px; height:100px; background:#090;}
HTML代码如下:
<div id="div1">
<div id="div2"></div>
</div>
为了方便初学者更好的学习,我把完整的代码发出来

复制代码代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>“可容纳内联元素和其他块状元素”</title>
<style type="text/css">
<!--
#div1{width:300px; height:300px; background:#900;}
#div2{width:100px; height:100px; background:#090;}
-->
</style>
</head>
<body>
<div id="div1">
<div id="div2"></div>
</div>
</body>
</html>

怎么样,是不是下面的效果

如果你做出来了,就继续往下看,咱们给刚才的要求再加一个条件,在div1里放入一个链接a,内容为“可容纳内联
元素和其他块状元素”颜色为白色。
CSS代码如下:
#div1{width:300px; height:300px; background:#900;}
#div2{width:100px; height:100px; background:#090;}
a{color:#fff;}
HTML代码如下:

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

是不是下面的效果

到这里,我们可以看得到div1这个块状元素里面拥有两个元素,一个是块状元素div2,另一个是内联元素a,这就是块状元素概念里面说的“一般是其他元素的容器,可容纳内联元素和其他块状元素”,为什么要说一般呢,因为块状元素不只是用来做容器,有时还有其他用途,比如利用块状元素将上下两个元素隔开些距离,再比如利用块状元素来实现父级元素的高度自适应,这方面的内容会在后面详细讲解,因为不属于本节知识,就不多说。

好~!我们继续加条件,在div1里面div2的后面再放入一个ID为div3的长宽均为100像素的蓝色(#009)区域块,代码如
下
CSS代码如下:
#div1{width:300px; height:300px; background:#900;}
#div2{width:100px; height:100px; background:#090;}
#div3{width:100px; height:100px; background:#009;}
a{color:#fff;}
HTML代码如下:

复制代码代码如下:
<div id="div1">
<div id="div2"></div>
<div id="div3"></div>
<a href="">可容纳内联元素和其他块状元素</a>
</div>

是不是下面这个效果

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

到这里,我想大家对“块状元素”的概念已经比较清楚了,下面通过例子给大家继续解释“内联元素”的概念,当然还是继续加条件,加个什么条件呢,在a的后面再加一个内容为“Love CSS”的链接,所有链接的背景设置为淡橙色(#F93)
CSS代码如下:
#div1{width:300px; height:300px; background:#900;}
#div2{width:100px; height:100px; background:#090;}
#div3{width:100px; height:100px; background:#009;}
a{color:#fff; background:#F93;}
HTML代码如下:

复制代码代码如下:
<div id="div1">
<div id="div2"></div>
<div id="div3"></div>
<a href="">可容纳内联元素和其他块状元素</a>
<a href="">Love CSS</a>
</div>

效果是不是下面这个

两个连接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就可以了,如下
  1. a{color:#fff; background:#F93;width:100px;height:50px; display:block;}
怎么样,起作用了吧,和下面的效果一样嘛~
 

为什么两个a不处于同一行了呢,那是因为这两个内联元素a都被转化成了块状元素,既然成功转化为块状元素,就应该具有块状元素最显著的一个特点,不允许其他元素与他同一行,所以这两个a垂直排列喽~
那有没有把法让他们处于同一行?当然有啦,后面课程会告诉大家^_^
好了,到这里,大家通过实例对内联元素的概念理解的也应该很透彻了,后面就列出所有的内联元素和块状元素,方便以后大家查阅


块元素(block element)
address - 地址
blockquote - 块引用
center - 举中对齐块
dir - 目录列表
div - 常用块级容易,也是CSS layout的主要标签
dl - 定义列表
fieldset - form控制组
form - 交互表单
h1 - 大标题
h2 - 副标题
h3 - 3级标题
h4 - 4级标题
h5 - 5级标题
h6 - 6级标题
hr - 水平分隔线
isindex - input prompt
menu - 菜单列表
noframes - frames可选内容,(对于不支持frame的浏览器显示此区块内容
noscript - 可选脚本内容(对于不支持script的浏览器显示此内容)
ol - 排序表单
p - 段落
pre - 格式化文本
table - 表格
ul - 非排序列表
内联元素(inline element)
a - 锚点
abbr - 缩写
acronym - 首字
b - 粗体(不推荐)
bdo - bidi override
big - 大字体
br - 换行
cite - 引用
code - 计算机代码(在引用源码的时候需要)
dfn - 定义字段
em - 强调
font - 字体设定(不推荐)
i - 斜体
img - 图片
input - 输入框
kbd - 定义键盘文本
label - 表格标签
q - 短引用
s - 中划线(不推荐)
samp - 定义范例计算机代码
select - 项目选择
small - 小字体文本
span - 常用内联容器,定义文本内区块
strike - 中划线
strong - 粗体强调
sub - 下标
sup - 上标
textarea - 多行文本输入框
tt - 电传文本
u - 下划线
var - 定义变量


  • 上一条:
    CSS 盒模型、块状元素与内联元素、CSS选择器
    下一条:
    CSS 理解盒子模型
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 使用 Alpine.js 排序插件对元素进行排序(0个评论)
    • 在js中使用jszip + file-saver实现批量下载OSS文件功能示例(0个评论)
    • 在vue中实现父页面按钮显示子组件中的el-dialog效果(0个评论)
    • 使用mock-server实现模拟接口对接流程步骤(0个评论)
    • vue项目打包程序实现把项目打包成一个exe可执行程序(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-03
    • 2018-04
    • 2018-05
    • 2018-06
    • 2018-09
    • 2018-11
    • 2018-12
    • 2019-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-04
    • 2021-05
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客