目录
flex-basis:初始值,项目占据的主轴空间(main size)
vue router 中的 router-link-exact-active 、router-link-active和 active-class
border-spacing: 0; border-collapse:collapse;
width: 0.5em; display: inline-block;
background: url(xxx.png) no-repeat center / contain;
汇总一些遇到的css。

CSS中的&代表的什么
如源码:
ul{
margin-bottom: 20px;
&>li { margin-bottom: 0;}
}
&表示嵌套的上一级
这是sass的语法,代表上一级选择器
解释成CSS代码如下
ul{margin-bottom: 20px;} ul > li {margin-bottom: O;}
扩展和收缩flex容器内的元素。
(注:给父盒子设为flex布局后,子元素的 float、clear、vertical-align 属性将失效,来控制子盒子的位置和排列方式。)
flex布局 父项常见属性:


定义主轴的方向(即 项目的排列方式。设置谁为主轴,剩下的为侧轴,子元素根据主轴来排序)。
- flex-direction: row | row-reverse | column | column-reverse;
- // (从左到右)默认值 从右到左 从上到下 从下到上


个人理解,justify-content 是 x 轴上的对齐方式,align-items 是 y 轴上的对齐方式。
项目在主轴上的对齐方式。
- justify-content: flex-start | flex-end | center | space-between | space-around;
- // (左对齐)默认值 右对齐 居中 两端对齐 两侧间隔相等

项目在交叉轴上的对齐方式。
- align-items: flex-start | flex-end | center | baseline | stretch;
- // 起点对齐 终点对齐 中点对齐 第一行基线对齐 无高/高为auto,占满整个容器高度

flex子项在侧轴(纵轴)上的对齐方式。
- align-self: auto | center |stretch |flex-start|flex-end|baseline|initial|inherit;
- //(继承父容器)默认值 居中 被拉伸 开头/左对齐 结尾/右对齐 基线 默认值 从父元素继承
各项没有占用交叉轴(y轴)上所有可用的空间时 对齐容器内的各项(垂直),即
使用justify-content 属性对齐主轴上的各项(水平)
注: 要多行才可渲染出效果
- align-content: stretch|center|flex-start|flex-end|space-between|space-around|initial|inherit;
- // 默认值
- flex-wrap: nowrap | wrap
- // (默认值)不换行 换行
-
- //默认值 不换行 nowrap
- //换行 wrap
![]()
flex:1,表示flex-grow:1,用于自适应布局中,其父容器display:flex,当侧边栏大小固定后,将内容区flex:1,内容区会自动放大占满剩余空间。
flex属性 是flex-grow、flex-shrink、flex-basis三个属性的简写。
默认为0, 即 即使存在剩余空间,也不放大
所有项目的flex-grow为1:等分剩余空间(自动放大占位)
flex-grow为n的项目,占据的空间(放大的比例)是flex-grow为1的n倍
默认为1, 即 如果空间不足,该项目将缩小;
所有项目的flex-shrink为1:空间不足时,缩小比例相同;
flex-shrink为0:空间不足时,项目不会缩小;
flex-shrink为n的项目,空间不足时 缩小的比例是flex-shrink为1的n倍。
默认值为auto,即 项目原本大小;
设置后将占据固定空间
MDN中给到的一些默认简写


普通的style标签只支持普通的样式,如果想启用scss或者less,需要为style元素设置lang属性
![]()
scoped属性,是种特殊属性(布尔值),表示 当前style的样式只属于当前模块。(作用域、私有化的思想)。scoped属性是指定样式的局部作用域。
思想:让当前组件的样式不会修改到其他地方的样式,用了data-v-hash的方式使得css有了对应的模块标识。
----> 样式隔离,自身样式不会影响到其他组件,即 父组件样式不会渗透到子组件中。
★ 在vue中: App.vue相当于根容器,不设置scoped。所以一般在App.vue中引用公共样式。而在其它.vue页面中用scoped,代表当前样式只作用于当前.vue页面。不作用于其它.vue页面。


