CSS

CSS盒模型:

content, padding, border, margin

box-sizing: content-box(default), border-box

浮动:让多个块级盒子一行没有缝隙排列展示,用于横向排列盒子。

定位:让盒子在某个盒子内定位/在屏幕上定位,并且可以压住其他盒子。

Relative:相对原来的位置。不脱标。

Absolute:相对有定位的祖先元素位置。脱标。

Fixed:以浏览器的可视窗口定位。脱标。

Display属性:设置元素的显示方式。

Block:独占一行

Inline:无法设置长宽

Inline-block:行为类似inline但是可以设置长宽

None:元素不在页面上显示,用于隐藏元素

Flex

Grid:

inline-block 是将元素同时显示为内联元素和块级元素的一种特殊情况,使元素既能在同一行内排列,又能设置宽度、高度和外边距等。

Display:none将元素从页面完全移除,不再占据空间。

Visibility:hidden隐藏元素,但是保留其位置和布局。

CSS权重:

!important 最高

Flex弹性布局:

任何容器都可以指定为flex布局。通过给父盒子添加Flex属性,来控制子盒子位置和排列方式。Flex Container(容器),它的所有子元素自动成为Flex Item(项目)。

Flex-direction:主轴方向

Justify-content:item在主轴上的对齐方式

space-around、space-between:平分剩余空间。

Flex-wrap:排不下的时候改变子元素宽度/换行。

Align-items:item在侧轴上的对齐方式(子项为单行时使用)

Align-content:item在侧轴上的对齐方式(子项为多行时使用)(仅换行时才能生效)

子项属性

flex: <'flex-grow'> <'flex-shrink'> <'flex-basis'>

'flex-grow':当剩余空间多余时,子元素的扩张规则,默认值为:0,即有剩余空间也不扩张(如果想做自适应撑开的布局,基本要设置这个属性值)

'flex-shrink':当剩余空间不足时,子元素的收缩规则,默认值为:1,即大家(子元素们 )都等比例缩放(如果想做定宽的,那么设置为0是个很好的选择)

Flex:定义子项目分配剩余空间,用flex来表示占多少份数。

Align-self:控制子项自己在侧轴上的对齐方式。可覆盖align-items。

Order:

定义子元素的排列顺序,数值越小越靠前,可以是负数,默认值为0

开发

如果元素A和元素B的flex-grow值都是1,它们将以相同的比例分配剩余空间。具体来说,剩余空间将被平均分配给这两个元素。

例如,如果容器的总宽度是600px,减去元素A和元素B的原始宽度(100px和200px),剩余空间是300px。由于它们的flex-grow值相同,这300px将被平均分配,每个元素将获得150px的额外宽度。

div{

flex:1;

width:0;

}

设置了width并且这个width的大小小于平均分配的剩余空间大小时,取平均分配的剩余空间;

div{

flex:1;

}

没有设置width,内部元素的内容大小超过平均分配的剩余空间时,元素的宽度等于内容大小

居中

  1. Margin:水平居中

Margin:0 auto 水平居中,auto会平分剩余空间。

Margin:auto 0不能实现垂直居中,因为上下没有剩余空间。

margin:'0 auto'; 只对块元素起作用,还要设置width属性。

Img是行内元素不是块级元素!!

text-align属性可以用于设置文本在容器内的水平对齐方式。

  1. 定位

.centered-element {

position: absolute;

top: 50%;

left: 50%;

transform: translate(-50%, -50%)

}

  1. Flex

.parent {

display: flex;

justify-content: center;

align-items: center;

}

选择器:

伪类:

.btn:link, //未被点击的链接

.btn:visited //已被点击的链接

优先级!important>内联样式

属性选择:

默认情况下,span 元素是行内元素,它的宽度和高度是由其包含的内容来决定的。如果你希望 span 元素具有特定的宽度和高度,你可以通过 display 属性将其转换为块级元素,然后再设置宽度和高度。

属性:

clip-path:polygon(0 0, 100% 0, 100% 75%, 0 100%);

polygon是多边形,可以使用不同的函数裁剪。

background-image: linear-gradient(to right, #7ed56fac, #55c57aa4), url(../img/hero.jpg);

可以使用多个参数,前面的image在上方。

transform:rotate(30deg) translate(-50%, -50%);

单位:

height: 95vh;

vh的是"Viewport Height",即视窗高度。是占视窗的百分比。

与%基于不同的基准进行计算,%是相对于父元素的百分比。

Animation

@keyframes moveInleft {

0% {

opacity: 0;

transform: translateX(-100px);

}

100% {

opacity: 1;

transform: translate(0);

}

}

.heading-primary-main{

animation-name: moveInLeft;

animation-duration: 1s;

animation-timing-function: ease-in;

}

.heading-primary-sub{

animation: moveInRight 1s ease-in;

}

函数:

calc():

element {

width: calc(100% - 50px);

}

Less

媒体查询允许你根据设备的屏幕特性(如宽度、分辨率、方向等)来应用不同的样式,从而实现响应式设计

Vue

组件可以怎么控制样式:

  1. :class = {‘classname’: boolean} 控制class的有无
  1. :attributeName = ‘VarName’ 可以控制某属性的值

在 CSS 中,选择器 .grandparent .parent .child 可以被理解为“先后顺序重要的且逻辑”。