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

CSS面试总结_0

时间:2023-03-30 23:24:48 CSS

面试题总结:https://segmentfault.com/a/11...pxrememdifference1.px1.相对长度单位。相对于显示器屏幕分辨率。2.存在浏览器不兼容问题。2.em1。相对长度单位。相对于当前对象中文本的字体大小。2、em的值不固定,em会继承父元素的大小。3.如果parent设置font-size:20px,那么1em=20px。2em=40px;如果父级将font-size设置为30px。1em=30px。2em=60px。4.存在字体设置容易造成混淆的问题。3.rem1。相对长度单位。计算相对于根节点的html字体大小。任何浏览器的默认字体高度都是16px。2、如果设置HTML根节点的font-size为100px,则1em=100px。2em=200px。它与父字体无关。3.浏览器兼容性比较好。display:none和visibility:hidden有什么区别?display:none隐藏对应的元素,在文档布局中不给它分配空间,它每一边的元素都会被关闭,就好像它从未存在过一样。visibility:hidden隐藏相应的元素,但保留文档布局中的原始空间。CSS中的link和@import有什么区别?(1)link为HTML标签,@import由CSS提供;(2)页面加载时,会同时加载链接,@import引用的CSS会等到页面加载完成后再加载;(3)import只能被IE5及以上识别,link是HTML标签,不存在兼容性问题;(4)链接样式的权重高于@import。告诉我有关box-sizing属性和盒子模型的信息?盒子模型:content+border+padding+margin盒子模型分为:基础模型(w3c标准盒子模型)+IE模型(基础模型width=contentIE模型width=content+border+padding)如何区分basicmodel而IE模型Css3新加入的属性Box-sizing有两个值content-box(基础模型)和border-box(IE模型),获取框模型对应的宽高:dom.style.width/heightbox-sizing属性主要用于控制元素的大小解析方式为盒模型。默认值为内容框。content-box:让元素保持W3C标准盒模型。元素的宽/高由border+padding+content的宽/高决定。设置width/height属性是指content部分的width/height。怪癖模式)。设置width/height属性是指border+padding+content标准浏览器,按照W3C规范解析盒模型。一旦修改了元素的border或者padding,就会影响到元素的boxsize,不得不重新计算元素的boxsize,从而影响整个页面的布局。什么是CSS选择器?哪些属性可以继承?优先级算法是如何计算的?CSS3中的新伪类是什么?1.id选择器(#myid)2.类选择器(.myclassname)3.标签选择器(div,h1,p)4.相邻选择器(h1+p)5.子选择器(ul>li)6.后代选择器(lia)7.通配符选择器(*)8.属性选择器(a[rel="external"])9.伪类选择器(a:hover,li:nth-child)可继承样式:font-sizefont-family颜色,文本缩进;不可继承的样式:borderpaddingmarginwidthheight;priority:!important>id>class>tag(important比inline有更高的优先级,但是inline的链接比id高)CSS3新伪类例子:p:first-of-type选取属于的每个

元素到其父元素的第一个

元素。p:last-of-type选择作为其父元素的最后一个

元素的每个

元素。p:only-of-type选择作为其父元素唯一的

元素的每个

元素。p:only-child选择每个

元素,该元素是其父元素的唯一子元素。p:nth-child(2)选择作为其父元素的第二个子元素的每个

