前端面试之梳理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是页面内容不可缺少的一部分


相关文章
|
5月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
transition过渡属性 早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成。 但在CSS3中新增加了一个新的模块transition,它可以通过一些简单的CSS事件来触发元素的外观变化, 让效果显得更加细腻。简单点说,就是通过鼠标经过、获得焦点,被点击或对元素任何改变中触发, 并平滑地以动画效果改变CSS的属性值。 在CSS中创建简单的过渡效果可以从以下几个步骤来实现: 在默认样式中声明元素的初始状态样式; 声明过渡元素最终状态样式,比如悬浮状态; 在默认样式中通过添加
298 1
|
5月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
transform变形 css3在原来的基础上新增了变形和动画相关属性,通过这些属性可以实现以前需要大段JavaScript才能实现的 功能。 CSS3的变形功能可以对HTML组件执行位移、旋转、缩放、倾斜4种几何变换,这样的变换可以控制HTML组件 呈现出丰富的外观。 借助于位移、旋转、缩放、倾斜这4种几何变换,CSS3提供了transition动画。 transition动画比较简单,只要指定HTML组件的哪些CSS属性需要使用动画效果来执行变化,并指定动画时间,就可保证动画播放。 比transitio
261 0
|
5月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
Flex 布局 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 一、Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
385 1
|
5月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
盒模型 盒模型: 所谓盒模型,就是浏览器为页面中的每个HTML元素生成的矩形盒子。 这些盒子们都要按照可见板式模型在页面上排布。 可见的板式模型主要由三个属性控制:position 属性、display 属性和 float属性。 position属性控制页面上元素间的位置关系。 display属性控制元素是堆叠、并排或者不在页面上显示。 float属性提供控制的方法,以便于把元素组成成多栏布局。 盒模型讲解: 在默认的情况下,每个盒子的边框是不可见的,背景也是透明的。 所以我们 不能直接的看到页面中的盒
528 1
|
5月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
Animation属性 css3为Animation动画提供的几个属性如下: 属性名 属性值 animation-name 指定动画名称,该属性指定一个已有的关键帧定义。 animation-duration 指定动画持续时间。 animation-timing-funtion 指定动画变化速度。 animation-delay 指定动画延迟多长时间才开始执行。 animation-iteration-count 指定动画的循环执行次数。 animation:这是一个复合属性。
377 3
|
5月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
position定位(核心) 我们讲盒模型的时候,提到了3个属性可以用来控制页面排版。 三大属性:position属性,display属性,float属性。 position 属性控制页面上元素间的位置关系。 display 属性控制页面元素是否显示或者是堆叠还是并排显示。 float 属性提供控制方法。 通过float这种控制方法,可以实现多栏布局,导航菜单等等。 position属性是干嘛用的?怎么用?有哪些属性值? position属性控制页面上元素间的位置关系,也就是排版。 怎么用?要知道怎么用
555 1
|
5月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
继承 我们的CSS中很多的属性也是可以继承的,其中相当一部分是跟文字的相关的,比如说颜色、字体、字号。 当然还有一部分是不能继承的。 例如边框、内外边距。 层叠 层叠是CSS的核心机制。 层叠的工作机制: 当元素的同一个样式属性有多种样式值的时候,CSS就是靠层叠机制来决定最终应用哪种样式。 层叠规则: 层叠规则一:找到应用给每个元素和属性的声明。 说明:浏览器在加载每个页面时,都会据此查找到每条CSS规则, 并标识出所有受到影响的HTML元素。
183 0
|
9月前
|
存储 自然语言处理 前端开发
抖音快手小红书虚拟评论截图生成器,模拟对话制作工具,html+js+css
这是一款纯前端实现的多平台虚拟评论生成器,支持抖音、快手、小红书风格,适用于产品演示与UI设计。采用Vanilla JS与Flexbox布局,利用IndexedDB存储数据,CSS Variables切换主题。
|
9月前
|
存储 前端开发 安全
病历单生成器在线制作,病历单生成器app,HTML+CSS+JS恶搞工具
本项目为医疗病历模拟生成器,旨在为医学教学和软件开发测试提供数据支持,严格遵守《医疗机构病历管理规定》。
|
9月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中