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

css&html面试知识点

时间:2023-03-30 14:31:12 CSS

CSS优先级算法参考:http://www.bslxx.com/a/miansh...http://www.bslxx.com/a/miansh...http://www.bslxx.com/a/miansh...http://www.bslxx.com/a/miansh...优先和就近原则,同等权重下,以最接近的样式定义为准。定位准优先级:!important>id>class>tagimportant高于内联优先级important声明高于js优先级firstclass:表示内联样式,如:style="",权重为1000。第二类:表示一个ID选择器,如:#content,权重为0100。第三类:代表类、伪类和属性选择器,如.content,权重为0010。第四类:表示类型选择器和伪元素选择器,如divp,权重为0001。通配符、子选择器、相邻选择器等。如*、>、+,权重为0000。继承样式没有权重。css定义的权重/以下是权重规则:label的权重为1,class的权重为10,id的权重为100。下面///例子来演示各种定义的权重值:/*权重为1*/div{}/*权重为10*/.class1{}/*权重为100*/#id1{}/*权重为100+1=101*/#id1div{}/*权重is10+1=11*/.class1div{}/*weightis10+10+1=21*/.class1.class2div{}//如果weight相同,则最后定义的样式有效,但这应该避免CSS3一个新的伪类p:first-of-type选择作为其父元素的第一个

元素的每个

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

元素的每个

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

元素的每个

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

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

