You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
使用 absolute 绝对定位时,必须指定 left 、 top 、 right 和 bottom 中的至少一个,否则 left/right/top/bottom 属性将会使用默认值 auto 。这将导致对象遵从标准文档流,在前一个对象之后立即被呈递,简单讲就是都变成 relative ,并且会占用文档空间。
css 规则
@import 引入的css将本地css规则覆盖的问题如何解决???
@media
css 的选择器
伪类选择器
伪元素
::before
:在元素前插入内容;::after
:在元素后插入内容;css 权重
css继承
并不是所有属性都能被继承 。不会影响页面布局的元素往往会被继承。
css 的继承,分为
默认继承
的和默认不继承
的,但所有属性都可以通过设置inherit
实现继承。当没有指定值时,默认继承的属性取父元素的同属性的计算值(相当于设置了inherit
),默认不继承的属性取属性的初始值(时相当于设置了initial
)。默认继承的 ("Inherited: Yes") 的属性:
所有元素默认继承:visibility、cursor
字体相关属性:letter-spacing、word-spacing、white-space、line-height、color、font、 font-family、font-size、font-style、font-variant、font-weight、text-indent、text-align、text-shadow、text-transform、direction
列表元素默认继承:list-style、list-style-type、list-style-position、list-style-image
表格元素默认继承:border-collapse
对于其他默认不继承的属性也可以通过以下
all
属性值来控制继承行为:inherit
:继承父元素对应属性的计算值;initial
:应用该属性的默认值,比如 color 的默认值是#000
;unset
:如果属性是默认可以继承的,则取inherit
的效果,否则同initial
;revert
:效果等同于unset
,兼容性差。css 的文档流
脱流文档流指节点脱流正常文档流后,在正常文档流中的其他节点将忽略该节点并填补其原先空间。
文档一旦脱流 1.
计算其父节点高度时不会将其高度纳入
.2.脱流节点不占据空间
。有两种方式可以让元素脱离文档流:浮动和定位。
position: fixed / float / absolute
css 的盒子模型
若在页面中声明了DOCTYPE类型,所有的浏览器都会把盒模型解释为W3C盒模型。
css的盒模型由content(内容)、padding(内边距)、border(边框)、margin(外边距)组成。
盒子的大小由content+padding+border这几部分决定
长文本处理
样式:
定位 position
定位需要
1.定位的模式
和2.边的位移
1.定位模式
: position: static(静态定位)/relative(相对定位)/absolute(绝对定位)/fixed(固定定位)2.边偏移
: left/right/top/bottom(不脱标)相对定位:
他是相对于自己原来的位置移动
原来在标准流位置占有,后面的盒子仍然以标准流的方式对它
(脱标)绝对定位: 移动前看父元素进行
没有父元素时或父元素没有定位,就会以浏览器为准
如果祖先元素有定位,则会以带有定位的祖先元素最近一级的参考位置移动
绝对定位不保留原来位置,标准盒子则会占有原来位置
显示与隐藏:
display: black(显示元素)\none(隐藏对象)
display: none 隐藏对象后不在占有原来的位置(但盒子还存在)
display: visibility 隐藏对象后但保留位置
overflow: visible 对溢出的部分进行显示
overflow: hidden 对溢出的部分进行隐藏
overflow: scroll 对溢出的部分显示滚动条 不溢出也显示滚动条
overflow: auto 在需要的情况下的显示滚动条 不溢出不显示滚动条
有过有定位的盒子,请慎用overflow: hidden 因为会隐藏多余的东西
基本概念
常见的块级元素:<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>
常见的行级元素:span、img、a、label、code、input、abbr、em、b、big、cite、i、q、textarea、select、small、sub、sup,strong
元素的内在盒子和外在盒子
外在盒子决定元素排列方式。内在盒子决定内容的显示。
IFC、BFC、GFC 与 FFC 决定盒子 模型的布局,其子元素如何定位以及其他元素的关系和相互作用。
Box
Box 是 CSS 布局的对象和基本单位,直观点说就是一个页面是由很多个 Box (即boxes)组成的,元素的类型和 display 属性决定了 Box 的类型。
block-level Box:当元素的 CSS 属性 display 为 block, list-item 或 table 时,它是块级元素 block-level 。块级元素(比如
<p>
)视觉上呈现为块,竖直排列。每个块级元素至少生成一个块级盒(block-level Box)参与 BFC ,称为主要块级盒(principal block-level box)。一些元素,比如
<li>
,生成额外的盒来放置项目符号,不过多数元素只生成一个主要块级盒。注意:块级元素至少生成一个快级盒
Inline-level Box:当元素的 CSS 属性 display 的计算值为 inline, inline-block 或 inline-table 时,称它为行内级元素。视觉上它将内容与其它行内级元素排列为多行。典型的如段落内容,有文本或图片,都是行内级元素。
行内级元素生成行内级盒(inline-level boxes),参与行内格式化上下文 IFC
注意:行内级元素生成行内级盒
flex container:当元素的 CSS 属性 display 的计算值为 flex 或 inline-flex ,称它为弹性容器。
display:flex
这个值会导致一个元素生成一个块级(block-level)弹性容器框。display:inline-flex
这个值会导致一个元素生成一个行内级(inline-level)弹性容器框。grid container:当元素的 CSS 属性 display 的计算值为 grid 或 inline-grid,称它为栅格容器。
快容器盒: 只包含块级盒,或者生成一个行内格式化上下文,只包含行内盒的叫快容器盒。
块容器盒要么只包含行内级盒,要么只包含块级盒。
**快盒:**同时是快容器盒的快级盒称为快盒
**行盒:**由行内格式化上下文产生的盒,用于表示一行。在块盒里面,行盒从块盒一边排版到另一边。 当有浮动时, 行盒从左浮动的最右边排版到右浮动的最左边。
需要注意的是
line-height
用于设置多行元素的空间量。对于块级元素。它决定的是行宽盒子的最小高度
。**行距 = Line-height - font-size **
BFC
块格式化上下文
它是一个独立的渲染区域,只有块级盒子参与,它规定了内部的块级盒子如何布局,并且与这个区域外部毫不相干。一、渲染规则
内部的盒会在垂直方向一个接一个排列(可以看作BFC中有一个的常规流);
Box垂直方向的距离由
margin
决定。属于同一个BFC的两个相邻Box的margin
会发生重叠;外边距重叠
每一个盒子的左外边距应该和包含块的左边缘相接触。即使存在浮动也是如此,除非子盒子形成了一个新的BFC。
浮动盒子占据位置
BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然;
互相不影响
计算BFC的高度时,考虑BFC所包含的所有元素,连浮动元素也参与计算;
BFC的区域不会与
float box
重叠;不会忽略浮动盒子的位置
二、触发条件
根元素或其它包含它的元素
浮动 (元素的 float 不为 none)
绝对定位元素 (元素的 position 为 absolute 或 fixed)
行内块 inline-blocks (元素的 display: inline-block)
表格单元格 (元素的 display: table-cell,HTML表格单元格默认属性)
表格标题 (元素的 display: table-caption, HTML表格标题默认属性)
overflow 的值不为 visible的元素
弹性盒子 flex boxes (元素的 display: flex 或 inline-flex)
三、应用场景
为什么要清除浮动? 子元素都产生浮动的情况下 父元素没有指定高度就会造成高度为0的盒子也就是发生了 高度塌陷
清除浮动的六种方式
父元素也浮动
父元素加定位 position: absolute
父元素设置 overflow: hidden
给父元素一定的高度
末尾增加空元素并设置其为 clear: both
clear
的定义是:元素盒子的边不能与前面的浮动元素相邻。也就是虽然浮动元素高度坍塌,但是设置了clear: both
的元素却将其高度视为仍然占据位置。增加一个伪类 在此添加 clear: both;
嵌套块元素,元素塌陷的问题(外边距坍塌)
形成原因: 1.父元素和子元素都有外边距 但当子元素外边距大于父元素时 2.子元素中有margin-top或者margin-bottom值。父元素的高度会塌陷
解决办法:
鼠标样式:
设置检索在对像上移动的鼠标采用何种系统预定义光标形状
cursor
: "default(小白)/pointer(小手)/move(移动)/text(文本)/not-allowed(禁止)"取消表单的轮廓线: outline: 0/none
防止文本域拉伸: resize: none
取消li的小圆点: list-style:none
取消链接下划线: text-decoration: none
禁止文字复制
IFC
行内格式化上下文
IFC 的形成条件:块级元素中仅包含内联级别元素。需要注意的是当IFC中有块级元素插入时,会产生两个匿名块将父元素分割开来,产生两个 IFC。
行内级格式化上下文用来规定行内级盒子的格式化规则。
一、渲染规则
内部的盒子会在水平方向,一个接一个地放置。
这些盒子垂直方向的起点从包含块盒子的顶部开始。
摆放这些盒子的时候,它们在水平方向上的 padding、border、margin 所占用的空间都会被考虑在内。
在垂直方向上,这些框可能会以不同形式来对齐(vertical-align):它们可能会使用底部或顶部对齐,也可能通过其内部的文本基线(baseline)对齐。
能把在一行上的框都完全包含进去的一个矩形区域,被称为该行的
行框
(line box)。行框的宽度是由包含块(containing box)和存在的浮动来决定。IFC中的 line box 一般左右边都贴紧其包含块,但是会因为float元素的存在发生变化。float 元素会位于IFC与与 line box 之间,使得 line box 宽度缩短。(这表明是float不在行框内但又处在IFC中)
IFC 中的 line box 高度由 CSS 行高计算规则来确定,同个 IFC 下的多个 line box 高度可能会不同(比如一行包含了较高的图片,而另一行只有文本)
当 inline-level boxes (行内级元素)的总宽度少于包含它们的 line box(行框) 时,其水平渲染规则由
text-align
属性来确定,如果取值为justify
,那么浏览器会对 (display属性)inline-boxes(注意不是inline-table 和 inline-block boxes)中的文字和空格做出拉伸。注意这里的文字拉伸
当一个 inline box(行内盒子) 超过 line box 的宽度时,它会被分割成多个boxes,这些 boxes 被分布在多个 line box 里。如果一个 inline box 不能被分割(比如只包含单个字符,或 word-breaking 机制被禁用,或该行内框受 white-space 属性值为 nowrap 或 pre 的影响),那么这个 inline box 将溢出这个 line box
二、应用场景
水平居中:当一个块要在环境中水平居中时,设置其为 inline-block 则会在外层产生 IFC,通过设置父容器
text-align:center
则可以使其水平居中。垂直居中:创建一个IFC,用其中一个元素撑开父元素的高度 ( 这里表示父元素起码要有一定的高度 ),然后设置子元素
vertical-align:middle
,其他行内元素则可以在此父元素下垂直居中。line-height + vertical-align
水平垂直居中的几种形式
一、单行的文本,inline 或者 inline-block 元素;
水平居中
垂直居中
2.1 通过设置上下内间距
padding
一致达到垂直居中的效果2.2 设置 height 和 line-height 一致达到垂直居中
二、固定宽高的块级盒子(垂直水平居中)
absolute + 负margin
absolute + margin auto
absolute + calc
三、不固定宽高的块级盒子(父元素要指定一定的大小)
absolute + transform
(line-height = height ) + vertical-align
writing-mode
table-cell
flex
grid
float
绝对定位
和浮动元素一样,绝对定位也具有块状化、BFC、包裹性、脱离文档流、没有
margin
合并的特性。绝对定位完全脱离文档流 且不会对周围元素产生任何影响。绝对定位的包含块则是距离最近的
position
不为static
的祖先元素。其实一句话就可以表示两者之间的关系:当
overflow: hidden
元素在绝对定位元素和其包含块之间的时候,绝对定位元素不会被剪裁。以下两种绝对定位元素不会被剪裁:
position: absolute
的流体特性当绝对定位元素水平方向或者垂直方向的两个定位属性同时存在时候,绝对定位元素在该方向上便有了流体特性。此时的 width/height 属性具有了自动撑满的特性。当设置margin 时候宽高不用指定会自动撑满。
固定定位 position: fixed;
它相对于屏幕视口位置来开始定位。 祖先元素设置 position: relative;并不会对其造成影响。注意:当父元素设置 transfrom 属性非 none 时,容器由该视口改为该祖先。
粘性定位 position: sticky;
层叠上下文
层叠等级
层叠顺序
值和单位
颜色关键字
transparent
1.1 如何利用其画出三角形
currentColor 关键字
媒体查询
你可以通过给
<link>
加上 media 属性来指定该样式文件只能对什么设备生效,不指定的话默认是 all,即对所有设备都生效:都支持哪些设备类型?
参考
[IFC、BFC、GFC 与 FFC 知多少----(chokcoco)][https://github.com/谈谈一些有趣的CSS题目(11)-- IFC、BFC、GFC 与 FFC 知多少 chokcoco/iCSS#56]
https://juejin.cn/post/6941206439624966152#heading-11
https://juejin.cn/post/6854573212337078285#heading-50
https://juejin.cn/post/6844903894313598989#heading-8
The text was updated successfully, but these errors were encountered: