面试总结——CSS

1.transform对子元素的影响

当父元素设置transform属性时,子元素也会受到影响,例如,父元素旋转45deg,子元素也会旋转45deg,如果要消除这种影响,可以通过给子元素设置-45deg。

2.垂直水平居中的几种方式

  • 已知宽高:

                 

  •  未知宽高

    

3.常用的几种布局方式 

这里集中往盒模型和flex布局上说。

首先最常见的就是盒模型,margin、padding、float和定位

其次就是自适应,百分比布局,在移动端可以使用rem、vw等实现

然后就是媒体查询实现响应式布局

最后是flex弹性盒子布局。

也可以拓展一下grid布局

<1>常用的flex属性:

容器属性:

  • flex-direction(主轴方向,即项目排列顺序)

  • flex-wrap(项目在主轴上排列不下时是否换行)
    • nowrap(默认):不换行
    • wrap:换行,第一行在上方。
    • wrap-reverse:换行,第一行在下方。
  • flex-flow(flex-direction和flex-wrap的简写形式)
  • justify-content(项目在主轴上的对齐方式)

  • align-items(项目在交叉轴的对齐方式)

  • align-content(项目在多条轴线时的对齐方式,只有一条轴线时,该属性不起作用)

项目属性:

  • order(定义项目的排列顺序,数字越小,排序越靠前,默认为0)
  • fle-grow(定义项目的放大比例,默认为0,即即使存在剩余空间也不放大)
  • flex-shrink(定义项目的缩小比例,默认为1,即如果空间不足,将缩小项目)】
  • flex-basis(在分配多余空间之前,项目占据的主轴空间.默认为auto,即项目本来的大小,也可以设置固定像素,项目就会固宽)
  • flex(是flex-grow, flex-shrink 和 flex-basis的简写)

<2>grid布局

grid布局就是网格布局,整个布局由行跟列组成

这里我们设置了一个三列两行的布局,并分别设置了每一列的宽和每一行的高

例如,这里设置了item1,占据列的位置从第一列到第四列,也就是它会占一整行,类似于合并单元格

   简写:

4.animation和transition有没有用过,一些常见的属性说下?

<1>css3自定义动画

使用@keyframes自定义动画

  • 自定义动画时,可以使用from……to,也可以使用百分比,from……to相当于0%--100%
  • 使用自定义动画时:

     

<2>transition实现动画

transition在使用时,需要执行动画的元素需要有一个初始状态和结束状态

5.CSS实现宽度自适应100%,宽高16:9的比例的矩形。

注意:margin和padding的值都可以设置百分比,但是margin-top、margin-bottom、padding-top、padding-bottom的依据都是父元素的宽度,而不是高度,所以在已知宽度后,想设置高度,只能通过padding-top或padding-bottom来设置,计算方法是 高/宽*100%

6.如何实现左右两栏一定比例,左栏高度随右栏高度自适应?

  • 使用flex布局,父元素设置display:flex;子元素设置对应的宽度即可;
  • 使用浮动布局,子元素浮动,左边元素设置height:100%,并且padding-top:9999px,margin-bottom:-9999px;
  • 使用table布局,父元素display:table;子元素:display:table-row;下一级子级元素display:table-cell;表格的同行单元格等高

7.如何实现在内容高度不够时,整个页面刚好是一屏的高度

body{
    display:flex;
    min-height:100vh;
    flex-direction:column;
}
header{
    height:100px;
}
container{
    flex:1;
}
footer{
    height:100px;
}

9.如何去计算一段文字所占的宽高(使用canvas,支持IE9及以上)

var ctx = document.getElementById("id").getContext("2d");
ctx.font="30px Arial";
var width = ctx.measureText("string………………").width;
var height= ctx.measureText("string………………").height;

10.offsetTop、offsetLeft

obj.offsetTop 指 obj 上层控件的位置,整型,单位像素。

obj.offsetLeft 指 obj 距离上层控件的位置,整型,单位像素。

上层控件是指距离obj最近且position不为static的元素。

11.position常用的几种定位,各有什么特性

12.如何用css实现当页面滚动至一定高度时,块元素吸顶的效果

position属性中最有意思的就是sticky了,设置了sticky的元素,在屏幕范围(viewport)时该元素的位置并不受到定位影响(设置是top、left等属性无效),当该元素的位置将要移出偏移范围时,定位又会变成fixed,根据设置的left、top等属性成固定位置的效果。

注意:

  • 如果你设置了top: 50px,那么在sticky元素到达距离相对定位的元素顶部50px的位置时固定,不再向上移动。
  • 元素固定的相对偏移是相对于离它最近的具有滚动框的祖先元素,如果祖先元素都不可以滚动,那么是相对于viewport来计算元素的偏移量
  • 兼容性只有firefox和safari
  • 父元素visibility:visible;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值