基本知识点

行内元素一般是内容的容器,而块级元素一般是其他容器的容器,行内元素适合显示具体内容,而块级元素适合做布局。

块级元素(block):独占一行,对宽高的属性值生效;如果不给宽度,块级元素就默认为浏览器的宽度,即就是100%宽。

行内元素(inline):可以多个标签存在一行,对宽高属性值不生效,完全靠内容撑开宽高。

行内块元素(inline-block):结合的行内和块级的优点,既可以设置长宽,可以让padding和margin生效,又可以和其他行内元素并排。

其中img和input为行内块元素

行内元素与块状元素之间的转换:

  1. float: 当把行内元素设置完float:left/right后,该行内元素的display属性会被赋予block值,且拥有浮动特性。行内元素去除了之间的莫名空白。
<head>    
<meta charset="UTF-8">    
<title>测试</title>    
<style type="text/css">        
p{
background-color: red;
height: 500px;
width: 30%;
padding: 20px;
margin: 20px;
float: left;}        
div{
background-color: green;
height: 50px;
width: 40%;
padding: 20px;
margin: 20px;}      
span{
background-color: gray;
height: 70px;
padding: 40px;
margin: 20px;
float:left;
width:200px;}      
strong{
background-color: blue;
height: 70px;
padding: 40px;
margin: 20px;}    
</style>
<!--<p>块级元素一</p>-->
<div>块级元素一</div>
<span>行内元素一</span>
<strong>行内元素二</strong>
</body>

如图,当把行内元素一设为左浮动时,就可以为其设置宽度了,说明它已经变成了块级元素。

2. position: 当为行内元素进行定位时,position:absolute与position:fixed.都会使得原先的行内元素变为块级元素。

3 .display:

1、块级标签转换为行内标签:display:inline;

2、行内标签转换为块级标签:display:block;

3、转换为行内块标签:display:inline-block;

常用的 display 可能的值:

特性

1.text-align属性对块级元素起作用,对行内元素不起作用:

原因是块级标签如果不给宽度,块级元素就默认为浏览器的宽度,即就是100%宽,那么在100%的宽度中居中生效;但是行内元素的宽完全是靠内容撑开,所以宽度就是内容撑开的宽:

所以块级是在盒子中间居中了,但是因为行内元素的宽就是内容宽,没有可居中的空间,所以text-align:center;就没有作用;但是如果给font转换为块级就不一样了:

2.块级元素独自占一行且宽度会占满父元素宽度,行内元素不会独占一行,相邻行内元素可以排在同一行。

3.块级元素可以设置weith和height,行内元素设置width和height无效,而且块级元素即使设置宽度也还是独占一行。注意但块级元素当没有明确指定 width 和 height 值时,块级元素尺寸由内容确定,当指定了 width 和 height 的值时,内容超出块级元素的尺寸就会溢出,这时块级元素要呈现什么行为要看其 overflow 的值(visible,hidden,overflow,scroll)

4.块级元素可以设置margin和padding属性,行内元素水平方向的margin和padding如margin-left、padding-right可以产生边距效果,但是竖直方向的margin-top、margin-bottom不起作用。

5.行内元素的padding-top和padding-bottom会起作用,不过就像脱离了标准流一样(即padding-left和padding-right的层级比其他元素高),并不会占据位置,并且还把其他元素给盖住了。但是,假如inline的元素没有内容,“padding-top、padding-bottom"将不起作用。如果想要起作用,只需要给padding-left或者padding-right设置一个值,或者当inline的元素有内容时就会起作用。

<style type="text/css">        
div{
background-color: green;
height: 50px;
width: 40%;;
padding: 20px;
margin: 20px;}        
span{
background-color:
gray;height: 70px;
padding: 40px;margin: 20px;}        
strong{background-color: blue;
height: 70px;
padding: 40px;
margin: 20px;
float: left;
}    
</style>
<div>块级元素一</div>
<span>行内元素一</span>
<strong>行内元素二</strong>

如图所示,当我们改变padding值时,效果是背景向四个方向扩展,padding-top和padding-bottom是增大的,但是对于块状元素一是没有影响的(在竖直方向上),不然行内元素一也不会挤入块状元素了。


下面的实例可以看到如果inline的元素没有内容,“padding-top、padding-bottom"将不起作用

<style>
body,div{
margin: 0;
padding:0;
}
.item1{
height:100px;
background-color: red;
}
.item2{
display: inline;
padding-top: 50px;
padding-bottom: 50px;
background-color: pink;
}
</style>
<div class="item1"></div>
<div class="item2"></div>


如果想让padding-top或者padding-bottom起作用,只需要给padding-left或者padding-right设置一个值,或者当inline的元素有内容时就会起作用。

<style>
body,div{
margin: 0;
padding:0;
}
.item1{
height:100px;
background-color: red;
}
.item2{
display: inline;
padding-top: 50px;
padding-bottom: 50px;
padding-left: 50px;
background-color: pink;
}
</style>
<div class="item1"></div>
<div class="item2"></div>

6.当inline-block碰到同类(inline,inline-block)时,谁的上下margin、paddin或line-height大,就听谁的。除非它是inline,因为inline的margin是不起作用的。且inline的padding是不占空间的。

<style>
body,div{
margin: 0;
padding:0;
}
.item1{
display: inline-block;
width: 100px;
height:100px;
margin-top: 20px;
background-color: red;
}
.item2{
margin-top: 100px;
display: inline-block;
background-color: pink;
}
</style>
<div class="item1">item1</div>
<div class="item2">item2</div>


<style>
body,div{
margin: 0;
padding:0;
}
.item1{
display: inline-block;
width: 100px;
height:100px;
line-height: 100px;
background-color: red;
}
.item2{
display: inline-block;
background-color: pink;
}
</style>
<div class="item1">item1</div>
<div class="item2">item2</div>

如图所示,inline-block碰到同类时,行高也会一起使用。其他的padding-top和margin-top甚至都会一起使用

7.inline和inline-block会引起间距的空格

<style>
body,div{
margin: 0;
padding:0;
}
div{
display: inline;
background-color: #61dafb;
}
</style>
<div class="item1">item1</div>
<div class="item2">item2</div>

可以看到两个div之间会有几个像素的间距,这个间距是有换行或回车导致的。有以下解决方法

(1)将空格直接删除,放到一行

 <div class="item1">item1</div><div class="item2">item2</div>

(2)在空格代码中加入注释

<div class="item1">item1</div><!--
--><div class="item2">item2</div>

(3)设置margin-left为负值,但是每个浏览器的间距不一样,所以基本不用这种方法

.item2{
margin-left:-8px;
display:inline;
background-color:pink;
}

(4)给父元素增加“font-size:0px"

<style>
body,div{
margin: 0;
padding:0;
}
body{
font-size: 0px;
}
.item1{
display: inline-block;
width:100px;
height:100px;
font-size: 20px;
background-color: red;
}
.item2{
display:inline-block;
font-size: 20px;
background-color: pink;
}
</style>
<div class="item1">item1</div>
<div class="item2">item2</div>

(5)给父元素加letter-spacing负值,然后通过子元素清除letter-spacing值

<style>
body,div{
margin: 0;
padding:0;
}
body{
letter-spacing: -8px;
}
body *{
letter-spacing: 0px;
}
.item1{
display: inline-block;
width:100px;
height:100px;
background-color: red;
}
.item2{
display:inline-block;
background-color: pink;
}
</style>
<div class="item1">item1</div>
<div class="ite

