前言
我是小白,励志要做技术男神的帅逼,目前住在南京,做了快3年前端工程师,会继续写笔记。
css/css3
1. 行内元素与块级元素区别
行级元素display:inline,块级元素display:block, 块级元素能够在同一行显示display:inline-block
- 块级:独行
- 行级:禁止设置宽高、margin上下无效,左右有效,内填充padding上下无效,左右有效
2. flex布局
- flex-direction: row | row-reverse | column | column-reverse; 决定主轴的方向
- flex-wrap: nowrap(不换行) | wrap(换行,第一行在上方) | wrap-reverse(换行,第一行在下方); 定义换行情况
- flex-flow: flex-direction和flex-wrap的简写
- justify-content: flex-start(起点对齐) | flex-end(终点对齐) | center(中点对齐) | space-between (贴边对齐) | space-around(留白对齐) | stretch(占满整个容器的高度); 定义项目在主轴上的对齐方式
- align-item: flex-start | flex-end | center | baseline | stretch; 定义在交叉轴上的对齐方式
- align-content: flex-start(与交叉轴的起点对齐) | flex-end | center | space-between | space-around | stretch;定义多根轴线的对齐方式 ,如果项目只有一根轴线,该属性不起作用。 所以,容器必须设置flex-wrap:···;
- 项目值
- order
- flex-grow
- flex-shrink
- flex-basis
- flex
- align-self
3. css预处理器:less、sass
sass 语言脚本处理成 css 文本
- sass
- 变量$xxx:;
- 嵌套a:{n:{}}
- 引入@import '';
- 操作符+、-、*、/、%
- 混合
- 继承
/* 混合 */
@mixin border-radius($radius) {
border-radius: $radius;
}
// 使用
@include border-radius(10px);
/* 继承 */
// 这段代码不会被输出到最终生成的CSS文件,因为它没有被任何代码所继承。
%styles {
display: flex;
}
// 下面代码会正常输出到生成的CSS文件,因为它被其接下来的代码所继承。
%common {
border: 1px solid #ccc;
}
// 使用
.a {
@extend %common;
}
- less
- 变量@
- 混合方法
- 条件语句when,and,not与“,”
/* 混合方法 */
.card(@width_size:10px,@height_size,...){
width:@width_size; // 默认 10px
height:@height_size;
border: @arguments;
}
// 使用
#wrap{
.card(111px, 12px, 1px, solid, red);
}
/* */
// not 运算符,相当于 非运算 !,条件为 不符合才会执行
.background(@color) when not (@color>=#222){
background:@color;
}
4. css3新特性
- 圆角效果
- 图形化边界
- 块阴影与文字阴影
- 使用RGBA实现透明效果
- 渐变效果
- 使用@Font-Face实现定制字体
- 多背景图
- 文字或图像的变形处理(旋转、缩放、倾斜、移动)
- 多栏布局
- 媒体查询
- ...
5. 伪元素before和after的用法
这个两个伪元素在真正页面元素内部之前和之后添加新内容(当然了,可以对伪元素应用定位可以置于任何位置),设置:before和:after时必须设置其content属性,否则伪元素就不起作用
- 字符串
- attr(attr_name) 伪元素的内容跟主元素的某个属性值进行关联
- url()/uri()引用外部资源
- counter()调用计数器
- 伪元素不属于文档
- 伪元素属于主元素的一部分
- 块级元素才能有
6. 清除浮动
- overflow: hidden;
- 使用带clear属性的空元素:clear: both;
- 伪元素before和after实现元素末尾添加一个看不见的块元素(Block element)清理浮动
- 创建父级 BFC(可以看看第9条)
- 父级设置高度
.a:after {
clear: both;
content: "";
display: block;
height: 0;
overflow: hidden;
}
7. display、float、position
- display 用来设置块级元素与行内元素的
- float 浮动布局
- position 绝对定位absolute 相对定位 relative fixed 固定定位
- 绝对定位
- 脱离文档流
- 位置是相对于距离他最近的非static祖先元素位置决定的
- 没有已定位的祖先元素,位置就相对于body或html元素。
- 相对定位
- 不脱离文档流,占据原来的位置
- 只是改变表现
- 固定定位
- 相对于浏览器可视窗口定位
8. 盒子模型
内容(content)、内边距(padding)、边框(border)、外边距(margin)
box-sizing 进行设置
9. BFC
BFC是一个独立的布局环境,其中的元素布局是不受外界的影响,并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。
Box:css布局的基本单位
Formatting context:页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。
BFC块级格式化上下文,是一个独立的渲染区域,让处于BFC内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。
IE下为 Layout,可通过 zoom:1 触发
-
触发创建一个新的BFC的条件:
- 根元素
- position: absolute/fixed
- display: inline-block / table
- float 元素
- ovevflow !== visible
-
规则:
- 属于同一个 BFC 的两个相邻 Box 垂直排列
- 属于同一个 BFC 的两个相邻 Box 的 margin 会发生重叠
- BFC 中子元素的 margin box 的左边, 与包含块 (BFC) border box的左边相接触 (子元素 absolute 除外)
- BFC 的区域不会与 float 的元素区域重叠
- 计算 BFC 的高度时,浮动子元素也参与计算
- 文字层不会被浮动层覆盖,环绕于周围
-
通俗的讲:
- 内部的 Box 会在垂直方向上一个接一个的放置;
- 垂直方向上的距离由margin 决定;(解决外边距重叠问题)
- bfc 的区域不会与 float 的元素区域重叠;(防止浮动文字环绕)
- 计算 bfc 的高度时,浮动元素也参与计算;(清除浮动)
- bfc 就是页面上的一个独立容器,容器里面的子元素不会影响外面元素;
-
应用:
- 阻止margin重叠
- 可以包含浮动元素 —— 清除内部浮动(清除浮动的原理是两个div都位于同一个 BFC 区域之中)
- 自适应两栏布局
- 可以阻止元素被浮动元素覆盖
问题:上下两个div设置margin为20px,两个div的间距是多少,为什么
- 这就是考的BFC 的理解: 因为 属于同一个 BFC 的两个相邻 Box 的 margin 会发生重叠 所以间距是20px,解决方法就是上述中触发创建一个新的BFC的条件: 来进行解决
10. 居中布局
-
水平居中
- 行内元素: text-align: center
- 块级元素: margin: 0 auto
- absolute + transform
- flex + justify-content: center
-
垂直居中
- line-height: height
- absolute + transform
- flex + align-items: center
- table
-
水平垂直居中
- absolute + transform
- flex + justify-content + align-items
11. 选择器优先级
!important > 行内样式 > #id > .class > tag > * > 继承 > 默认
选择器 从右往左 解析
12. link 与 @import 的区别
- link功能较多,可以定义 RSS,定义 Rel 等作用,而@import只能用于加载 css
- 当解析到link时,页面会同步加载所引的 css,而@import所引用的 css 会等到页面加载完才被加载
- @import需要 IE5 以上才能使用
- link可以使用 js 动态引入,@import不行
13. CSS动画
-
transition: 过渡动画
- transition-property: 属性
- transition-duration: 间隔
- transition-timing-function: 曲线
- transition-delay: 延迟
- 常用钩子: transitionend
-
animation / keyframes
- animation-name: 动画名称,对应@keyframes
- animation-duration: 间隔
- animation-timing-function: 曲线
- animation-delay: 延迟
- animation-iteration-count: 次数
- infinite: 循环动画
- animation-direction: 方向
- alternate: 反向播放
- animation-fill-mode: 静止模式
- forwards: 停止时,保留最后一帧
- backwards: 停止时,回到第一帧
- both: 同时运用 forwards / backwards
- 常用钩子: animationend
-
动画属性: 尽量使用动画属性进行动画,能拥有较好的性能表现
- translate
- scale
- rotate
- skew
- opacity
- color
文章中部分内容整理自
- 什么是BFC?看这一篇就够了
- 浅谈JS原型
- 再谈javascriptjs原型与原型链及继承相关问题
- 中高级前端大厂面试秘籍,为你保驾护航金三银四,直通大厂
- 前端高频面试题整理 前端两年-月入30K | 掘金技术征文
- 闭包,看这一篇就够了——带你看透闭包的本质,百发百中
- JS 中深拷贝的几种实现方法
- 事件冒泡、事件捕获、DOM2事件流和事件委托、DOM事件中Event对象
- JS string 常用方法总结
- Array对象常用的方法
结语
以上是我的第一篇笔记,本人前端小白一只,如果写的不好请各位大佬指正,俺想再学习到更深知识,希望和各位大佬交朋友,希望我的笔记对您提供舒适的观看体验。