元素的默认样式 是什么决定了元素的样式?为什么有的元素独占一行,而有的元素能共处一行? ? 这要归因于元素的默认样式,这其中就有我们要探讨的第一个 CSS 知识点:行内元素和块级元素。...第三步:再画一些方框 我们想把头像图片放在左侧,其余元素放在右侧。你可能会根据刚刚探讨的行内和块级知识来推断,认为只要把右侧的元素都包裹到一个如 span 标签般的行内元素中,就完事大吉了。...它们各自适用于不同的场景,对于二者,我们都要学习,技不压身。有些情况你甚至会同时使用二者 —— 例如 Grid 布局排布整体页面,而 Flexbox 布局调控页面中的一个表单。...这是因为 div 作为块级元素(如果没有空行就引入一个)是看不见的。当你需要一个包裹其他元素的容器,除了 div 之外没有更贴合语义的选择了。...em 随字号改变而改变,因此可以用 1em 来表达 “我想让文字下方的 margin 和文字的高度一样,不论文字高度是多少”。 现在的效果如下: ? 现在让我们把图片缩小一些,并将其设置为圆形。
水平居中 内联元素 要使内联元素(如链接,span 或img)居中,使用 text-align: center 足够了。...Flexbox 使用 flexbox 也可以快速居中元素: .desk { display: flex; justify-content: center; } 对于多个内联的项目,也可以正常工作...对于多个元素,我们不需要将它们包裹在一个元素中,flexbox 可以将它们都居中。....plate { position: absolute; left: 50%; margin-left: -60px; } 垂直居中 内联元素 Vertical Padding 垂直居中元素最简单的方法之一是使用...没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。
大家都说简历没项目写,我就帮大家找了一个项目,还附赠【搭建教程】。 水平居中 内联元素 要使内联元素(如链接,span 或img)居中,使用 text-align: center 足够了。...flex; justify-content: center; } 对于多个内联的项目,也可以正常工作: image.png CSS Grid 使用网格容器时,图中的盘子将根据其网格区域居中。...对于多个元素,我们不需要将它们包裹在一个元素中,flexbox 可以将它们都居中。...在已知元素宽度的情况下,可以使用负边距代替CSS transform。....plate { position: absolute; left: 50%; margin-left: -60px; } 垂直居中 内联元素 Vertical Padding 垂直居中元素最简单的方法之一是使用
-- 页面内容 --> 这是一个HTML文档的框架,其中包括了声明、元素、元素和元素。...内联样式 在HTML中,可以使用内联样式(inline style)来为单个元素定义样式,这样的样式规则仅适用于特定的元素。...内联样式通过style属性来设置,如下所示: 这是一个标题 在上面的例子中,元素具有内联样式,文本颜色被设置为蓝色。 4.... 这是一个样式化的区块。 这两个元素都应用了.my-class类定义的样式规则。 5....通过使用CSS媒体查询(media queries),你可以根据屏幕宽度、高度和其他属性来应用不同的样式规则。这样,你可以创建适用于桌面、平板和手机等设备的网页布局。 10.
我可以画一条直线,将所有子元素串起来,就像烤肉一样: 然而,交叉轴是不同的。「一条垂直的直线只会与其中一个子元素相交」。 这更像是垂直方向用牙签串的烤肠,而不是烤肉串: 这里有一个显著的区别。...这是我们用来管理 Flexbox 布局的两个主要属性。 当涉及到主轴时,我们必须将项目视为一个组,作为可以分配的内容。 5....Flexbox算法可能会「将元素收缩到低于这个期望大小」,但「默认情况下,它们将始终按比例缩放,保持两个元素之间的比例」。 如果我们不希望元素按比例缩小,可以使用flex-shrink属性。...>> 现在我们有两个子元素,每个都有一个假设大小为 250px。容器至少需要 500px 宽度,以便将这些子元素以其假设大小容纳其中。 假设我们将容器缩小到 400px。...在 Flexbox 中,自动边距变得更加有趣: >> 「自动边距将吞噬额外的空间,并将其应用于元素的边距」。它使我们能够精确控制在哪里分配额外的空间。
JavaScript 来创建一个滚动进度时间线,我们可以创建一个新的 ScrollTimeline 实例,它接受以下两个参数: source:对要跟踪其滚动条的元素的引用,用于 document.documentElement...我们最开始学习的 CSS 之一就是一些元素是块级元素,一些元素是内联元素。例如 或 默认是块级元素, 是内联元素。使用 display 属性,我们可以在块和内联之间切换。...只有当 display 的值改变时,子元素才会成为 Grid 或 Flex 元素,并开始响应 Grid 或 Flexbox 规范中的其他属性。...外部的 display 类型描述元素是块级还是内联,内部的显示类型描述容器中的子元素应该如何表现。 因此,display 多关键字语法允许分别指定内外两个 display 类型。...可能会和其他的 隐私沙盒 的 API 来配合使用,浏览器可能会为 Fenced frames 生成一个不透明的 URL 。
其中一些属性应设置在容器(父元素,称为“弹性容器”)上,而其他属性应设置在子元素(称为“弹性项目”)上。 如果“常规”布局基于块和内联流方向,则弹性布局基于“弹性流方向”。...弹性布局属性 父元素(弹性容器)的属性 display 这定义了一个弹性容器;根据给定的值,可以是内联或块级。这为其所有直接子元素启用弹性上下文。...请注意,视觉上这些空间并不相等,因为所有项目在两侧都有相等的空间。第一个项目在容器边缘有一个单位的空间,但下一个项目之间有两个单位的空间,因为下一个项目有自己的间距。...如果其中一个子元素的值为 2,则剩余空间将占据其他元素的两倍(或至少尝试这样做)。 1 2 3 .item { flex-grow: 4; /* 默认值是 0 */ } 负数无效。...|| ] } 建议你使用此简写属性,而不是单独设置各个属性。简写智能地设置其他值。
经查阅资料,该属性的作用为:无论是内联元素,还是原本就是块级元素,在应用display:flow-root声明后,都会变成「块级元素」,同时这个元素会建立「新的块级格式上下文」,也就是 BFC。...通过对元素声明display: flex来生成一个flexbox。 首先,flexbox包括「主轴和交叉轴」。主轴由 flex-direction 定义,另一根轴垂直于它。...这也是为什么flexbox的很多属性都是使用的start和end,而不是左和右。 flex容器中的直系子元素就会变为 flex 元素。...如果有其他元素也被允许延展,那么他们会各自占据可用空间的一部分。...其中:第一个数值是 flex-grow。赋值为正数的话是让元素增加所占空间。第二个数值是flex-shrink — 正数可以让它缩小所占空间,但是只有在flex元素总和超出主轴才会生效。
--不推荐此方式,因为在一个站点里,在需要更改 CSS 时修需要改每个页面文件。--> 内联样式表存在于 HTML 元素的 style 属性之中,每个 CSS 表只影响一个元素。...=val] 属性以指定值结尾的元素 3 [attr~=val] 属性包含指定值(完整单词)的元素(不推荐使用) 2 [attr|=val] 属性以指定值(完整单词)开头的元素(不推荐使用) 2 2.9...“盒子”的基本原理,是我们使用 CSS 实现准确布局、处理元素排列的关键。...(padding), 外边距(margin)和 边框(border)会将其他元素从当前盒子周围“推开” 内联盒子 (inline box) 盒子不会产生换行。...(normal layout flow) 中移出,类似将它单独放在一个图层中。
幽灵空白节点 在H5文档声明中,内联元素的所有解析和渲染表现就,如同每个「行框盒子」的前面有一个空白节点一样,这个空白节点「永远透明,不占据任何宽度」。...❝一个存在于每个「行框盒子」前面,同时具有该元素的「字体」和「行高」属性的「0宽度的内联盒」 ❞ 「行框盒子(line box)」,每一行就是一个行框盒子,每个行框盒子又是由一个个内联盒子组成的。...display:none和visibility:hidden,其他的方式只能认为是奇招,它们的真正用途并不是用于隐藏元素,所以并不推荐使用它们。...如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。...文件压缩 去除无用CSS 一种是不同元素或者其他情况下的重复代码 一种是整个页面内没有生效的CSS代码 「合理使用选择器」 不要嵌套使用过多复杂选择器,最好不要三层以上 使用id选择器就没必要再进行嵌套
浮动是CSS布局中的一个重要概念,它可以让元素脱离标准文档流,并且可以让其他元素环绕在其周围。通常情况下,浮动用于创建多列布局或者图像与文字混排的效果。...比如,我们可以使用浮动来实现一个左侧导航栏、右侧主体内容的页面布局。 浮动的工作原理很简单。当一个元素设置为浮动后,它会尝试尽可能地向左或者向右移动,直到遇到包含它的容器边界或者其他浮动元素。...清除浮动有多种方法,其中比较常见的两种是: 使用clear属性:在浮动元素的下方添加一个空元素,并给这个元素设置clear属性。...工作原理 当一个元素应用 float 属性后,它会沿其父容器的左侧或右侧边缘浮动。其他非浮动元素将不会覆盖浮动元素,而是环绕它。同时,浮动元素里面的文本和内联元素也会环绕浮动元素。...使用 display: flex 或 display: grid: 使用 Flexbox 或 Grid 布局的容器会自动清除浮动,因为这两种布局方式不受子元素的浮动属性影响。
前面几篇关于 CSS 的知识,只是讲解了一个元素作为一个个体时的样式,从这篇布局内容开始,将要介绍多个元素放在一起,从总体角度确定每个元素的位置。...清除浮动 我们使用 clear 属性来清除浮动,有3个可选值: left: 在左侧不能出现浮动元素,处于左侧所有浮动元素的最下方 right: 在右侧不能出现浮动元素,处于右侧所有浮动元素的最下方 both...属于同一个 BFC 的两个相邻 Box 的 margin 会发生重叠 每个元素的 margin box 的左边, 与包含块 border box 的左边相接触(对于从左往右的格式化,否则相反)。...一个 static 元素表示它不会被 “positioned”,一个 position 属性被设置为其他值的元素表示它会被 “positioned”。...其他的元素的位置则不会受该元素的影响发生位置改变。
css3引入了新的盒模型-Box模型,该模型定义了一个盒子在其他盒子中分布方式以及如何处理可用的空间,使用该模型可以很轻松地创建自适应浏览器窗口的流动布局或自适应字体大小的弹性布局。...一、启动弹性盒模型 为包含子对象的容器对象设置display属性即可,用法如下: display:box 这里说一下display属性值:box、inline-box、flexbox、inline-flexbox...inline-box:将对象作为内联块级弹性伸缩盒显示。伸缩盒最老版本。 flexbox:将对象作为弹性伸缩盒显示,伸缩盒过渡版本。 inline-box:将对象作为内联块级弹性伸缩盒显示。...二、最新版本说明 弹性伸缩盒由伸缩容器和伸缩项目组成,通过设置元素的display属性为flex或inline-flex可以得到一个伸缩容器。...三、伸缩方向设定 使用flex-direction属性可以定义伸缩方向,它适用于伸缩容器(也就是伸缩容器的父元素),语法如下: flex-direction:row | row-reverse | column
其中,最理性最程序员思维的部分就是网页布局:设计出来的页面中的元素,至少要听你指挥,出现在你想要放置的位置。 2.1 盒子模型 盒子模型是网页布局中最基础的概念,定义了如何处理单个HTML元素。...display: inline;元素作为内联元素显示(和其他内联元素在同一行),不能设置宽度和高度。前面介绍的行内元素display的默认属性值就是inline。...对于现代网页设计来说,更为重要的是display: flex;和display: grid;这两种属性值。其中display: flex;更为重要一点,也就是所谓的弹性盒子布局(Flexbox)。...比如说稀土掘金网站的首页,根据其布局我们可以进行如下拆分: 3.2 响应式布局 使用Flexbox布局还有一个好处,那就是可以实现响应式布局。...比如说,将博文目录粘在右侧控件的顶部还好,如果是粘在其他特定的位置,就需要精确地控制位置属性,否则就很容易与其他页面元素冲突。
幸运的是,在现代网页设计时代,使用 Flexbox 和 CSS Grid 来对齐元素,变得相对容易起来。 使用 Flexbox 可以使元素对齐变得容易,因此 Flexbox 已经被广泛使用了。...虽然 Flexbox 和 CSS Grid 可以完成类似的布局,但是本次,我们学习的是如何组合使用这两个工具,而不是只选择其中的一个。...测试 Flexbox 和 CSS Grid 的基本布局 我们从一个很简单且熟悉的布局类型开始,包括标题,侧边栏,主要内容和页脚等部分。通过这样一个简单的布局,来帮助我们快速找到各种元素的布局方法。...通过这个声明,导航元素的放置会变得很容易。 导航栏的左侧有一个 logo 和两个菜单项,右侧有一个登录按钮。...此外,Flexbox 可以动态调整元素。使用 Flexbox,可以将所有元素连成一条直线,这也确保了所有元素都具有相同的高度。 带有文本和按钮的行内容 下图是包含了“额外”文本和按钮的三个区域。
示例一:如何用 Flexbox 制作一个影片集 使用 Flexbox 实现横向纵向排列比大多数人想象的要简单。...除了能得到一个免费的响应式图片集外,使用 Flexbox 的另一个优势就是它的对齐选项。...卡片是一种在弹性容器内组合相关信息的页面设计方式,视觉上很像一种玩的卡片。 有很多使用卡片的优秀案例,其中一个常用的就是价格表。 ? 价格表模型 让我们来建一个。...flex: 1 === flex: 1 1 0 有确定大小的网格元素 有时候你需要的效果并不是同样大小的水平网格布局。 你可能想要一个元素是其他的两倍,或者几分之一。 ?...整行的三个元素都靠底部对齐 嵌套网格 只需要简单的设置,rows(行元素)就可以嵌套布局。 ? 一行内有两个元素,其中一个是另一个的两倍大小。
在 CSS 中,所有的元素都被一个个的“盒子(box)”包围着,理解这些“盒子”的基本原理,是我们使用CSS实现准确布局、处理元素排列的关键。 本文围绕 “盒模型” 为主题展开。...默认情况下是按照 标准流布局,也意味着它们和其他块元素以及内联元素一样(如上所述). 但是,我们可以通过使用类似 flex 的 display 属性值来更改内部显示类型。...该盒子的所有直接子元素都会成为flex元素,会根据弹性盒子(flexbox)规则进行布局,稍后您将了解这些规则。...下面有个块级段落,里面有两个 元素。正常情况下是 inline,但是其中一个加了block类,设置属性 display: block。...还有一个 设置为 display: inline-flex,使得在一些flex元素外创建一个内联框。 最后设置两个段落为 display: inline。
边距折叠 简而言之,当两个垂直元素有一个边距,并且其中一个的边距大于另一个时,就会发生边距折叠。 在这种情况下,将使用较大的边距,而忽略另一个边距。...填充不起作用 值得一提的是,垂直填充不适用于具有 display: inline 的元素,例如 或 。 如果添加了填充,它不会影响元素并且填充将覆盖其他内联元素。...这只是一个友好的提醒,应该为内联元素更改显示属性。...差距 gap 是一个提议的属性,将用于 CSS 网格和 flexbox。...很多很多的复杂性。 使用抽象组件 上述问题的一个解决方案是拥有抽象的组件,目的是托管其他组件。
/ .center{ height: 4em; line-height: 4em; overflow: hidden; /*保护布局,非必须*/ } 支持:所有块级、内联元素...非固定高度居中 .middle{ position:absolute; top:10px; bottom:10px; } 支持:所有块级、内联元素、所有浏览器 缺点:容器不能固定高度 2...居于其他元素上方 最好在外层容器设置position:relative */ } 6. transform .middle { width: 50%; margin: auto; position...的类型为flex,激活为flexbox模式。...Inline-Block 现代浏览器&IE8+&IE7* 是 撑开容器 否 是 需要使用容器包裹和hack式的样式 Flexbox 现代浏览器&IE10+ 是 会导致容器溢出 是 是 需要使用容器包裹和厂商前缀
同时支持块级和内联极元素 2. 只能支持单行垂直居中,并且不支持标签 多行居中 div{ padding: 10px 0; text-align:center; } 1....同时支持块级和内联极元素 2....,这也是早期web使用table来布局的一个主要原因。...另外,使用单元格来实现垂直居中可以支持多元素同时居中!!!...是CSS3新增布局属性,不但可以非常简单地实现居中布局,在实现其他布局方式时也带来了很大的帮助,比如多栏布局。