CSS | 块级元素和行内元素
学习的初期,我们就要知道,标准文档流等级森严。标签分为两种等级:
- 行内元素
- 块级元素
行内元素和块级元素的区别:(非常重要)
行内元素:
- 与其他行内元素并排;
- 不能设置宽、高。默认的宽度,就是文字的宽度。
块级元素:
- 霸占一行,不能与其他任何元素并列;
- 能接受宽、高。如果不设置宽度,那么宽度将默认变为父亲的100%。
块级元素和行内元素的分类:
从HTML的角度来讲,标签分为:
- 文本级标签:p、span、a、b、i、u、em。
- 容器级标签:div、h系列、li、dt、dd。
PS:为甚么说p是文本级标签呢?因为p里面只能放文字&图片&表单元素,p里面不能放h和ul,p里面也不能放p。
从CSS的角度讲,CSS的分类和上面的很像,就p不一样:
- 行内元素:除了p之外,所有的文本级标签,都是行内元素。p是个文本级,但是是个块级元素。
- 块级元素:所有的容器级标签都是块级元素,还有p标签。
块级元素和行内元素的相互转换 :
我们可以通过display属性将块级元素和行内元素进行相互转换。display即“显示模式”。
display的属性:
--- inline 行内
--- inline-block 行内块(常用)li 并排
--- block 块(常用)
--- none 不显示
块级元素可-----行内元素:
一旦,给一个块级元素(比如div)设置:display: inline;
那么,这个标签将立即变为行内元素,此时它和一个span无异。inline就是“行内”。也就是说:
- 此时这个div不能设置宽度、高度;
- 此时这个div可以和别人并排了
行内元素-----块级元素:
同样的道理,一旦给一个行内元素(比如span)设置:display: block;
那么,这个标签将立即变为块级元素,此时它和一个div无异。block”是“块”的意思。也就是说:
- 此时这个span能够设置宽度、高度
- 此时这个span必须霸占一行了,别人无法和他并排
- 如果不设置宽度,将撑满父亲
导航栏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> * { padding: 0; margin: 0; } ul li { width: 180px; height: 60px; background: #566363; /*设置边框*/ /*border: 1px solid red;*/ /*垂直居中。行高等于盒子高度,就实现垂直居中*/ line-height: 60px; /*水平居中*/ text-align: center; } ul li a { width: 180px; height: 60px; display: block; /*去掉下划线*/ text-decoration: none; color: white; font-size: 30px; } ul li a:hover { background: #ff6700; color: white; } </style> </head> <body> <ul> <li> <a href="#">导航1</a> </li> <li> <a href="#">导航2</a> </li> <li> <a href="#">导航3</a> </li> <li> <a href="#">导航4</a> </li> <li> <a href="#">导航5</a> </li> </ul> </body> <html>
网页效果:

行高等于盒子高度,就实现垂直居中
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta http-equiv="content-Type" charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Title</title> <style> *{ padding: 0; /*将所有默认的padding和margin清0*/ margin: 0; } a{ /*a标签为下面的图片设置成块级标签,然后设置宽高*/ display: block; width: 300px; height: 300px; } img{ width: 300px; height: 300px; } ul{ list-style: none; /*list标签的默认样式清除,这样就不会显示前面的点了*/ } ul li{ display: inline; /*把ul下的list标签设置成行内块标签并排显示,因为body里面的每个li占一行,所以空白折 叠,所以相互之间空一格*/ background: red; padding: 10px /*list盒子上下左右都有内边距*/ /*width: 200px;*/ /*height: 100px;*/ /*line-height: 100px;*/ /*height和line-heigh设置一样大小,文本垂直居中;文本水平居中text-align: center*/ /**/ /*text-align: left;*/ /*font-size: 12px;*/ /*建议单位用em*/ /*text-indent: 2em;*/ } </style> </head> <body> <div class="box"> <a href=""> <img src="./timg.jpg" alt="" > </a> </div> <div>alex</div> <ul> <li>小米手机</li> <li>红米</li> <li>电视</li> <li>笔记本</li> </ul> </body> </html>

浙公网安备 33010602011771号