----> vue中,用于修改CSS选择器的作用域
----> scoped样式中的选择器作用得”深“,如 影响其子组件
通常vue为了让单页的样式不会污染全局,会加上scoped属性,将导致无法替换掉组建的样式。则可以使用 ::v-deep 把样式跑出去替换到全局的,即 选择器::v-deep 。
使用CSS预处理器,如scss,可以用 :deep() ,即 选择器:deep()
- ::v-deep 是一个特殊的深度作用选择器,仅用于scoped样式中,应用于当前组件及其子组件。仅对该组件的样式生效。例如,.foo::v-deep .bar 会选择包含class为"bar"的元素的所有嵌套层次结构,但仅对 .foo组件的样式生效。vue3的格式 ::v-deep(选择器1)
- :deep() 是一个伪类选择器,更通用,适用于全局样式和嵌套组件中的样式,应用于当前组件及其子组件。例如,.foo :deep(.bar)会选择包含class为"bar"的元素的所有嵌套层次结构。格式: 选择器1 :deep(选择器2)
- >>>操作符,是::v-deep 和 /deep/ 的别名,用于css中,部分scss的预处理器无法正确解析>>>,css中 使用格式 选择器1 >>>选择器2 {}。
- /deep/,是::v-deep的别名,用于css的预处理器(less,sass,scss)中,vue-cli3编译时,其可能会报错/警告,最好使用::v-deep 更保险且编译更快。
----> 样式穿透:使用第三方库,由于scoped的影响直接编写同名样式,覆盖不了组件内的样式,可以进行样式穿透。
- ::v-deep,直接取消选择器中的属性选择器,则能匹配到子组件的内部标签,有时可以结合 !important 使用
- style标签,子组件中用scoped属性进行样式隔离,若不希望样式隔离,可以再写一个style标签,不加scoped属性,即可对其他组件的样式造成影响,使用时要注意。




注:当前 vue3 不支持最新版的sass,可以使用相应版本的node-sass 和sass-loader
npm install node-sass@^4.14.1 -D
npm install sass-loader@^7.3.1 -D
![]()
CSS预处理语言有SCSS(SASS.)和LESS等等,是用来实现样式。
lang的属性可选:scss (sass) . less等等 即:
scss是sass的一个升级版本,两者都是用来实现样式的,只是语法有各自的不同点。
注明:使用lang的属性需要安装scss (sass)
注意:sass和scss是两个不同的东西!只是相似!sass借鉴了ruby语言的规范很严格!代码里面也没有大括号!这对于习惯用css{}的前端人员很难适应!于是就出现了scss!完美兼容css!还能有sass的功能! 如果用的是webpack-simple模版用sass的话就是lang="sass",sass是没有{}括号的,如果有{}会抱错。 webpack模版的话就是用lang="scss"
用于 router-link 组件激活时,改变路由样式
- router-link-exact-active:精确匹配,只有路径完全一致才添加样式
- router-link-active:模糊匹配,子路径激活时 父路径也会添加样式
- active-class:router-link 提供的激活时的类 ---> 模糊匹配
(注:前两个为类名,后一个为属性)


![]()
border-spacing属性:指定相邻单元格边框之间的距离
border-collapse:collapse || separate; // 表格的边框是 合并的(相邻单元格共享边框) 还是分开的

空链接/不执行:

二者作用相同,单冒号为CSS2的写法,双冒号为CSS3的写法,具体详见 链接
:before 作用:在某元素之前插入某内容
必须写 content
display: inline-block; //水平显示列表项。(块级元素可以在同一行显示)
存在的问题:存在间隙,换行导致。
解决:给父元素添加 font-size:0; ,则空白符也变为0px
与 display:inline 的区别,其可以允许在元素上设置宽高。
与 float 浮动的区别:浮动是元素脱离文本流,且会导致父元素高度塌陷。
(注:父元素高度的塌陷,如下
总结:横向排列,用 inline-block 布局;文字环绕,用float。
相对单位长度:
em: 在font-size中 是相对于父级的字体大小;在其他属性中 是相对于自身的字体大小(font-size)。(注:子级不设置font-size,则向上查找,直至根元素,若根元素没有设置font-size,则使用浏览器的默认字号。浏览器默认渲染字体16px)
rem:相对于 根元素的字体大小
vw:视窗宽度的1%
vh:视窗/屏幕高度的1%
则,width:0.5em是相对于自身的font-size大小的0.5倍。
text-align: left | center | right | justify | inherit
// 左对齐(默认) 居中 右对齐 两端对齐 继承父元素的该属性
(注:text-align属性只针对文本文字和 img 标签,对其他标签无效。)
line-height: 1,相当于 line-height: 100% ,会根据该元素自身的字体大小设置行高,如字体大小是15px,则行高就是15px。
line-height: 1.5 ,相当于 line-height: 150%
line-height: 0.5,相当于 line-height: 50%
overflow-y: visible || hidden || clip || scroll || auto;
// 显示在盒子外 被截断 溢出隐藏 截断 显示滚动条 自动(取决于浏览器)
// 内容溢出块级元素的上下两侧时所显示的内容。可以不显示,或者显示滚动条或溢出内容
overflow-x 内容溢出时 左右两侧要显示的内容
CSS的简写属性,可以在一次声明中定义一个或多个属性:background-clip、background-color、background-image、background-origin、background-position、background-repeat、background-size,和 background-attachment。
注:
background: url(xxx.png) no-repeat center / contain;表示背景为url这张图,不平铺,居中,contain为图像横纵比合适的最大大小。
contain 为 background-size,取值有 length || percentage || cover || contain,其中 cover是将图平铺以最大的横纵比,contain是缩放为合适的大小。如下,


body.clientHeight | body.clientWidth: body在浏览器中显示的区域的宽高,即页面宽高




参考:CSS中:和:: &_&:: css_nanhooo的博客-CSDN博客
CSS样式中的 & 是什么作用?_css &_慕尼黑、的博客-CSDN博客
什么是弹性(display: flex)布局 ?_display:flex_懒兔子宝宝的博客-CSDN博客
【Flex布局】网页布局效果_网页flex_黄昏终结者的博客-CSDN博客
flex - CSS:层叠样式表 | MDN (mozilla.org)
scoped 属性的小知识_这里是蒋丞选手的博客-CSDN博客
Vue 深度选择器:deep()与::v-deep详解-CSDN博客
样式 深度作用选择器 /deep/ 、::v-deep、 >>>三种方式 - 码农教程
温顾而知新:css样式中scoped和deep的原理 - 掘金
vue3中使用swiper7轮播图插件_swiper7实例_爱唱歌的前端的博客-CSDN博客
vue:style标签中的scoped属性(作用域)和lang属性的介绍_lang="scss" scoped_huayang183的博客-CSDN博客
Vue Router的基本使用、router-link以及router-link-active_router-link使用-CSDN博客
API 参考 | Vue Router (vuejs.org)
border-spacing - CSS:层叠样式表 | MDN (mozilla.org)
border-collapse - CSS:层叠样式表 | MDN (mozilla.org)
a标签里面的href=""和href="JavaScript:;"有什么区别呢? - 知乎 (zhihu.com)
CSS之伪类和伪元素 | :before和::before-CSDN博客
CSS 布局 - display: inline-block (w3school.com.cn)
CSS之使用display:inline-block来布局 - 知乎 (zhihu.com)
CSS的值与单位 em、rem详解 - 掘金 (juejin.cn)
CSS中的em运用详解,1em等于多少像素?_css em_静茹是偶对象的博客-CSDN博客
百度百科-验证(text-align)
line-height:1_line-height:1_在线小白www的博客-CSDN博客
overflow-y - CSS:层叠样式表 | MDN (mozilla.org)
CSS3 background-size 属性 | 菜鸟教程 (runoob.com)