css居中方式汇众:
水平居中
- margin 0 auto:最常见的水平居中方式,将左右的margin设置为auto,会自动将内容排在父元素中间
- 外层盒子设置display:flex,justify-content: center
垂直居中:
- 外层盒子设置display:flex,alin-item:center
- vertial-alin: middle,需要兄弟元素(或者给父元素设置伪元素)做参照物,让他垂直兄弟元素的中心
- 通过绝对定位:子绝父相,先设置left(top):50%,在设置margin-left(top)为自己总长宽的一半(或是只用位移至相同位置)
css层叠规则
-
由内至外(同一层叠上下文):
- 背景,边框
- -z-index
- 块级盒子
- 浮动元素
- 行内盒子
- z-index:0
- +z-index
-
层叠上下文
-
层叠上下文是由特定的 CSS 属性触发的,它形成一个局部的层叠空间。子元素在该空间中进行层叠,不会影响其他层叠上下文外的元素。
简单来说,它是一种自包含的空间,元素只能在其中进行前后堆叠。
-
以下属性会触发一个新的层叠上下文:
- 根元素:HTML 的
<html>
元素天然形成一个层叠上下文。 - 定位 + z-index:
- 元素的
position
为relative
、absolute
或fixed
且z-index
不为auto
时。
- 元素的
- opacity:当
opacity
值小于 1 时(例如opacity: 0.5
)。 - transform:
transform: translate(), scale(), rotate()
等会创建层叠上下文。 - filter:使用
filter
属性时。 - will-change:如
will-change: transform
。 - mix-blend-mode:非
normal
的混合模式也会触发层叠上下文。
- 根元素:HTML 的
-
层叠上下文的特性:
- 独立性:
- 一个层叠上下文内部的元素不会影响外部的层叠顺序。
- 局部层叠顺序:
- 在层叠上下文内部,
z-index
会决定元素的前后顺序。
- 在层叠上下文内部,
- 嵌套:
- 层叠上下文可以嵌套,内部的层叠顺序优先级不会超越外部上下文。
- 独立性:
-
css常见继承规则
不可继承:
- 布局样式:display
- 文本属性:例如text-shadow, vertical-align,white-space
- 盒子模型属性:height,width,margin,padding
- 背景属性:background
- 定位属性:float、clear、position、top、right、bottom、left、min-width、min-height、max-width、max-height、overflow、clip、z-index
可继承:
- 字体系列:font
- 文本系列:text,line-height,word-spacing,letter-spacing,text-transform(uppercase、lowercase、capitalize),color
- 元素可见性:visibility
css简单动画:
- transition (过度属性),强调过度,它的实现需要触发一个事件(比如鼠标移动上去,焦点,点击等)才执行动画。它类似于 flash 的补间动画,设置一个开始关键帧,一个结束关键帧。
- animation (动画属性),它的实现不需要触发事件,设定好时间之后可以自己执行,且可以循环一个动画。它也类似于 flash 的补间动画,但是它可以设置多个关键帧(用@keyframe 定义)完成动画。
媒体查询(用以实现移动端优化)
- 指通过查询访问网页的设备用以显示特定的样式
- 适合 web 网页应对不同型号的设备而做出对应的响应适配
- 应用:响应式布局(一个网站能够兼容多个终端,而不是为每一个终端做一个特定的版本。)
- 通过媒体查询查询检测不同的设备屏幕尺寸做处理
对 Flex 布局的理解及其使用场景
Flex 是 FlexibleBox 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为 Flex 布局。行内元素也可以使用 Flex 布局。注意,设为 Flex 布局以后,子元素的 float、clear 和 vertical-align 属性将失效。采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis),项目默认沿水平主轴排列。
以下 6 个属性设置在容器上:
- flex-direction 属性决定主轴的方向(即项目的排列方向)。
- flex-wrap 属性定义,如果一条轴线排不下,如何换行。
- flex-flow 属性是 flex-direction 属性和 flex-wrap 属性的简写形式,默认值为 row nowrap。
- justify-content 属性定义了项目在主轴上的对齐方式。
- align-items 属性定义项目在交叉轴上如何对齐。
- align-content 属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
以下 6 个属性设置在项目上:
- order 属性定义项目的排列顺序。数值越小,排列越靠前,默认为 0。
- flex-grow 属性定义项目的放大比例,默认为 0,即如果存在剩余空间,也不放大。
- flex-shrink 属性定义了项目的缩小比例,默认为 1,即如果空间不足,该项目将缩小。
- flex-basis 属性定义了在分配多余空间之前,项目占据的主轴空间。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为 auto,即项目的本来大小。
- flex 属性是 flex-grow,flex-shrink 和 flex-basis 的简写,默认值为 0 1 auto。
- align-self 属性允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items 属性。默认值为 auto,表示继承父元素的 align-items 属性,如果没有父元素,则等同于 stretch。
简单来说: flex 布局是 CSS3 新增的一种布局方式,可以通过将一个元素的 display 属性值设置为 flex 从而使它成为一个 flex 容器,它的所有子元素都会成为它的项目。一个容器默认有两条轴:一个是水平的主轴,一个是与主轴垂直的交叉轴。可以使用 flex-direction 来指定主轴的方向。可以使用 justify-content 来指定元素在主轴上的排列方式,使用 align-items 来指定元素在交叉轴上的排列方式。还可以使用 flex-wrap 来规定当一行排列不下时的换行方式。对于容器中的项目,可以使用 order 属性来指定项目的排列顺序,还可以使用 flex-grow 来指定当排列空间有剩余的时候,项目的放大比例,还可以使用 flex-shrink 来指定当排列空间不足时,项目的缩小比例。