替换元素与非替换元素

  • 替换元素:是指浏览器根据元素的标签和属性来决定元素的具体内容。
 例如"<img src="xx.jpg">浏览器会根据标签的src属性的值来读取图片信息并显示,<input type="radio">浏览器会根据input标签的type属性来决定是显示输入框还是单选按钮
  • 非替换元素:其内容直接显示在客户端的元素叫非替换元素
 <h1>shizai</h1>
<div>shashi</div>

包含块

在css中,有时一个元素的位置和尺寸的计算都相对于一个矩形,这个矩形被称作包含块。包含块是一个相对的概念,比如子元素的初始化布局总是在父元素的左上角,这就是一个相对的概念。每个元素都会生成一个包含块,但这个包含块是虚无的,你看不到也摸不着,只是一个概念。包含块吧并不会限制它里面元素的大小,如果里面的元素比包含块大,那么超出的部分就会被溢出。一个元素的位置和尺寸与它的包含块息息相关,而元素会为它的子孙元素创建包含块,但这并不代表这个包含块就是它的父元素(不过这个父元素确实和包含块有着一些联系)。在某些情况下,我们可以将包含块理解为父元素。

包含块的创建

  • 在HTMl中,根元素的包含块叫作初始包含块,具体创建由客户端决定
  • 当定位置为fixed,则包含块由视口创建
  • 当定位值为relative,static或没有设置定位属性,则包含块由最近的父元素或祖先元素创建
  • 当定位值为absolute,则包含块由最近的定位值relative、absolute、fixed创建。如果没有定位的祖先元素,则包含块为初始包含块(具体由客户端决定)
  • 当祖先元素时行内元素时,那么包含块取决于父元素或祖先元素的direction属性

    当定位值为absolute,父元素没有设置定位时,包含块为初始包含块。而如果指定了其定位值,则包含块由其定位了的父元素或祖先元素创建

 <style>
.box{
width: 100px;
height:100px;
border:1px solid red;
}
.box1{
position: absolute;
left:0;
top:0;
}
.box2{
position: relative;
left:100px;
}
.box2 .item,.box3,.box3 .item,.box4 .item{
position: absolute;
}
.box4{
position: fixed;
left: 200px;
}
</style>
<div class="box box1">父元素或祖先元素没有定位时</div>
<div class="box box2">
<div class="item">父元素或祖先元素定位值为relative</div>
</div>
<div class="box box3">
<div class="item">父元素或祖先元素定位值为absolute</div>
</div>
<div class="box box4">
<div class="item">父元素或祖先元素定位值为fixed</div>
</div>

当祖先元素时行内元素时,若direction值为ltr则右边补空白,若direction值为rtl则左边补空白

 <style>
.box{
display: inline;
direction: ltr;
width: 100px;
height: 100px;
}
.box2{
display:inline;
direction: rtl;
width:100px;
height: 100px;
}
</style>
<div class="box">
<div class="item">direction:ltr</div>
</div>
<div class="box2">
<div class="item">direction:rtl</div>
</div>

控制框

控制框主要指display的属性所形成的框,包括块框,匿名块框,行内框,匿名行内框,插入框(run-in).

display的一些属性:

  • block生成一个块框
  • inline-block生成一个块框,元素内部按照块框格式化,但元素本身按照一个行内元素的形式来格式化(初始化)
  • inline生成一个或多个行内框
  • list-item生成一个块框和一个列表行内框
  • none将不在结构中显示,不产生任何框,并且子孙元素也不产生任何框
  • run-in将根据后一个元素来选择要生成的框

1.块级元素与块框

其中可以产生块元素的值为block,list-item,run-in,table。块级元素除了table外都会形成一个主块框,并且这个主块框只包含一个类型的框,就是说里面要么是块框,要么是行内框。主块框会为子孙元素建立包含块,生成内容。主块框参与块级格式化上下文。某些块级元素还会在主块框之外生成额外的框,比如当某个元素的display值为list-item时,它会生成一个额外的框用来放置那些标志,比如li元素前面的标志

2.匿名块框

<div>
这是一段<p>内容</p>
</div>

div包括了一段文本和一个块框(p),此时div似乎既包括了行内框,又包括了一个块框,那么它会将所有的行内框都包含在一个匿名块框之中

3.行内框

可以产生行内元素的值为inline,inline-table,run-in

4.匿名行内框

<div>
这是一段<em>内容</em>
</div>

div包括了一段文本和一个em元素,此时div似乎包含的都是一个行内框,那么它会为这段文本生成一个匿名行内框。在格式化table时,会形成更多的匿名行内框。

5.插入框(run-in)

如果一个元素的display值为run-in,那么它会根据后面的元素来确定它的类型应该是什么。这个属性在新的Chrome版本中已经移除了,可以不用关注该属性了。

本文转载于猿2048:css中几个重要概念

