邯郸网站开发公司,无人视频在线观看免费播放影院,广州网站建设亅新科送推广,迪哥哪个网站上做游戏直播转载自 前端面试常考系列六
一、为什么重置浏览器默认样式#xff0c;如何重置
每种浏览器都有一套默认的样式表#xff0c;即user agent stylesheet#xff0c;网页在没有指定的样式时#xff0c;按浏览器内置的样式表来渲染。这是合理的#xff0c;像word中也有一些预留…转载自 前端面试常考系列六
一、为什么重置浏览器默认样式如何重置
每种浏览器都有一套默认的样式表即user agent stylesheet网页在没有指定的样式时按浏览器内置的样式表来渲染。这是合理的像word中也有一些预留样式可以让我们的排版更美观整齐。由于不同浏览器甚至同一浏览器不同版本的默认样式是不同的所以为了解决出现的兼容问题我们需要重置浏览器默认样式。重置方法
a、最简单的办法不推荐使用*{margin: 0;padding: 0;}。
b、使用CSSReset可以将所有浏览器默认样式设置成一样。
c、normalize也许有些cssreset过于简单粗暴有点伤及无辜normalize是另一个选择。bootstrap已经引用该css来重置浏览器默认样式比普通的cssreset要精细一些保留浏览器有用的默认样式支持包括手机浏览器在内的超多浏览器同时对HTML5元素、排版、列表、嵌入的内容、表单和表格都进行了一般化。二、如何理解怪异模式
从IE6开始引入了Standards模式标准模式中浏览器尝试给符合标准的文档在规范上的正确处理达到在指定浏览器中的程度。
在IE6之前CSS还不够成熟所以IE5等之前的浏览器对CSS的支持很差IE6将对CSS提供更好的支持然而这时的问题就来了因为有很多页面是基于旧的布局方式写的而如果IE6 支持CSS则将令这些页面显示不正常如何在即保证不破坏现有页面又提供新的渲染机制呢
在写程序时我们也会经常遇到这样的问题如何保证原来的接口不变又提供更强大的功能尤其是新功能不兼容旧功能时。遇到这种问题时的一个常见做法是增加参数和分支即当某个参数为真时我们就使用新功能而如果这个参数 不为真时就使用旧功能这样就能不破坏原有的程序又提供新功能。IE6也是类似这样做的它将DTD文档类型定义当成了这个“参数”因为以前的页面大家都不会去写DTD所以IE6就假定如果写了DTD就意味着这个页面将采用对CSS支持更好的布局而如果没有则采用兼容之前的布局方式。这就是Quirks模式怪癖模式诡异模式怪异模式。三、怪异模式和标准模式之间有什么区别
总体会有布局、样式解析和脚本执行三个方面的区别。
盒模型在W3C标准中如果设置一个元素的宽度和高度指的是元素内容的宽度和高度而在Quirks模式下IE的宽度和高度还包含了padding和border。
设置行内元素的高宽在Standards模式下给span等行内元素设置wdith和height都不会生效而在quirks模式下则会生效。
设置百分比的高度在
standards模式下一个元素的高度是由其包含的内容来决定的如果父元素没有设置百分比的高度子元素设置一个百分比的高度是无效的。
用margin:0 auto设置水平居中使用margin:0 auto在standards模式下可以使元素水平居中但在quirks模式下却会失效。四、box-sizing属性如何使用abox-sizing:content-box
padding和border不被包含在定义的width和height之内。对象的实际宽度等于设置的width值和border、padding之和即 ( Element width width border padding但占有页面位置还要加上margin ) 此属性表现为标准模式下的盒模型。
box-sizing:border-box
padding和border被包含在定义的width和height之内。对象的实际宽度就等于设置的width值即使定义有border和padding也不会改变对象的实际宽度即 ( Element width width ) 此属性表现为怪异模式下的盒模型。五、外边距折叠式如何触发的如何解决触发条件
两个或多个毗邻的普通流中的块元素垂直方向上的 margin 会折叠。
1.两个或多个
说明其数量必须是大于一个又说明折叠是元素与元素间相互的行为不存在 A 和 B 折叠B 没有和 A 折叠的现象。
2.毗邻
是指没有被非空内容、padding、border 或 clear 分隔开说明其位置关系。
注意一点在没有被分隔开的情况下一个元素的margin-top 会和它普通流中的第一个子元素(非浮动元素等)的margin-top相邻只有在一个元素的height是auto的情况下它的margin-bottom 才会和它普通流中的最后一个子元素(非浮动元素等)的margin-bottom相邻。
3.垂直方向
指的是具体的方位只有垂直方向的margin才会折叠也就是说水平方向的margin不会发生折叠的现象。解决方法
1.浮动元素、inline-block 元素、绝对定位元素的 margin 不会和垂直方向上其他元素的 margin 折叠注意这里指的是上下相邻的元素。 2.创建了块级格式化上下文的元素不和它的子元素发生margin 折叠注意这里指的是创建了BFC的元素和它的子元素不会发生折叠。六、HTML中内联元素和块级元素有什么区别
对于html各种标签/元素可以从块的层面做一个分类要么是block(块元素)要么是inline(内联元素)。block元素的特点总是另起一行开始 高度行高以及顶、底边距都可控制 宽度缺省是它所在容器的100%除非设定一个宽度。inline元素的特点和其它元素都在一行上 高度行高以及顶、底边距不可改变 宽度就是它所容纳的文字或图片的宽度不可改变。七、css如何隐藏元素方法一
display
使用none值会让元素从文档中直接删除”直接消失不见了”
用法display:none
优点简单暴力不需要多余代码。不占空间对布局没影响。
缺点元素从文档删除不利seo方法二text-indent
一般是首行缩2个中文字的用法是text-indent:2em。但当给他一个足够大的负值大到一般我们浏览器无法显示。
用法text-indent:-999em
优点利于搜索引擎。
缺点它的作用其实就是把文字提到段落前面不让我们看见不影响宽度但是会影响布局。方法三
Position
假如说一个元素的距离我们的视窗电脑显示屏幕足够大大到我们浏览器也无法显示出来那么它也是“消失”的。但是这种做法一般适用于比较写死的东西。
用法position:absolute;top:-999em或者left:-999em或position:absolute; visibility:hidden;
优点信手拈来随意摆放。
缺点用法太死不能随意修改比较死板。方法四Visibility
只是“看不见”而已所以元素依然会影响到布局
用法visibility:hidden
优点利于SEO优化
缺点该属性会继承假如祖先用了visibility:hidden那么子元素也是直接显示不见想要子元素显示让用户看见还要必须再多写visibilityvisible。
八、如何理解BFC与IF
BFCBlock Formatting Context即“块级格式化上下文” IFCInline Formatting Context即行内格式化上下文。常规流也称标准流、普通流是一个文档在被显示时最常见的布局形态。
BFC是W3C CSS 2.1 规范中的一个概念它决定了元素如何对其内容进行定位以及与其他元素的关系和相互作用。当涉及到可视化布局的时候Block Formatting Context提供了一个环境HTML元素在这个环境中按照一定规则进行布局。一个环境中的元素不会影响到其它环境中的布局。比如浮动元素会形成BFC浮动元素内部子元素的主要受该浮动元素影响两个浮动元素之间是互不影响的。也可以说BFC就是一个作用范围。
在普通流中的Box(框)属于一种formatting context(格式化上下文)类型可以是block或者是inline但不能同时属于这两者。并且Block boxes(块框)在block formatting context(块格式化上下文) 里格式化Inline boxes(块内框) 则在Inline Formatting Context(行内格式化上下文) 里格式化。九、说说你对页面中使用定位(position)的理解
使用css布局position非常重要语法如下 positionstatic | relative | absolute | fixed | center | page | sticky默认值staticcenter、page、sticky是CSS3中新增加的值。static
可以认为静态的默认元素都是静态的定位对象遵循常规流。此时4个定位偏移属性不会被应用也就是使用leftrightbottomtop将不会生效。
relative
相对定位对象遵循常规流并且参照自身在常规流中的位置通过toprightbottomleft这4个定位偏移属性进行偏移时不会影响常规流中的任何元素。absolute
绝对定位对象脱离常规流此时偏移属性参照的是离自身最近的定位祖先元素如果没有定位的祖先元素则一直回溯到body元素。盒子的偏移位置不影响常规流中的任何元素其margin不与其他任何margin折叠。
元素定位参考的是离自身最近的定位祖先元素要满足两个条件第一个是自己的祖先元素可以是父元素也可以是父元素的父元素一直找如果没有则选择body为对照对象。第二个条件是要求祖先元素必须定位通俗说就是position的属性值为非static都行。fixed
固定定位与absolute一致但偏移定位是以窗口为参考。当出现滚动条时对象不会随着滚动。center
与absolute一致但偏移定位是以定位祖先元素的中心点为参考。盒子在其包含容器垂直水平居中。CSS3page
与absolute一致。元素在分页媒体或者区域块内元素的包含块始终是初始包含块否则取决于每个absolute模式。CSS3sticky
对象在常态时遵循常规流。它就像是relative和fixed的合体当在屏幕中时按常规流排版当卷动到屏幕外时则表现如fixed。该属性的表现是现实中你见到的吸附效果。CSS3。
十、介绍一下页面布局方式双飞翼布局
经典三列布局也叫做圣杯布局【Holy Grail of Layouts】是Kevin Cornell在2006年提出的一个布局模型概念在国内最早是由淘宝UED的工程师传播开来在中国也有叫法是双飞翼布局。多栏布局
栏栅格系统就是利用浮动实现的多栏布局在bootstrap中用的非常多。
多列布局栅格系统并没有真正实现分栏效果如word中的分栏CSS3为了满足这个要求增加了多列布局模块。弹性布局
CSS3引入了一种新的布局模式——Flexbox布局即伸缩布局盒模型Flexible Box用来提供一个更加有效的方式制定、调整和分布一个容器里项目布局即使它们的大小是未知或者动态的这里简称为Flex。
Flexbox布局常用于设计比较复杂的页面可以轻松的实现屏幕和浏览器窗口大小发生变化时保持元素的相对位置和大小不变同时减少了依赖于浮动布局实现元素位置的定义以及重置元素的大小。瀑布流布局
瀑布流布局是流式布局的一种。是当下比较流行的一种网站页面布局视觉表现为参差不齐的多栏布局随着页面滚动条向下滚动这种布局还会不断加载数据块并附加至当前尾部。最早采用此布局的网站是Pinterest逐渐在国内流行开来。流式布局
固定布局和流式布局在网页设计中最常用的两种布局方式。固定布局能呈现网页的原始设计效果流式布局则不受窗口宽度影响流式布局使用百分比宽度来限定布局元素这样可以根据客户端分辨率的大小来进行合理的显示。响应式布局
响应式布局是Ethan Marcotte在2010年5月份提出的一个概念简而言之就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。这个概念是为解决移动互联网浏览而诞生的。
十一、双飞翼布局有什么要求1、三列布局中间宽度自适应两边定宽 2、中间栏要在浏览器中优先展示渲染 3、允许任意列的高度最高 4、要求只用一个额外的DIV标签 5、要求用最简单的CSS、最少的HACK语句。十二、多个元素重叠问题如何解决
使用z-index属性可以设置元素的层叠顺序。
z-index属性的语法z-index: auto | integer
默认值auto
适用于定位元素。即定义了position为非static的元素取值。
auto元素在当前层叠上下文中的层叠级别是0。元素不会创建新的局部层叠上下文除非它是根元素。
整数用整数值来定义堆叠级别。可以为负值。
说明检索或设置对象的层叠顺序。 z-index用于确定元素在当前层叠上下文中的层叠级别并确定该元素是否创建新的局部层叠上下文。当多个元素层叠在一起时数字大者将显示在上面。一、为什么重置浏览器默认样式如何重置每种浏览器都有一套默认的样式表即user agent stylesheet网页在没有指定的样式时按浏览器内置的样式表来渲染。这是合理的像word中也有一些预留样式可以让我们的排版更美观整齐。由于不同浏览器甚至同一浏览器不同版本的默认样式是不同的所以为了解决出现的兼容问题我们需要重置浏览器默认样式。重置方法a、最简单的办法不推荐使用*{margin: 0;padding: 0;}。b、使用CSSReset可以将所有浏览器默认样式设置成一样。c、normalize也许有些cssreset过于简单粗暴有点伤及无辜normalize是另一个选择。bootstrap已经引用该css来重置浏览器默认样式比普通的cssreset要精细一些保留浏览器有用的默认样式支持包括手机浏览器在内的超多浏览器同时对HTML5元素、排版、列表、嵌入的内容、表单和表格都进行了一般化。二、如何理解怪异模式从IE6开始引入了Standards模式标准模式中浏览器尝试给符合标准的文档在规范上的正确处理达到在指定浏览器中的程度。在IE6之前CSS还不够成熟所以IE5等之前的浏览器对CSS的支持很差IE6将对CSS提供更好的支持然而这时的问题就来了因为有很多页面是基于旧的布局方式写的而如果IE6 支持CSS则将令这些页面显示不正常如何在即保证不破坏现有页面又提供新的渲染机制呢在写程序时我们也会经常遇到这样的问题如何保证原来的接口不变又提供更强大的功能尤其是新功能不兼容旧功能时。遇到这种问题时的一个常见做法是增加参数和分支即当某个参数为真时我们就使用新功能而如果这个参数 不为真时就使用旧功能这样就能不破坏原有的程序又提供新功能。IE6也是类似这样做的它将DTD文档类型定义当成了这个“参数”因为以前的页面大家都不会去写DTD所以IE6就假定如果写了DTD就意味着这个页面将采用对CSS支持更好的布局而如果没有则采用兼容之前的布局方式。这就是Quirks模式怪癖模式诡异模式怪异模式。三、怪异模式和标准模式之间有什么区别总体会有布局、样式解析和脚本执行三个方面的区别。盒模型在W3C标准中如果设置一个元素的宽度和高度指的是元素内容的宽度和高度而在Quirks模式下IE的宽度和高度还包含了padding和border。设置行内元素的高宽在Standards模式下给span等行内元素设置wdith和height都不会生效而在quirks模式下则会生效。设置百分比的高度在standards模式下一个元素的高度是由其包含的内容来决定的如果父元素没有设置百分比的高度子元素设置一个百分比的高度是无效的。用margin:0 auto设置水平居中使用margin:0 auto在standards模式下可以使元素水平居中但在quirks模式下却会失效。四、box-sizing属性如何使用abox-sizing:content-boxpadding和border不被包含在定义的width和height之内。对象的实际宽度等于设置的width值和border、padding之和即 ( Element width width border padding但占有页面位置还要加上margin ) 此属性表现为标准模式下的盒模型。box-sizing:border-boxpadding和border被包含在定义的width和height之内。对象的实际宽度就等于设置的width值即使定义有border和padding也不会改变对象的实际宽度即 ( Element width width ) 此属性表现为怪异模式下的盒模型。五、外边距折叠式如何触发的如何解决触发条件两个或多个毗邻的普通流中的块元素垂直方向上的 margin 会折叠。1.两个或多个说明其数量必须是大于一个又说明折叠是元素与元素间相互的行为不存在 A 和 B 折叠B 没有和 A 折叠的现象。2.毗邻是指没有被非空内容、padding、border 或 clear 分隔开说明其位置关系。注意一点在没有被分隔开的情况下一个元素的margin-top 会和它普通流中的第一个子元素(非浮动元素等)的margin-top相邻只有在一个元素的height是auto的情况下它的margin-bottom 才会和它普通流中的最后一个子元素(非浮动元素等)的margin-bottom相邻。3.垂直方向指的是具体的方位只有垂直方向的margin才会折叠也就是说水平方向的margin不会发生折叠的现象。解决方法1.浮动元素、inline-block 元素、绝对定位元素的 margin 不会和垂直方向上其他元素的 margin 折叠注意这里指的是上下相邻的元素。 2.创建了块级格式化上下文的元素不和它的子元素发生margin 折叠注意这里指的是创建了BFC的元素和它的子元素不会发生折叠。六、HTML中内联元素和块级元素有什么区别对于html各种标签/元素可以从块的层面做一个分类要么是block(块元素)要么是inline(内联元素)。block元素的特点 总是另起一行开始 高度行高以及顶、底边距都可控制 宽度缺省是它所在容器的100%除非设定一个宽度。inline元素的特点 和其它元素都在一行上 高度行高以及顶、底边距不可改变 宽度就是它所容纳的文字或图片的宽度不可改变。七、css如何隐藏元素方法一display使用none值会让元素从文档中直接删除”直接消失不见了”用法display:none优点简单暴力不需要多余代码。不占空间对布局没影响。缺点元素从文档删除不利seo方法二 text-indent一般是首行缩2个中文字的用法是text-indent:2em。但当给他一个足够大的负值大到一般我们浏览器无法显示。用法text-indent:-999em优点利于搜索引擎。缺点它的作用其实就是把文字提到段落前面不让我们看见不影响宽度但是会影响布局。方法三Position假如说一个元素的距离我们的视窗电脑显示屏幕足够大大到我们浏览器也无法显示出来那么它也是“消失”的。但是这种做法一般适用于比较写死的东西。用法position:absolute;top:-999em或者left:-999em或position:absolute; visibility:hidden;优点信手拈来随意摆放。缺点用法太死不能随意修改比较死板。方法四 Visibility只是“看不见”而已所以元素依然会影响到布局用法visibility:hidden优点利于SEO优化缺点该属性会继承假如祖先用了visibility:hidden那么子元素也是直接显示不见想要子元素显示让用户看见还要必须再多写visibilityvisible。八、如何理解BFC与IFBFCBlock Formatting Context即“块级格式化上下文” IFCInline Formatting Context即行内格式化上下文。常规流也称标准流、普通流是一个文档在被显示时最常见的布局形态。BFC是W3C CSS 2.1 规范中的一个概念它决定了元素如何对其内容进行定位以及与其他元素的关系和相互作用。当涉及到可视化布局的时候Block Formatting Context提供了一个环境HTML元素在这个环境中按照一定规则进行布局。一个环境中的元素不会影响到其它环境中的布局。比如浮动元素会形成BFC浮动元素内部子元素的主要受该浮动元素影响两个浮动元素之间是互不影响的。也可以说BFC就是一个作用范围。在普通流中的Box(框)属于一种formatting context(格式化上下文)类型可以是block或者是inline但不能同时属于这两者。并且Block boxes(块框)在block formatting context(块格式化上下文) 里格式化Inline boxes(块内框) 则在Inline Formatting Context(行内格式化上下文) 里格式化。九、说说你对页面中使用定位(position)的理解使用css布局position非常重要语法如下 positionstatic | relative | absolute | fixed | center | page | sticky默认值staticcenter、page、sticky是CSS3中新增加的值。static 可以认为静态的默认元素都是静态的定位对象遵循常规流。此时4个定位偏移属性不会被应用也就是使用leftrightbottomtop将不会生效。relative相对定位对象遵循常规流并且参照自身在常规流中的位置通过toprightbottomleft这4个定位偏移属性进行偏移时不会影响常规流中的任何元素。absolute 绝对定位对象脱离常规流此时偏移属性参照的是离自身最近的定位祖先元素如果没有定位的祖先元素则一直回溯到body元素。盒子的偏移位置不影响常规流中的任何元素其margin不与其他任何margin折叠。元素定位参考的是离自身最近的定位祖先元素要满足两个条件第一个是自己的祖先元素可以是父元素也可以是父元素的父元素一直找如果没有则选择body为对照对象。第二个条件是要求祖先元素必须定位通俗说就是position的属性值为非static都行。fixed固定定位与absolute一致但偏移定位是以窗口为参考。当出现滚动条时对象不会随着滚动。center与absolute一致但偏移定位是以定位祖先元素的中心点为参考。盒子在其包含容器垂直水平居中。CSS3page 与absolute一致。元素在分页媒体或者区域块内元素的包含块始终是初始包含块否则取决于每个absolute模式。CSS3sticky对象在常态时遵循常规流。它就像是relative和fixed的合体当在屏幕中时按常规流排版当卷动到屏幕外时则表现如fixed。该属性的表现是现实中你见到的吸附效果。CSS3。十、介绍一下页面布局方式双飞翼布局经典三列布局也叫做圣杯布局【Holy Grail of Layouts】是Kevin Cornell在2006年提出的一个布局模型概念在国内最早是由淘宝UED的工程师传播开来在中国也有叫法是双飞翼布局。多栏布局栏栅格系统就是利用浮动实现的多栏布局在bootstrap中用的非常多。多列布局栅格系统并没有真正实现分栏效果如word中的分栏CSS3为了满足这个要求增加了多列布局模块。弹性布局CSS3引入了一种新的布局模式——Flexbox布局即伸缩布局盒模型Flexible Box用来提供一个更加有效的方式制定、调整和分布一个容器里项目布局即使它们的大小是未知或者动态的这里简称为Flex。Flexbox布局常用于设计比较复杂的页面可以轻松的实现屏幕和浏览器窗口大小发生变化时保持元素的相对位置和大小不变同时减少了依赖于浮动布局实现元素位置的定义以及重置元素的大小。瀑布流布局瀑布流布局是流式布局的一种。是当下比较流行的一种网站页面布局视觉表现为参差不齐的多栏布局随着页面滚动条向下滚动这种布局还会不断加载数据块并附加至当前尾部。最早采用此布局的网站是Pinterest逐渐在国内流行开来。流式布局固定布局和流式布局在网页设计中最常用的两种布局方式。固定布局能呈现网页的原始设计效果流式布局则不受窗口宽度影响流式布局使用百分比宽度来限定布局元素这样可以根据客户端分辨率的大小来进行合理的显示。响应式布局响应式布局是Ethan Marcotte在2010年5月份提出的一个概念简而言之就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。这个概念是为解决移动互联网浏览而诞生的。十一、双飞翼布局有什么要求 1、三列布局中间宽度自适应两边定宽 2、中间栏要在浏览器中优先展示渲染 3、允许任意列的高度最高 4、要求只用一个额外的DIV标签 5、要求用最简单的CSS、最少的HACK语句。十二、多个元素重叠问题如何解决使用z-index属性可以设置元素的层叠顺序。z-index属性的语法z-index: auto | integer默认值auto适用于定位元素。即定义了position为非static的元素取值。 auto元素在当前层叠上下文中的层叠级别是0。元素不会创建新的局部层叠上下文除非它是根元素。 整数用整数值来定义堆叠级别。可以为负值。 说明检索或设置对象的层叠顺序。 z-index用于确定元素在当前层叠上下文中的层叠级别并确定该元素是否创建新的局部层叠上下文。当多个元素层叠在一起时数字大者将显示在上面。