元素。:enabled:disabled控制表单控件的禁用状态。:checked单选或复选框被选中。position的值,relative和absolute是相对于谁定位的?absolute生成绝对定位的元素,相对于最近的非静态定位的父元素定位。fixed(旧IE不支持)生成绝对定位的元素,相对于浏览器窗口定位。relative生成??相对定位的元素,相对于它们在正常流中的位置定位。静态默认。没有定位,元素出现在正常流中CSS3有哪些新特性?官网教程:https://www.runoob.com/css3/c...CSS3实现圆角(border-radius)、阴影(box-shadow)、文字特效(text-shadow)、线性渐变(gradient),rotation(transform)transform:rotate(9deg)scale(0.85,0.90)translate(0px,-30px)skew(-9deg,0deg);//旋转,缩放,定位,倾斜添加更多CSS选项唯一CSS3中引入的伪元素是::selection。媒体查询、多列布局border-imageBFC规范的理解?BFC是块级格式化上下文。是页面中一个相对独立的渲染区域。它决定了内部子元素如何放置和定位,以及区域内部元素和外部元素的关系。特点:1、bfc可以包含浮动元素2、bfc确定的区域不会与外部浮动元素重叠3、同一个bfc下相邻的块级子元素在margin中垂直重叠Howtocreatebfc:floatvalueNotnone,overflow的值为auto,display的值为inline-block,position的值为flex或absolute常见的兼容性问题?PNG24位图像出现在iE6浏览器的背景中。解决方案是将其设为PNG8。也可以引用脚本进行处理。浏览器默认的margin和padding是不一样的。解决办法是加一个全局的*{margin:0;padding:0;}来统一。IE6bilateralmarginbug:block属性标签float后有水平margin,ie6显示的margin比设置的大。floating产生的doubledistanceie(IE6双边间距问题:IE6下,如果在元素上设置floating,同时设置margin-left或margin-right,margin值会加倍。)#框{浮动:左;宽度:10px;margin:000100px;}在这种情况下,IE将生成一个20px的距离。解决办法是加上——_display:inline;到浮动标签样式控件以将其转换为内联属性。(符号_只有ie6才能识别)渐进识别法,从整体中逐渐排除部分。首先,巧妙地使用“\9”标记将IE浏览器与所有大小写区分开来。然后,再次使用“+”将IE8和IE7、IE6分开,这样IE8就已经独立识别了。css.bb{background-color:#f1ee18;/*所有标识*/.background-color:#00deff\9;/*IE6,7,8标识*/+background-color:#a200ff;/*IE6,7标识*/_background-color:#1e0bd1;/*IE6标识*/}IE下可以使用获取的方法常规属性获取自定义属性,或者使用getAttribute()获取自定义属性;在Firefox下,只能使用getAttribute()来获取自定义属性。解决方法:统一通过getAttribute()获取自定义属性。IE下,event对象有x,y属性,没有pageX,pageY属性;在Firefox下,事件对象有pageX,pageY属性,但是没有x,y属性。解决方法:(条件注释)缺点是在IE浏览器下可能会增加额外的HTTP请求次数。默认情况下,Chrome中文界面会强制小于12px的文字以12px显示,可以通过添加CSS属性-webkit-text-size-adjust:none;来解决。访问超链接后,不会出现悬停样式。链接样式不再有hover和active解决方法是改变CSS属性的顺序:L-V-H-A:a:link{}a:visited{}a:hover{}a:active{}奇怪的模式问题:缺少DTD声明,Firefox页面仍然会以标准模式解析,但在IE中会触发quirks模式。为了避免怪异的模式带来不必要的麻烦,最好养成编写DTD语句的好习惯。现在可以使用html5推荐的写法了:的上边距和下边距重叠ie和ff,相邻两个div的margin-left和margin-right不会重叠,但是margin-top和margin-底部的意志。巧合发生了。解决办法是养成良好的代码编写习惯,同时使用margin-top或者margin-bottom。IE6对png图片格式支持不佳(引用脚本处理)。清除浮动的方法有哪些? 浮动元素与文档流分离,不占用空间。浮动元素在碰到其包含边框或浮动元素的边框时停止。1.清除带有空标签的浮动。该方法是在所有浮动标签后添加一个空标签,并定义cssclear:both。缺点是添加了无意义的标签。2.使用溢出。添加css属性overflow:auto;缩放:1;zoom:1到包含浮动元素的父标签,以便与IE6兼容。3.使用after伪对象清除浮动。此方法仅适用于非IE浏览器。具体的写法可以参考下面的例子。使用过程中要注意以下几点。1、该方法中需要清除浮动元素的伪对象必须设置height:0,否则元素会比实际元素高几个像素;.clearfix:after;{内容:"";显示:块;高度:0;清除:两者;可见性:隐藏;}如何实现两列布局?(假设左侧宽度为200,右侧自适应-)1、使用float:左边的框使用float:left;右框使用margin-left:200px2。使用定位:absolute+margin3。使用flex:bigboxflex设置右框的flex为14使用float+BFC:左框使用float:left,右框设置overflow:hidden(float+BFC)实现三栏布局?(假设已知高度,请写一个三栏布局,左右宽度各300px,中间自适应)  

  
  
1.使用浮动:左右框左右浮动中心设置margin-left:300px和margin-right:300px2.使用绝对定位:为左右框设置绝对定位absoluteleft:0right:0top:0,centersetmargin-left:300pxandmargin-ringht:300px3.useelasticlayoutfelx:setdisplayforthebigboxbox1:felx,centerboxsetfelx:14.Usedisplay:tablelayout:setdisplay:table为大box,setdisplay:table-cellverticallyandhorizo??ntallyfortheleftandrightboxes?1.水平居中:给div设置一个宽度,然后加上margin:0auto属性2.把元素变成定位元素position:absolute;设置元素的定位位置,上、下、左、右的距离为0left:0;右:0;上:0;下:0;边距:自动;*兼容性较好,缺点:不支持IE7以下浏览器3.把元素变成定位元素:50%;top:50%;设置元素的左上边距为宽高的负1/2margin-left:-100px;margin-top:-200px;}*良好的兼容性;缺点:必须知道元素的宽高4.把元素变成定位元素position:absolute+transform;设置元素的定位位置,距顶部和左侧的距离为50%left:50%;顶部:50%;设置元素相对于自身的偏移量shift为负50%(即元素本身大小的一半)transform:translate(-50%,-50%);*这是css3中的样式;缺点:兼容性差,只支持IE9+的浏览器5。使用flex布局  父框设置display:flex;  align-items:center;/verticallycentered/  justify-content:contenr/horizo??ntally居中/三角形风格