前端面试之梳理CSS

简介: 前端面试之梳理CSS

       无论我们是主动还是被动,面试总是我们不得不学会的一项技能;其中的基础又是重中之重,决定了我们是否能继续面下去。


本文主讲一些常用css考点:


1)flex: 1

       a. flex-grow(放大比 默认0) flex-shrink(缩小比 默认1) flex-basis(在分配多余空间之前 项目占据的主轴空间)

       b. flex: 1 1 auto

       c. 放大比和缩小比计算 (https://www.cnblogs.com/0314dxj/p/14705398.html


2)felx(align-self align-content align-items)

       a. align-items 属性需要施加在flex容器上 它规定的是flex容器中所有item在交叉轴中的对齐方式 设置flex容器中所有的item都按一个方向对齐时用它

       b. align-self 属性施加在flex容器中的item上 允许单个项目有与其他项目不一样的对齐方式 它覆盖了外部容器规定的align-items属性 同样也只规定在交叉轴上的对齐方式 如果像设置一个item有不一样的对齐方式的时候 可以用它

       c. 对比align-items和align-self直接移动item自身在交叉轴上的基线 align-content移动的是容器自身的flex line 并对多行项目起作用


3)根节点动态设置(计算原理)https://www.cnblogs.com/sttchengfei/p/13188719.html?ivk_sa=1024320u)    

   a. 屏幕宽为clientWidth(px) 设计稿宽度为750px 假设 n = clientWidth/750    

   b. 将html的font-size:n(px)    

   c. 则有 n(px) = 1rem 因为1rem为根节点(html节点)字体的大小一倍    

   d. 假设有一个div 在设计稿测量的宽度为 ruleW(px)    

   e. 则需要写入的宽度width:设为w(单位暂不确定)    

   f. 则有w/clientWidth(px)=ruleW(px)/750px    

   g. 化简: w = (clientWidth/750)*ruleW ==> w = n*ruleW    

   h. 最后得出 w = ruleW * 1rem = ruleW(rem) 即为设计稿宽    

   i. 问题: 上面推导完全按照数学问题来推算 忽略了一个重要的问题 就是浏览器存在最小字体 不得小于12px 当我们设置font-size: n(px) 屏幕宽度除以750可能已经很小了 这个比例已经不太适合了 所以我们把它放大一百倍    

   j. rem相当于根元素的字体大小 em相当于父元素的字体大小



4)opacity: 0; visibility: hidden; display: none;区别

   a. dom结构 {        (display: none 会让元素完全从渲染树中消失 渲染的时候不占据任何空间 不能点击)        (visibility: hidden 不会让元素从渲染树消失 渲染元素继续占据空间 只是内容不可见 不能点击)        (opacity: 0 不会让元素从渲染树消失 渲染元素继续占据空间 只是内容不可见 可以点击)    }    

   b. 继承 {        (display: none和opacity: 0 是非继承属性 子孙节点消失由于元素从渲染树消失造成 通过修改子孙节点属性无法显示)        (visibility: hidden 是继承属性 子孙节点消失由于继承了hidden 通过设置visibility: visible 可以让子孙节点显示)    }    

   c. 性能 {        (display: none 修改元素会导致文档回流 读屏器不会读取display内容 性能消耗较大)        (visibility: hidden 修改元素只会造成本元素的重绘 性能消耗较少 读屏器读取visibility内容)        (opacticy: 0 修改元素会造成重绘 性能消耗少)    }    

   d. 点击事件 (opacity可以触发 其余两个不能触发)    


5)伪类+伪元素的区别

   a. 伪类选择元素基于的是当前元素处于的状态 或者说元素当前所具有的特性 而不是元素的id class 属性等静态的标志 由于状态是动态变化的 所以一个元素达到特定状态时 它可能得到一个伪类的样式 当状态改变时 它又会失去这个样式 由此可以看出 它的功能和class有些类似 但它是基于文档之外的抽象 所以叫伪类

   b. 与伪类针对特殊状态的元素不同的是 伪元素是对元素中的特定内容进行操作 它所操作的层次比伪类更深了一层 也因此它的动态性比伪类要低的多 实际上 设计伪元素的目的就是去选取诸如元素内容第一个字 第一行 选取某些内容进行操作 或后面在这种普通的选择器无法完成的工作 它控制的内容实际上和元素是相同的 但是它本身只是元素的抽象 并不存在于文档中 所以叫伪元素



6)link和@import的区别

   a. @import是css提供的语法规则 只有导入样式表的作用 link是html提供的标签 不仅可以加载css文件 还可以定义rss rel连接属性等

   b. 加载页面时 link引入的css被同时加载 @import引入的css将在页面加载完成后加载

   c. link标签可作为html元素 不存在兼容问题 而@import是css2.1才有的语法 故老版本(IE5之前)不能识别

   d. 可以通过js操作dom 来插入link标签改变样式由于dom方法是基于文档的 无法使用@import方式插入样式



7)src和href的区别

   a. href标识超文本引用 用在link和a等元素上 href是引用页面关联 是在当前元素和引用资源之间建立联系

   b. src表示引用资源 表示替换当前元素 用在img script iframe上 src是页面内容不可缺少的一部分


相关文章
|
16天前
|
Web App开发 前端开发 JavaScript
揭秘!前端大牛们如何巧妙利用CSS3,打造炫酷视觉效果!
【10月更文挑战第31天】前端开发面临复杂布局的挑战,本文介绍了几种提升开发效率和代码质量的工具和技术。基础的HTML和CSS可以应对大部分布局需求,而Firefox开发者工具、VS Code、Vue、React等则能应对更复杂的布局,帮助开发者构建高性能、用户友好的网页应用。
25 4
|
24天前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
60 1
|
1月前
|
前端开发 JavaScript
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
169 1
|
1月前
|
前端开发 容器
前端技术分享:利用CSS Grid布局实现响应式设计
【10月更文挑战第1天】前端技术分享:利用CSS Grid布局实现响应式设计
|
1月前
|
前端开发 UED 容器
前端技术分享:利用 CSS Grid 实现响应式布局
【10月更文挑战第1天】前端技术分享:利用 CSS Grid 实现响应式布局
56 2
|
1月前
|
Web App开发 前端开发
【前端基础篇】CSS基础速通万字介绍(上篇)3
【前端基础篇】CSS基础速通万字介绍(上篇)
16 1
|
1月前
|
Web App开发 前端开发
【前端基础篇】CSS基础速通万字介绍(上篇)2
【前端基础篇】CSS基础速通万字介绍(上篇)
24 1
|
1月前
|
缓存 前端开发 JavaScript
【前端基础篇】CSS基础速通万字介绍(上篇)1
【前端基础篇】CSS基础速通万字介绍(上篇)
18 1
|
1月前
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题
|
1月前
|
前端开发 JavaScript 容器
前端之CSS基础知识
前端之CSS基础知识
17 0

热门文章

最新文章

下一篇
无影云桌面