css基础面试题
css新特性
- 1.Flexbox布局
- 2.grid布局 自定义属性:CSS变量是CSS中非常有用的新特性之一,它可以定义全局或局部的变量,并且可以在样式表中的任何位置调用这些变量,从而简化代码并提高可维护性
- 3文字效果- 文字阴影(Text shadow) 文字渐变(Text gradient) 字形,字间距,字间间距(Letter-spacing, Word-spacing) 文字装饰(Text decoration) 单词断行(Word-break)
- 4.盒子效果 CSS3的盒子效果更为强大,新增了许多属性,比如: 圆角(Border-radius) 阴影(box-shadow) 颜色和透明度(RGBA, HSLA) 多列布局(Multi-columns layout) 边框图片(Border image) 变形(Transform) 过渡(Transition) 动画(Animation)
- 5.媒体查询
px em rem vw vh 百分比 的区别
- px 绝对单位,像素px是相对于显示器屏幕分辨率而言。
- em 相对单位 em大小相对当前元素的字体大小。当前元素没有设置大小,则相对浏览器的默认字体大小,em会继承父元素的字体大小
- rem 相对单位 使用rem为元素字体大小时,相对的是html根元素大小
- vw 相对单位 1vw相对于浏览器窗口宽度百分之一
- vh 相对单位 1vh相对于浏览器窗口高度百分之一
- 百分比 相对单位 相对于父元素宽度或者高度的百分比
盒模型?
标准盒模型
box-sizing = context-box 盒子的最终宽度和高度 = 设置的宽度与高度 + 边框 + 内边距 + 外边距,会把盒子撑大
怪异盒模型
box-sizing = border-box 盒子的最终宽度和高度 = 设置宽度与高度,(边框,内边距,外边距)会相内减少盒子内容空间
css定位?
- position:static 静态定位 一般的元素不加任何定位属性都属于静态定位,在页面的最底层属于标准流,一般用来清除定位
- position:relative 相对定位 相对定位的盒子仍在标准流中,不影响其他元素布局。
- position:absolute 绝对定位 绝对定位的元素脱离了文档流,绝对定位元素不占据空间。
- position:fixed 相对于浏览器窗口定位,并且不会随着滚动条进行滚动。
- position:sticky 可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位。
盒子水平垂直居中
1. margin:auto方法
当元素有固定宽高时,给元素设置margin:auto;水平居中,在利用子绝父相,父元素设置position:relative;子元素设置position:adsoliute;top:0pk;left:0px;right:0px;bottom:0px;
2. 定位方法
给元素设置position:adsoliute;top:50%;left:50%;margin-right:-盒子宽度一半;margin-top:-盒子高度一半;
3.display:flex
父元素设置display:flex;justify-content:center;align-items:center;
4. 栅格布局
父元素设置dispay:grid;align-items:center;justify-content:center;
5. 栅格布局
父元素设置dispay:grid;子元素``` align-self: center; justify-content: center; margin: auto;
文字水平垂直居中盒子不行 使用文本与行高
text-align:center;line-height:高度;
清除浮动的方法?
1. 父元素设置高度
2.在结尾处加空标签clear;both
3.父元素定义伪类:after和zoom
4.父元素设置overflow:hidden;
5.双伪类元素
css的权重顺序?
!important > 内联式 > id选择器 > 类 | 伪类 | 属性选择器 | 伪对象 > 标签 > 继承 > 通配符
css常见的伪类标签有那些?
:hover伪类用于指定当鼠标悬停在元素上时的样式,常用于按钮、超链接等元素的样式设置
:active伪类用于指定当元素被激活时的样式,比如鼠标点击按钮、表单元素提交等事件。
:focus伪类用于指定当元素获得焦点时的样式,比如文本框点击输入时,或者通过tab键转移焦点时。
:nth-child伪类用于匹配某个元素的父元素的第n个子元素,n从1开始。同时,:nth-child可以和odd或者even关键字组合使用,表示奇数或偶数。 如 ul li:nth-child(3n) { background: pink; } ul li:nth-child(odd) { color: blue; }
css引入的方式有那些,link和@import的区别是什么
区别
1.link 属于xhtnl标签,而@impport完全是css提供的一种方式
2.当页面被加载时,link引用的css会同时被加载,@import引用的css会等页面加载完毕在加载。所以在网络不好的情况会闪烁。
3.当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的
css动画怎么使用的
动画 css动画主要是通过animation属性实现,使用动画时先声明动画@keyframes(声明名称){}然后在需要使用动画效果的位置使用 例:animation:(声明名称) 20S linear infinite alternate 进行调用
旋转 transform:rotate(45deg);
平移 transform: translate(200px, 200px);
css回流和重绘
重绘(repaint):
- 当节点样式发生改变但是不影响布局时,会产生重绘。只会动态更新样式(比如颜色、透明度、背景)。
- 重绘相对于回流性能影响较小
回流(reflow):
- 当节点样式发生改变影响到页面布局时,会产生回流。相当于刷新页面(比如宽高、边框大小、内外边距等)。
- js对 DOM 元素的增、删、改也会产生回流。改变 DOM 容易导致整体布局发生变化。
重绘不一定引发回流,回流一定会引发重绘