css中几个重要概念的更多相关文章

  1. CSS中的几个概念--------Day39

    世界杯疯狂来袭,让这个原本就高温的夏季瞬间被引爆了,这肆虐的激情仿佛让一切都灼热了起来,绽放着刺目的光,工作之余总有那么一群人在那激烈的讨论着争辩着,抑不住的亢奋. 非常不巧,往往这群身影中总有我的存 ...

  2. CSS中的盒子模型与 box-sizing 属性

    盒子模型是css中一个重要的概念,是开发网页必须要用的布局方法.盒子模型有两种,分别是标准 w3c 盒子模型和 ie 盒子模型. 标准 w3c 盒子模型:包括 magin(外边距).border(边框 ...

  3. 利用DIV+CSS制作网页过程中常用的基本概念及标签使

    CSS主要用于对HTML文件功能的补充及扩展,其作用就是对HTML文件中各种排版进行设置,达到对网页中字体.颜色.背景.图片等的控制,使网页能够完全依照设计者的想法来显示. CSS可以控制网页的显示, ...

  4. 利用DIV+CSS制作网页过程中常用的基本概念及标签使用细节

    CSS主要用于对HTML文件功能的补充及扩展,其作用就是对HTML文件中各种排版进行设置,达到对网页中字体.颜色.背景.图片等的控制,使网页能够完全依照设计者的想法来显示. CSS可以控制网页的显示, ...

  5. CSS中层叠和继承的概念。

    继承 CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代.比如下面代码: 1 2 3 4 5 6 7 8 9 <ht ...

  6. CSS中那些必须掌握的概念

    一.盒子模型 1.什么是盒子模型 css盒模型本质上是一个盒子,封装周围的html元素,它包括:外边距(margin).边框(border).内边距(padding).实际内容(content)四个属 ...

  7. CSS中一些重要概念

    在CSS的最后一个博客中,将学习整理一些CSS中的重要概念,对这些重要概念的掌握,将对CSS的认识十分重要. 了解这些概念对深入理解CSS的本质十分重要:(1)包含块containing block ...

  8. 对CSS中的Position、Float属性的一些深入探讨

    对CSS中的Position.Float属性的一些深入探讨 对于Position.Float我们在平时使用上可以说是使用频率非常高的两个CSS属性,对于这两个属性的使用上面可能大多数人存在一些模糊与不 ...

  9. 浅析CSS中的BFC和IFC

    1. 为什么会有BFC和IFC 首先要先了解两个概念:Box和formatting context: Box:CSS渲染的时候是以Box作为渲染的基本单位.Box的类型由元素的类型和display属性 ...

随机推荐

  1. 3. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识bombardier

    目录 堪比JMeter的.Net压测工具 - Crank 入门篇 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml 堪比JMeter的.Net压测工具 - Crank 进阶篇 ...

  2. 【面经】Java面试突击

    基础语法 基本数据结构 Java 的基本数据类型有 8 种,包括 6 种数字类型.1 种字符类型和 1 种布尔类型. 基本数据类型总览 数字类型包括 4 种整数类型和 2 种浮点数类型,4 种整数类型 ...

  3. 创建 maven项目时:Cannot resolve Plugin org.apache.maven.plugins:maven-install-plugin报错

    Maven在每一次下载jar包的过程中,一旦第一次下载完成后,就会有一个lastUpdate文件,表示该jar包已经下载.下次再检索这个包,也就不会去远程仓库进行下载. 解决办法:找到自己的maven ...

  4. Kernel pwn 基础教程之 ret2usr 与 bypass_smep

    一.前言 在我们的pwn学习过程中,能够很明显的感觉到开发人员们为了阻止某些利用手段而增加的保护机制,往往这些保护机制又会引发出新的bypass技巧,像是我们非常熟悉的Shellcode与NX,NX与 ...

  5. 2.4 C++STL deque容器详解

    文章目录 2.4.1 引入 2.4.2 代码示例 2.4.3 代码运行结果 2.4.4 具体案例 总结 2.4.1 引入 deque容器类比vector容器来学习. deque为双向开口容器,见下图. ...

  6. java 实现装饰器设计模式

    package com.gylhaut.base; /** * 装饰器 * 类与类之间的关系 * 1.依赖:形参(局部变量) * 2.关联:属性 * 聚合 属性 整体和部分 不一致的生命周期 人和手 ...

  7. WPF 布局之综合实例

    WPF 布局之综合实例 <Window x:Class="UniFormGridDemo.MainWindow" xmlns="http://schemas.mic ...

  8. LFS系列镜像在阿里云镜像站首发上线

    LFS镜像 镜像详情页: https://developer.aliyun.com/mirror/lfs Linux From Scratch (LFS) 是一个项目,它为您提供完全从源代码构建您自己 ...

  9. Azure DevOps (五) 推送流水线制品到流水线仓库

    上一篇我们成功创建了我们的第一条流水线,并且配置了阿里云的maven加速,这篇文章我们来研究一下如何把编译好的代码上传到azure的流水线制品仓库中 为后续我们进行发布做准备 首先打开我们上一次编辑的 ...

  10. [SPDK/NVMe存储技术分析]002 - SPDK官方介绍

    Introduction to the Storage Performance Development Kit (SPDK) | SPDK概述 By Jonathan S. (Intel), Upda ...