CSS的inline、block与inline-block的更多相关文章

  1. CSS——display(Block none inline等)属性的用法

    在一般的CSS布局制作时候,我们常常会用到display对应值有block.none.inline这三个值.下面我们来分别来认识和学习什么时候用什么值.这里通过CSS display知识加实例.图演示 ...

  2. CSS基础:block,inline和inline-block

    css的display属性是前端开发中非常常见的属性,本文简单介绍下其中比较常用的属性值,即block.inline和inline-block. HTML组件中呈现一片空白区域的组件都可当盒模型(bo ...

  3. css display block 和 inline

    根据CSS规范的规定,每一个网页元素都有一个display属性,用于确定该元素的类型,每一个元素都有默认的display属性值,比如div元素,它的默认display属性值为“block”,成为“块级 ...

  4. css(二) block,inline和inline-block概念和区别

    转: http://www.cnblogs.com/KeithWang/p/3139517.html 总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-leve ...

  5. Css 中的 block,inline和inline-block概念和区别

    1.block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通常被现 ...

  6. css菜鸟学习之block,inline和inline-block概念和区别

    block,inline和inline-block概念和区别   总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) ...

  7. HTML/CSS:block,inline和inline-block概念和区别

    总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...

  8. CSS中block,inline和block-inline的区别(转载)

    http://www.cnblogs.com/KeithWang/p/3139517.html 总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level e ...

  9. css盒子流动和block。inline

    回忆一下盒子流动等概念! 1.盒子模型的宽度与高度,都是包括padding的值.(代码的理解如下:) 这样的结果的到就是  宽度和高度都是220了 2.流动型,在标签中存在块级元素和行内元素, 块级元 ...

  10. block,inline,inline-block的区别

    block: 英语翻译过来是“块”意思,就跟小时候玩过的积木方块一样,一块一块往上搭. inline: 英语翻译过来就是“内联”的意思,内联不好理解,我的理解就是行内元素: block和inline都 ...

随机推荐

  1. TypeScript学习第二天:认识ts的数据类型

    目录 1,类型总览 2,基本类型 2.1,布尔 2.2,数字 2.3,字符串 2.4,Null 2.5,undefined 2.6,symbol 2.7,bigint 3,引用类型 3.1,数组 Ar ...

  2. Vue3中setup语法糖学习

    目录 1,前言 2,基本语法 2,响应式 3,组件使用 3.1,动态组件 3.2,递归组件 4,自定义指令 5,props 5.1,TypeScript支持 6,emit 6.1,TypeScript ...

  3. SQL注入 - SQLi-Labs靶场过关记录

    Less-1 1.看报错类型,确定注入点 ?id=1' order by 4--++ 2.确定数据库 ?id=-1' union select 1,2,3--++ 3.查看数据库 ?id=-1' un ...

  4. composer 自动载入的四种方式

    对于第三方包的自动加载,Composer提供了四种方式的支持,分别是 PSR-0和PSR-4的自动加载,生成class-map,和直接包含files的方式. 首先引入autoload.php,在主文件 ...

  5. JS 实现排序算法

    冒泡排序 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的元素重复以上的步骤,除了 ...

  6. ubuntu 16.04和18.04 忘记登录密码的解决办法

    1:开机按Shift键,出现如下界面.(手速要快,Shift键要按时间久一点)选择第二项 2:按回车键进入如下界面,然后选中有recovery mode的选项(第三项) 3:按e进入如下界面,并找到图 ...

  7. 常用QQ快捷键

    QQ是腾讯QQ的简称,是一款基于Internet即时通信(IM)软件.目前QQ已经覆盖Microsoft Windows.macOS.Android.iOS.Windows Phone.Linux等多 ...

  8. 自动化运维之SaltStack初探

    1.1.基础环境 linux-node1(master服务端) 192.168.31.46 CentOS 6.6 X86_64 linux-node2(minion客户端) 192.168.31.47 ...

  9. contos 配置国内yum源

    contos配置国内yum源 前言 rpm管理软件包的命令,很难用,需要手动解决以来关系,所以最好用 yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个distribution ...

  10. python练习册 每天一个小程序 第0001题

    1 # -*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述: 5 做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生 ...