理解 animation transition 属性
animation: 动画名称 持续时间 速度函数 延迟时间通过animation去实现,设定keyframes关键帧。
@keyframes
定义一个动画,定义的动画名称用来被animation-name所使用。
div{
width:50px;
height:50px;
background:#f40;
border-radius:50%;
animation:mymove 2s;
}
@keyframes mymove{
0% {width:50px;height:50px;}
50% {width:100px;height:100px;}
100% {width:50px;height:50px;}
}
- transition
div {
width: 140px;
height: 64px;
transition: .8s transform linear;
}
div:hover {
transform: translate(120px, 0);
}
复制代码
和动画类似,每一个过渡都是支持延迟触发的:
div {
// 延迟 1s 触发过渡,过渡动画的时间为 0.8 秒
transition: .8s transform 1s linear;
}
div:hover {
transform: translate(120px, 0);
}
复制代码
清除浮动的方法
为什么要清浮动:清浮动主要是解决子元素浮动导致父元素高度坍塌的问题
添加空元素:利用CSS提供的 clear:both;清浮动
<div class="parent">
<div class="child1"></div>
<div class="child2" style="clear:both"></div>
</div>
对父元素添加伪元素
.parent::after {
content: "";
display:block;
height:0;
clear:both;
}
触发父级BFC
.parent {
overflow:hidden auto;
display: inline-block; table-cell;
position: absolute; fixed;
float:left; right;
}
伪类和伪元素的区别
就是他们是否创建了新元素
伪元素: 不存在 dom 文档中,是虚拟的元素,是创建新元素。代表某个元素的子元素。
伪元素要配合 content 属性使用
伪元素可以使用 : ::
伪元素只能出现一次
伪类: 存在 dom 文档中。
伪类只能使用一个 :
伪类可以出现多次
单行文本溢出和多行文本溢出的写法
单行文本溢出
.box1 {
width: 200px;
height: 50px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
多行文本溢出
.box2 {
width: 200px;
height: 60px;
line-height: 20px;
-webkit-line-clamp: 3;
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
}
垂直居中的方式有多少种?
flex 布局
display: flex;
justify-content: center;
align-items: center;
position + transfrom
position: relative;
子级
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
flex + margin
display: flex;
margin: auto;
三栏布局
float 布局
父元素 overflow: hidden;
第一个盒子 float: left;
第三个盒子 float: right;
而且第三个盒子要放在第二的位置
Position 布局
父元素 position: relative;
第一个盒子 position: absolute; top: 0; left: 0;
第三个盒子 position: absolute; top: 0; right: 0;
flex 布局
父元素 display: flex;
第二个盒子 flex: 1;
flex 0 1 auto 是什么意思?
flex 是有 flex-grow flex-shrink flexbasis 三者构成分别是 放大比例,缩小比例,分配多余空间。
怎么画一个三角形
.box {
width: 0;
height: 0;
border: 30px solid;
border-color: #ccc #fff #fff #fff;
}
盒子模型
- 盒模型有:
标准盒模型+IE 盒模型 标准盒模型:width 不包含 border、padding,变成 IE 盒模型是通过 box-sizing:border-box;IE 盒模型:width 包含 border、padding,变成标准盒模型是通过 box-sizing:content-box;
什么是BFC?
BFC 是块级格式上下文,有自己的渲染规则
- 容器内的元素不会影响容器外的元素
- 内部的盒子在垂直方向上一个接着一个放置。
- 垂直方向上的距离由 margin 决定(解决了外边距重叠的问题)
- BFC 区域不会和 float 元素区域重叠(防止浮动文字环绕)
- 计算 BFC 的高度时,浮动元素也会计算在内(清除浮动) 主要是解决了 margin 重叠的问题
触发 BFC 的 CSS 属性
- display:inline-block,table-cell
- float:left right
- overflow:hidden,auto,scroll
- position:absolute,fixed
display:none visibility:hidden opacity:0 三者的区别
display:none;不会占据页面空间,不可点击事件,不会被子类继承,会触发重排和重绘。visibility:hidden;会占据页面空间,不可点击事件,会被子类继承,visibility:visible;显示元素,通过触发重绘opacity:0;会占据页面空间,可点击事件,会被子类继承,但是不能设置 opacity:1;恢复。触发重绘
浏览器的渲染过程?
10、怎么画一条 0.5px 的线
.box4 {
border-top: 1px solid #000;
transform: scaleY(0.5);
}
重排和重绘
-
重排:javascript 计算每个 dom 元素在页面中的大小和位置 -
重绘:dom 元素外观改变触发浏览器重新渲染页面的行为。 -
重排必定触发重绘,重绘不一定触发重排。
-
触发重排的原因:
页面第一次渲染浏览器窗口大小的改变删除 dom 元素dom 元素在页面中的位置改变内容发生变化width/height 变化
-
触发重绘的原因
背景颜色的改变文字方向的改变文字阴影的改变
-
避免发生重排和重绘
使用 class 名改变样式避免使用内联样式避免使用 table 布局避免使用 css 表达式
怎么设置文字大小 10px
.box6 {
transform: scale(0.8);
}
CSS3新增了哪些新特性?
- 圆角 border-radius
- 阴影 box-shadow
- 文字特效 text-shadow
- 多背景 rgba: red;
- (定位,旋转,缩放) transform: translate() rotate() scale();
- 媒体查询
- transition
- animation
transfrom 和 animation 的区别
transfrom是过度,从一个状态过度到另一个状态。animation是动画,有帧的概念,可以设置很多帧,而且 animation 有很多个属性,可以让效果更好。
H5 新增了哪些属性
<header></header>
<footer></footer>
<section></section>
<nav></nav>
<audio></audio>
<video></video>
<canvas></canvas>
移动端有几种方式做自适应呢?
- 媒体查询
- rem
- 百分比
- vh,vw
CSS 选择器及优先级
- id 选择器(#myid)
- 类选择器(.myclass)
- 属性选择器(a[rel="external"])
- 伪类选择器(a:hover, li:nth-child)
- 标签选择器(div, h1,p)
- 相邻选择器(h1 + p)
- 子选择器(ul > li)
- 后代选择器(li a)
- 通配符选择器(*)
- !impotent > 内联样式 > ID 选择器 > 类,伪类,属性>标签,伪元素>继承>通配符
- !important(无穷大) > 内联样式(权重 1000) > ID 选择器(权重 100) > 类选择器/伪类/属性(权重 10)> 标签/伪元素(权重 1)
说说 em/px/rem/vh/vw
- 相对长度单位 em、ex、ch、rem、vw、vh、vmin、vmax、%
- 绝对长度单位 cm、mm、in、px、pt、pc
- 这里之所以认为 px 为绝对单位,在于 px 的大小和元素的其他属性无关
- em 的值并不是固定的,em 会继承父级元素的字体大小
- rem,相对单位,相对的只是 HTML 根元素 font-size 的值
html {font-size: 62.5%; } /* 公式16px*62.5%=10px */ - vw ,就是根据窗口的宽度,分成 100 等份,100vw 就表示满宽,50vw 就表示一半宽。(vw 始终是针对窗口的宽),同理,vh 则为窗口的高度
- 总结 px:绝对单位,页面按精确像素展示 em:相对单位,基准点为父节点字体的大小,如果自身定义了 font-size 按自身来计算,整个页面内 1em 不是一个固定的值 rem:相对单位,可理解为 root em, 相对根节点 html 的字体大小来计算 vh、vw:主要用于页面视口大小布局,在页面布局上更加方便简单
em px rem 的区别
- px: 绝对单位,按像素展示
- em:相对单位,基准点为⽗节点字体的⼤⼩,如果⾃身定义了 font-size 按⾃身来计算(浏览器默认字体是 16px),整个⻚⾯内 1em 不是⼀个固定的值。
- rem:相对单位,可理解为”root em”, 相对根节点 html 的字体⼤⼩来计算,CSS3 新加属性,chrome/firefox/IE9+⽀持
Flex 的属性你知道有几个
flex-derection
- row:起点在左端
- row-reverse:起点在右端
- column:起点在上方
- column-reverse:起点在下方
juestify-content
- flex-stat: 左边对齐
- flex-end:右边对齐
- center:中间对齐
- space-between:两边对齐
- space-around:中间隔开对齐
- flex 是三个属性
flex-grow+flex-shrink+flex-basis
说一说 Flex 的两个属性 auto none
- flex:auto 是有三个属性构成的、放大、缩小、位置定位。
- auto 代表: 1 1 auto 有剩余空间等比放大
- none 代表: 0 0 auto 有剩余空间等比缩小
块元素、行内元素、行级块元素
块元素:div p ul li h1-h6 dl dd hr
行内元素: a b span img button input
区别:
- 默认的情况下,块元素会独占一行,行元素不会
- 块元素可以包含行内元素,但是行内元素不可以包含块元素
- 块元素
width height margin padding会生效,行内元素width height不生效margin的竖直方向不生效,水平方向生效。 - 块级元素变成行元素
display:inline行内元素变成块元素display:block