当前位置: 首页 > Web前端 > CSS

CSS面试技巧,需要掌握哪些CSS技巧

时间:2023-03-30 19:01:12 CSS

1介绍一下标准的CSS盒模型?和低版本IE的盒子模型有什么区别?标准盒模型:width=内容宽度(content)+border+padding+margin低版本IE盒模型:width=内容宽度(content+border+padding)+margin2box-sizing属性?用于控制元素的盒模型的解析方式,默认为content-boxcontext-box:W3C标准盒模型,设置元素的height/width属性,指的是内容部分边框的高/宽-box:IE传统的盒子模型。设置元素的height/width属性是指border的height/width+padding+content3什么是CSS选择器?哪些属性可以继承?CSS选择器:id选择器(#myid)、类选择器(.myclassname)、标签选择器(div、h1、p)、相邻选择器(h1+p)、子选择器(ul>li)、后代选择器(lia)、通配符选择器(*)、属性选择器(a[rel=”external”])、伪类选择器(a:hover、li:nth-child)可继承属性:font-size、font-family、color不可继承样式:border,padding,margin,width,height优先级(就近原则):!important>[id>class>tag]!important是4CSS优先级高于inline优先级算法如何计算?元素选择器:1class选择器:10id选择器:100元素标签:1000!important声明的样式优先级最高,如果有冲突会计算。如果优先级相同,则选择最后出现的样式。继承样式的优先级最低。5CSS3中有哪些新的伪类?p:first-of-type选择属于其父元素的第一个元素p:last-of-type选择属于其父元素的最后一个元素p:only-of-type选择其父元素only元素p:only-child选择属于其父元素的唯一子元素p:nth-child(2)选择属于其父元素的第二个子元素:enabled:disabled表单控件的禁用状态。:checked单选或复选框被选中。6如何让一个div居中?如何使浮动元素居中?如何居中绝对定位的div?div:border:1pxsolidred;margin:0auto;height:50px;width:80px;浮动元素的上、下、左、右中心:border:1pxsolidred;float:left;position:absolute;width:200px;height:100px;left:50%;top:50%;margin:-50px00-100px;绝对定位左右center:border:1pxsolidblack;position:absolute;width:200px;height:100px;margin:0auto;left:0;右:0;还有一种比较优雅的居中方式就是使用flexbox,后面会整理。7显示值有哪些?解释他们的作用?inline(default)--inlinenone--hideblock--blockdisplaytable--tabledisplaylist-item--itemlistinline-block8position的值?静态(默认):按照正常文档流排列;relative(相对定位):不脱离文档流,通过top,bottom,left,right定位来指代自身的静态位置;absolute(绝对定位):指的是最近的一个非静态父元素由top,bottom,left,right定位;fixed(固定定位):固定参照物为可见窗口。9CSS3有哪些新特性?RGBA和透明度background-imagebackground-origin(content-box/padding-box/border-box)background-sizebackground-repeatword-wrap(wrapforlonginseparablewords)word-wrap:break-wordtext-shadow:text-阴影:5px5px5px#FF0000;(水平阴影、垂直阴影、模糊距离、阴影颜色)font-face属性:定义自己的字体圆角(borderradius):border-radius属性用于创建圆角边框图片:border-image:url(border.png)3030roundboxshadow:box-shadow:10px10px5px#888888mediaquery:定义两套css,浏览器大小变化时会使用不同的属性10请说明CSS3flexbox(弹性盒布局模型),以及适用场景?此布局模型的目的是提供一种更有效的方式来为容器中的项目布置、对齐和分配空间。在传统的布局方式中,块布局是将块从上到下垂直排列;而内联布局将它们水平排列。Flexbox布局没有这种固有的方向限制,可以由开发人员自由操作。试用场景:Elastic布局适用于移动前端开发,在Android和ios上也完美支持。11纯CSS创建三角形的原理是什么?首先需要将元素的宽高设置为0,然后设置边框样式。width:0;height:0;border-top:40pxsolidtransparent;border-left:40pxsolidtransparent;border-right:40pxsolidtransparent;border-bottom:40pxsolid#ff0000;12如何设计全屏字符layout?第一类实字:确定三个块的高和宽;顶部块使用margin:0auto;居中;底部的两个块使用float或inline-block没有换行符;使用保证金来调整他们的位置以居中。第二种全屏字符布局:上div设置为100%,下div为50%宽,然后使用float或者inline使其不换行。13常见的兼容性问题?不同浏览器中tabs默认的margin和padding是不一样的。{margin:0;padding:0;}IE6bilateralmarginbug:当block属性标签float后有水平margin时,IE6显示的margin比设置的margin大。破解:显示:内联;将其转换为内联属性。渐进式识别的方法是逐渐将部分排除在整体之外。首先,巧妙地使用“9”标记将IE与所有情况区分开来。然后,再次使用“+”将IE8和IE7、IE6分开,这样IE8就已经独立识别了。{background-color:#f1ee18;/allrecognition/.background-color:#00deff9;/IE6,7,8recognition/+background-color:#a200ff;/IE6,7recognition/_background-color:#1e0bd1;/IE6识别*/}设置更小的高度标签(一般小于10px),高度超过IE6、IE7自己设置的高度。Hack:设置overflow:hidden用于超过高度的标签;或将行高line-height设置为小于您设置的高度。IE下可以使用获取常规属性的方法获取自定义属性,也可以使用getAttribute()获取自定义属性;在Firefox下,只能使用getAttribute()来获取自定义属性。解决方法:通过getAttribute()统一获取自定义属性。默认情况下,Chrome中文界面会强制小于12px的文字以12px显示,可以通过添加CSS属性-webkit-text-size-adjust:none来解决;超链接被访问后,hover样式不会出现,被点击的超链接样式也不再有hover和active。解决方法是改变CSS属性的顺序:L-V-H-A(爱恨交加):a:link{}a:visited{}a:hover{}a:active{}14为什么需要初始化CSS样式因为浏览器兼容性问题,不同浏览器对某些标签的默认值不同。如果不对CSS进行初始化,浏览器之间的页面显示往往会存在差异。15absolutecontainingblock计算方式和普通流量有什么区别?不管属于哪种类型,都需要在其祖先元素中找到最近的position值不是static的元素,然后判断:如果这个元素是内联元素,那么包含块就是第一个和最后一个生成的元素可以包含这个元素的inlinebox的paddingbox的最小矩形(margin和border以外的区域);否则,它由这个祖先元素的填充框组成。如果两者均未找到,则它是初始包含块。补充:static(默认)/relative:简单的说,就是其父元素的内容框(即去掉padding的部分)始终是根元素(html/body)16CSS中的visibility属性有一个collapse属性值?不同浏览器有什么区别?当元素的可见性属性设置为折叠值时,它的行为与普通元素的隐藏行为相同。在chrome中,使用collapse值和使用hidden没有区别。firefox、opera和IE,使用collapse值和使用display:none没有区别。17display:none和visibility:hidden有什么区别?display:none不显示对应元素,不再在文档布局中分配空间(回流+重绘)visibility:hidden隐藏对应元素,保留文档布局中原有空间(重绘)18位并显示,overflow,当float的这些特性相互叠加时会发生什么?display属性指定元素应生成的框类型;position属性指定元素的定位类型;float属性是一种布局方法,用于定义元素浮动的方向。类似于优先级机制:position:absolute/fixed具有最高优先级。当它们存在时,float不起作用,需要调整显示值。float或absolute定位的元素只能是块元素或表格。19BFC规范的理解(块格式化上下文:blockformattingcontext)?BFC指定内部BlockBox的布局方式。定位方案:内部的Boxes会在垂直方向上依次放置。Box在垂直方向的距离由margin决定,属于同一个BFC的两个相邻Box的margin会重叠。每个元素的边距框的左侧接触包含块的边框框的左侧。BFC的区域不会和浮动框重叠。BFC在页面上是一个隔离独立的容器,容器内的子元素不会影响外面的元素。BFC计算高度时,浮动元素也会参与计算。满足以下条件之一即可触发BFC根元素,即htmlfloat的值不为none(默认),overflow的值为不可见(默认),display的值为inline-block、表格单元格和表格标题位置。取值是absolute还是fixed20为什么会有float,什么时候需要清除?清除浮动的方法?浮动元素在碰到其包含边框或浮动元素的边框时停止。由于浮动元素不在文档流中,文档流的块框表现得好像浮动框不存在一样。浮动元素浮动在文档流中的块框上。浮动引起的问题:父元素的高度无法展开,影响父元素同级元素和浮动元素同级的非浮动元素(内联元素)如果不是第一个就会跟随元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构。清除浮动的方法:在父div定义最后一个浮动元素的高度后添加一个空的div标签,并添加样式clear:both。为包含浮动元素的父标签添加样式overflow到hidden或auto。父div定义了zoom21,上下边距重合。在重合元素外包裹一层容器,触发容器生成BFC。例子:

。aside{margin-bottom:100px;宽度:100px;高度:150px;背景:#f66;}.main{margin-top:100px;高度:200px;背景:#fcc;一个div,通过改变这个div的属性,让两个box分属于两个不同的BFC,从而防止margin重叠/溢出:hidden;//此时已经触发了BFC属性。}22设置元素浮动后,元素的显示值是多少?自动改为display:block23移动端的布局你用过媒体查询吗?可以通过媒体查询为不同大小尺寸的媒体定义不同的css,以适应相应设备的显示。在CSS:@mediaonlyscreen和(max-device-width:480px){/cssstyle/}24使用CSS预处理器?Lesssass25CSS优化和性能提升的方法有哪些?避免过度约束避免后代选择器避免链式选择器使用简洁的语法避免不必要的名称空间避免不必要的重复最好使用语义表达的名称。一个好的类名应该描述它是什么而不是避免它!重要的是,你可以选择其他选择器来尽可能精简规则,你可以合并不同类中重复的规则26浏览器如何解析CSS选择器?CSS选择器是从右到左解析的。如果发现从左到右的匹配不符合规则,就需要回溯,这样会损失很多性能。如果是从右向左匹配,先找到所有最右边的节点,对于每个节点,查找其父节点,直到找到满足条件的根元素或匹配规则,则本分支遍历结束。两种匹配规则的性能差别很大,因为从右到左匹配在第一步中筛选掉了大量不合格的最右节点(叶子节点),而从左到右匹配规则的性能是全部浪费在失败的查找上。CSS解析完成后,需要将解析结果连同DOMTree的内容一起分析构建RenderTree,最终用于绘图。在创建RenderTree(WebKit中的“Attachment”过程)时,浏览器必须根据CSS解析结果(StyleRules)来决定为DOMTree中的每个元素生成什么样的RenderTree。27在网页中应该使用奇数字体还是偶数字体?为什么?使用偶数字体。偶数相对更容易与网页设计的其余部分形成比例关系。Windows自带的点阵Arial(中意宋体)从Vista开始只提供12、14、16px三种点阵尺寸,而13、15、17px则使用更小的点。(也就是每个词占用的空间增加了1px,但是点阵没有变化)所以略显稀疏。28margin和padding适用于哪些场景?什么时候使用margin:需要在border外加一个空白,两个背景色上下相连的box需要相互抵消时不需要空白。什么时候使用padding:需要在border里面加一个空格。需要添加背景颜色上下相连的两个框的空白。希望是两者之和。兼容性问题:在IE5和IE6中,当为浮动框指定边距时,左边的边距可能会变成原来的两倍宽。通过更改padding或指定display:inlineofthebox来解决。29元素的垂直百分比设置是相对于容器的高度?当按百分比设置元素的宽度时,它是相对于父容器的宽度计算的。但是,对于一些表示垂直距离的属性,比如padding-top、padding-bottom、margin-top、margin-bottom等,在设置它们为百分比时,也是基于父容器的宽度,不是身高。30全屏滚动的原理是什么?使用了CSS的哪些属性?原理:有点类似于轮播,整体元素一直排列,假设有5个全屏页面显示,那么高度为500%,只显示100%,其余即可通过transform定位在y轴上,或者通过margin-top实现overflow:hidden;过渡:所有1000ms缓和;31什么是响应式设计?响应式设计的基本原则是什么?如何兼容低版本IE?响应式网页设计(ResponsiveWebdesign)是一个可以兼容多种终端的网站,而不是为每个终端做一个特定的版本。基本原理是通过媒体查询检测不同的设备屏幕尺寸进行处理。页面头部的元声明中必须有一个视口。BabyNameNetwork32视差滚动影响?视差滚动通过在网页向下滚动时控制背景比前景移动得慢来创建令人惊叹的3D效果。CSS3实现的优点:开发时间短,性能和开发效率更好,缺点是不兼容低版本浏览器。jQuery实现通过控制不同层的滚动速度,计算每一层的时间来控制滚动效果。优点:兼容各种版本,效果可控性好缺点:开发时对创作者要求高插件实现方式如:parallax-scrolling,兼容性非常好33::before和:after中有双冒号和单冒号是什么不同之处?解释这两个伪元素的作用。单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。::before是在元素体内容之前定义的伪元素,存在一个子元素。它不存在于dom中,只存在于页面中。:before和:after这两个伪元素是CSS2.1中新增的。起初,伪元素的前缀使用单冒号语法,但随着Web的演进,在CSS3规范中,伪元素的语法被修改为使用双冒号,成为::before::after34你的line-height是怎么理解的?行高是指一行文字的高度,具体指两行文字的基线之间的距离。在CSS中,height和line-height起作用。height属性没有定义,最终表现必??须是line-height。单行文字垂直居中:将line-height值设置为与height一样大,可以实现单行文字垂直居中,也可以删除height。多行文本垂直居中:需要设置display属性为inline-block。35如何让Chrome支持小于12px的文字?p{font-size:10px;-webkit-transform:scale(0.8);}//0.8是缩放比例36,如何让页面上的字体更清晰更细?如何使用CSS?-webkit-font-smoothing在window系统下不起作用,但在IOS设备上有效-webkit-font-smoothing:antialiased是最好的,平滑的灰度。37位:固定;android下如何处理invalid?38如果需要手动写动画,你考虑的最小时间间隔有多长,为什么?大多数显示器默认频率为60Hz,即每秒刷新60次,所以理论上最小间隔为1/60*1000ms=16.7ms。39li与li之间看不见空格是什么原因?解决办法是什么?linebox的排列会受到中间空白(回车空格)等的影响,因为空格也是字符,这些空白也会被样式化占用空间,所以会出现空隙。如果字符大小设置为0,则不会有空格。.解决方法:可以把所有的
  • 代码都写在一行浮li里。float:left并在ul中使用font-size:0(谷歌不支持);你可以使用letter-space:-3px40display:inline-blockwhen会显示间隙吗?有空隙就会有缝隙。解决办法:去掉空格。margin为正时解决:margin使用负值,使用font-size。解决:font-size:0,letter-spacing,word-spacing41有一个高度自适应的div,里面有两个div,一个高度100px,希望另一个填满剩余的高度。外层div使用position:relative;高度要求自适应div使用position:absolute;顶部:100px;底部:0;左:042png,jpg,gif这些图片格式说明,什么时候使用它们。你学过webp吗?PNG是一种可移植网络图形(PortableNetworkGraphics)是一种无损数据压缩位图文件格式。优点是:压缩比高,色彩好。大多数地方都可以买到。JPG是一种用于照片的变形压缩方法。这是一种破坏性压缩,可以很好地平滑色调和颜色的变化。在www上,用于存储和传输照片的格式。gif是一种位图文件格式,可以以8位颜色再现真彩色图像。可以实现动画效果。webp格式是Google于2010年推出的一种图片格式,压缩率仅为jpg的2/3,体积比png小45%。缺点是压缩时间较长,兼容性不好。目前,Google和Opera支持它。43写在body之后和body之前的style标签有什么区别?页面从上到下加载,当然先加载样式。写在body标签之后由于浏览器是逐行解析HTML文档,当解析完写在末尾(outline或写在style标签中)的样式表时,浏览器会停止之前的渲染,等待加载解析style表格重新渲染后,Windows下IE下可能会出现FOUC现象(即样式失效导致的页面闪烁问题)。44CSS属性overflow属性定义如何处理溢出元素的内容区域内容?当参数为scroll时,必须出现滚动条。当参数为auto时,子元素内容大于父元素时会出现滚动条。当参数可见时,溢出内容出现在父元素之外。当参数被隐藏时,溢出被隐藏。45说明CSSSprites将一个页面中涉及的所有图片都包含成一张大图,然后结合CSSbackground-image、background-repeat、background-position进行背景定位。使用CSSSprites可以减少网页的http请求,从而大大提高页面的性能;CSSSprites可以减少图片的字节数。