元素。:after在元素前添加内容,也可用于清除浮动。:before在元素后添加内容:enabled:disabled控制表单控件的禁用状态。:checked单选按钮或复选框被选中,居中浮动元素,设置div的宽度,然后添加margin:0auto属性div{width:200px;保证金:0自动;}//确定容器的宽高,width500heightLayerof300//设置layer的外边距.div{width:500px;height:300px;//可以设置高度,不留边距:-150px00-250px;职位:相对;//相对定位background-color:pink;//很容易看出效果left:50%;顶部:50%;}让绝对定位的div居中position:absolute;宽度:1200px;背景:无;保证金:0自动;顶部:0;左:0;底部:0;右:0;CSS3有新特性添加各种CSS选择器(:not(.input):所有class不是"input"的节点)圆角(border-radius:8px)多列布局(multi-columnlayout)阴影和反射(ShadowReflect)文字效果(text-shadow,)文字渲染(Text-decoration)线性渐变(gradient)旋转(transform)增加旋转、缩放、定位、倾斜、动画、多背景transform:scale(0.85,0.90)translate(0px,-30px)skew(-9deg,0deg)Animation:Newselectorp:nth-child(n){color:rgba(255,0,0,0.75)}flexboxmodeldisplay:flex;多栏布局column-count:5;媒体查询@media(max-width:480px){.box:{column-count:1;}}个性化字体@font-face{font-family:BorderWeb;src:url(BORDERW0.eot);}颜色透明度颜色:rgba(255,0,0,0.75);圆形边框半径:5px;渐变背景:linear-gradient(red,green,blue);阴影框阴影:3px3px3pxrgba(0,64,128,0.3);reflectionbox-reflect:below2px;文字装饰text-stroke-color:red;文本溢出文本溢出:省略号;背景效果background-size:100px100px;边框效果border-image:url(bt_blue.png)010;变换旋转变换:rotate(20deg);倾斜变换:skew(150deg,-10deg);位移变换:translate(20px,20px);缩放变换:scale(.5);平滑过渡transition:all.3sease-in.1s;animation@keyframesanim-1{50%{border-radius:50%;}}animation:anim-11s;使用纯CSS创建一个三角形//隐藏顶部、左侧和右侧(颜色设置为透明)#demo{width:0;高度:0;边框宽度:20px;边框样式:实心;border-color:transparenttransparentredtransparent;}浏览器兼容性png24位图片在iE6浏览器上出现背景,解决方法是做成PNG8。浏览器默认的margin和padding是不一样的。解决办法是加一个全局的*{margin:0;padding:0;}来统一IE。方法获取自定义属性,也可以使用getAttribute()获取自定义属性;在Firefox下,只能使用getAttribute()来获取自定义属性。解决方法:统一通过getAttribute()获取自定义属性。在IE中,even对象有x,y属性,没有pageX,pageY属性。Firefox下,event对象有pageX,pageY属性,没有x,y属性BFC块级格式化上下文(内部元素不影响外部元素)渲染规则:1.bfc元素的垂直外边距重叠2.bfc区域不影响不与浮动元素重叠3.独立容器4.计算bfc高度时,浮动元素也会参与计算创建bfc:1.overflow2.float不是none3.position不是static4.display与表格显示相关:inline-blockwhenwilldisplaygapsremovespaces,usemarginnegativevalue,usefont-size:0,letter-spacing,word-spacingclearfloat.clearfix:after{visibility:hidden;}显示:块;字体大小:0;内容:””;明确:两者;height:0;}1.使用标签设置display:inline-block;width:100%,撑起包含浮动元素的div(div不需要设计高度)2.overflow:hidden(BFC)3.可以使用标签设置display:block;width:100%,clear:both4.div="display:table5.div="display:table-cell6.div="display:flow-root(triggerBFC)7.div::after而不是标签="content:''显示:块;明确:两者;(底部有一个没有高度的元素)8.使用.clearfix:after{content:''display:block;清除:两者;}9。让div也浮动(BFC)盒模型盒模型组成:内容(content),innerpadding,border,outermargin(边距)IE8及以下版本浏览器,不声明DOCTYPE,内容宽高会包含innerpadding和border,称为怪异盒模型(IEboxmodel)标准(W3C)盒模型:elementwidth=width+padding+border+marginWeird(IE)boxmodel:elementwidth=width+margin标准浏览器通过设置css3box-sizing:content-盒子;//默认标准(W3C)框模型元素效果box-sizing:border-box;//触发怪异(IE)盒模型元素的效果box-sizing:inherit;//继承父元素box-sizing属性的值继承可继承的样式:font-size,font-family,color,list-style,cursor不可继承的样式:width,height,border,padding,margin,background方法隐藏元素可见性:隐藏;该属性只是简单的隐藏了某个元素,但是该元素所占的空间依然存在opacity:0;CSS3属性,设置0可以让一个元素完全透明position:absolute;设置一个大的左负值定位,让元素定位在可视区域之外display:none;该元素变得不可见,不再占用文档中的空间变换:比例(0);设置一个元素无限缩小,该元素将不可见,并保留该元素原来的位置HTML5属性,效果与display:none相同;但是这个属性是用来记录一个元素的状态height:0;将元素的高度设置为0并消除边框过滤器:blur(0);CSS3属性,将一个元素的blur设置为0,使该元素“消失”在页面中,rgba()和opacityopacity作用于元素的透明度和元素中的所有内容(包括文本)。rgba()只作用于元素本身的颜色或其背景色,子元素不会继承透明效果##BrowserJSCompatibility##Currentstyle:getComputedStyle(el,null)VSel.currentStyle事件对象:eVSwindow.event鼠标坐标:e.pageX,e.pageYVSwindow.event.x,window.event.y键码:e.whichVSevent.keyCode文本节点:el.textContentVSel.innerText有一个看不见的li和li之间的空格li的排列受中间空格(回车/空格)等影响,因为空格也是字符,会被应用样式占用空间,造成空隙。解决方法:在ul中设置font-size=0,在li中设置需要的文字大小px和empx。相对显示器的屏幕分辨率,不能使用浏览器的字体放大功能。em值不固定。是的,会继承父级的字体大小:em=pixelvalue/parentfont-sizeFOUC(FlashofUnstyledContent)使用@import导入CSS时,会导致某些页面在IE中出现奇怪的现象:pagewithoutstyle的内容显示瞬间闪烁。这种现象称为“文档样式的短期失效”,简称FOUC。等待样式表下载解析完成后,重新渲染页面,出现短暂的花屏。解决方案:使用link标签将样式表放在文档的头部CSS优化,提高性能多css合并,减少HTTP请求将css文件放在页面顶部去除空css规则避免使用CSS表达式选择器优化嵌套,尽量避免太深层次结构,充分利用css的继承属性,减少抽象提取公共样式的代码量。原理类似于图片轮播原理,隐藏部分之外,滚动时显示可能用到的CSS属性:overflow:hidden;变换:翻译(100%,100%);显示:无;响应式设计即$(window).resize(function(){screenRespond();});screenRespond();functionscreenRespond(){varscreenWidth=$(window).width();if(screenWidth<=1800){$("body").attr("class","w1800");}if(screenWidth<=1400){$("body").attr("class","w1400");}if(screenWidth>1800){$("body").attr("class","");}}a标签链接上四个伪类的执行顺序>visited>hover>activeChrome支持小于12px的文字.shrink{-webkit-转换:规模(0.8);-o-变换:缩放(1);显示:内联块;}TCP传输的三次握手和四次握手策略为了将数据准确地传递给目标,TCP协议采用了三次握手策略。数据包用TCP协议发送出去后,TCP不会忽略发送后的情况,一定会向对方确认是否发送成功。TCP标志用于握手过程:SYN和ACK发送方首先向对方发送一个带有SYN标志的数据包。接收端收到后返回一个带有SYN/ACK标志的数据包来表示确认信息。最后,发送方返回一个带有ACK标志的数据包,这意味着“握手”结束。如果在握手过程中的某个阶段出现莫名中断,TCP协议会以相同的顺序再次发送相同的数据包。断开一个TCP连接,需要“四次握手”:第一次挥手:主动关闭方发送一个FIN,用来关闭主动方向被动关闭方的数据传输,即主动关闭party告诉passivecloseparty:我不会再给你发数据了(当然如果fin包之前发的数据没收到,相应的ack确认报文,activeclosingparty还是会重发数据),但是在这一次,主动关闭方仍然可以接受数据。第二次挥手:被动关闭方收到FIN包后,向对方发送ACK,确认序号为收到的序号+1(同SYN,一个FIN占一个序号)。第三次挥手:被动关闭方发送一个FIN关闭被动关闭方向主动关闭方的数据传输,也就是告诉主动关闭方我的数据已经发送了,我不会再给你发送数据了.第四次挥手:主动关闭方收到FIN后,向被动关闭方发送ACK,确认序号为收到的序号+1,至此四次挥手完成。HTTP和HTTPSHTTP协议通常承载在TCP协议之上,在HTTP和TCP之间增加了一个安全协议层(SSL或TSL)。这时候就变成了我们常说的HTTPS。端口号是443HTTPS安全,因为网络请求需要中间经过很多服务器路由器转发。中间的节点可能会篡改信息,如果你使用HTTPS,密钥就只有你和端站了。https之所以比http安全,是因为它使用ssl/tls协议进行传输。包括证书、卸载、流量转发、负载均衡、页面适配、浏览器适配、refer投递等。保证了传输过程的安全GET和POST的区别,什么时候用POSTGET:一般用于信息获取,使用URL传递参数,对发送的信息也有数量限制,一般2000个字符POST:一般用于修改站点的服务器资源,发送的信息没有限制。GET方法需要使用Request.QueryString获取变量的值,POST方法通过Request.Form获取变量的值,也就是说Get通过地址栏传值,Post通过通过提交表单的值。但是,在以下情况下使用POST请求:无法使用缓存文件(更新服务器上的文件或数据库)向服务器发送大量数据(POST没有数据大小限制)发送用户时POST比GET更昂贵inputcontainingunknowncharacters稳定可靠的七层模型