我们在编写 html 元素的时候会发现,有些元素会独占一行,有些不会,这就是元素的显示模式。了解他们有利于我们更好布局我们的网页。
根据元素显示模式,我们一般把元素分为:行内元素、块级元素、行内块元素。
常见的块级元素有 <h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>
特点
独占一行。
高度、宽度、外边距以及内边距(边距这里在盒子模型会细讲)都可以控制。
宽度默认为是父级宽度的100%。
可以当成容器,里面可以放行内元素或者块级元素。
html(设置 div 长宽为 200px,并且背景色为红色)
<body>
<div>
我独占一行,略略略~
div>
Lorem ipsum dolor sit amet.
body>
css
效果
我们发现即使设置了长宽,下面的文字也依旧无法上来,这表明:块级元素十分霸道,即使失去了也不让其他人用!
注意点:文字类的元素 <p>、<h1> - <h6> 等不能使用块级元素(其实想想也是,谁文字里面还放盒子…)
常见的行内元素有 <a>、<strong>、<em>、<del>、<ins>、<span> 等,行内元素也叫内联元素
特点
相邻的行内元素在一行上,一行可以显示多个
高度和宽度无法设置。
宽度默认为是内容的宽度。
行内元素只能容纳文本或其他行内元素。(这里想想如果里面放一个块级元素,不得撑暴)
html(放置5个 span 元素,内容任意)
<body>
<span>我是第1块span><span>我是第2块span><span>我是第3块span><span>我是第4块span><span>我是第5块span>
body>
css(为了显示更明显,这里使用 border 属性)
效果
注意点
空白折叠的概念:在源代码中的连续空白字符(空格、换行、制表符),在页面显示时,会被折叠为一个空格。
而这种现象也会发生在行内元素和行内元素之间。
html(同样放置5个span元素,同样内容,但标签换行)
<body>
<span>我是第1块span>
<span>我是第2块span>
<span>我是第3块span>
<span>我是第4块span>
<span>我是第5块span>
body>
css(样式不变)
效果
我们发现行级元素之间都有空隙,这就是发生了空白折叠现象。
行内块有 <img />、<input />、<td> 等,他们同时具有行内元素和块级元素的特点。
特点
和相邻的行内(行内块)元素在一行上,之间会有空白缝隙(产生空白折叠),一行仍然可以显示多个(行内元素的特点)
宽度默认为是内容的宽度。(行内元素的特点)
高度、宽度、外边距以及内边距都可以控制。(块级元素的特点)
html(放置5个 span 元素,内容任意,但是标签换行)
<body>
<input type="text">
<span>内联1span>
<input type="text">
<span>内联2span>
<input type="text">
<span>内联3span>
<input type="text">
<input type="text">
body>
css(为了显示更明显,这里使用 border 属性)
效果
我们看到输入框宽高可控,并且和其他内联元素保持在同一行,且不管是行内元素和行内块元素之间,还是行内块元素和行内块元素之间都发生了空白折叠现象。
我们知道 web 标准中规定:HTML 应该控制结构,CSS 应该控制样式。但我无论是块级元素、行级元素或者行内块元素显然是在标签写下去的时候就定义下来了。所以我们需要显示模式的转化。
css
display: block; /* 转化为块级元素 */
display: inline; /* 转化为行内元素 */
display: inline-block; /* 转化为行内块元素 */
每个超链接宽高分别为:230px,40px
这里文本主要注意的是 垂直居中显示
html
<body>
<a href="https://www.baidu.com">手机 电话卡a>
<a href="#">电视 盒子a>
<a href="#">笔记本 平板a>
<a href="#">出行 穿戴a>
<a href="#">智能 路由器a>
<a href="#">健康 儿童a>
<a href="#">耳机 音响a>
body>
css
我们知道单行文本的水平居中可以使用 text-align 属性来设置,但单行文本的垂直居中 css 并没有相应属性可以使用。这时候,我们应该想到行间距
其实总结起来就是:上间距和下间距一定相等,行高 = 盒子高度时,上下间距刚好都在盒子里,并且在盒子里的高度相同,所以看上去文本居中。而当行高 > 盒子高度,上下间距也变大,但上间距会把文字挤下去,而下间距会超出盒子范围。而当行高 < 盒子高度,上下间距也变小,但上间距会把文字缩写,文本上升。
本文主要学习黑马程序员pink老师的视频
如有错误,敬请指正,欢迎交流🤝,谢谢♪(・ω・)ノ