*简述的作用?
1. 帮助浏览器正确地显示网页。
2. 声明叫做文件类型定义(DTD-Document Type Definition),声明的作用是为了告诉浏览器该文件的 类型。让浏览器解析器知道应该用哪个规范来解析文档。
*常见的浏览器及其内核?
四大内核:
- Trident,主要有IE浏览器以及其它多核浏览器
- Gecko:主要有Firefox(火狐浏览器)
- WebKit:主要有Chrome(谷歌浏览器)、Safari(苹果默认的浏览器),以及其它多核浏览器
- 2013年Chrome浏览器开始使用webkit的分支内核Blink。
- Presto,之前主要应用于Opera,Opera现已改用Google Chrome的Blink内核。
五大主流浏览器采用的都是单内核,而随着浏览器的发展现在也出现了双内核。像360浏览器、QQ浏览器都是采用双内核。
*常见的块级标签和行内标签分别有哪些?
块级元素:
内联元素: ,, ,, ,默认样式都倾斜,没有语义,有强调的语义,定义强调的内容 ,默认样式都加粗,没有语义,有着重强调的语义,定义语气更强的强调的内容 用合适的标签和属性组合文档结构 如 标题 用h标签 段落 p标签 给重要的图片加alt属性 结构清晰,增强代码可读性, css不能正常加载时,仍然能够保证基本的文档结构 有利于后期维护, 有利于团队合作 有利于SEO(搜索引擎优化) 有利于用户体验 跨行合并 rowspan 跨列合并 colspan 1)划分表格结构,增强表格语义 2)让表格(table)在分步加载 在浏览器解析HTML时,table是作为一个整体解释的,使用thead、tbody、tfoot可以一部分一部分地显示下载一块显示一块。 3)当长的表格被打印时,表格的表头和页脚可被打印在包含表格数据的每张页面上。 单行文本输入框(文本域) 密码框 单选按钮。 复选框 普通按钮 提交按钮 定义重置按钮 上传域(文件域) 定义图像形式的提交按钮 标签定义多行输入字段(文本域)
name="" 表单名称 value="" 初始值 Checked 选中状态(单选,复选) Disabled禁用状态 Readonly只读状态 Size select预显示选项的个数 maxlength 允许输入的最长字符数 name="" 表单名称 action="" 表单动作(提交地址) method="" HTTP方法(数据提交方式) target="" 目标地址打开方式 1)位置 开始标签的内部 2)格式 style="css样式" 3) 适用于:单个元素拥有特殊样式时 1)位置 通常头部head标签的内部 2)格式
css样式
3) 适用于:单个HTML文档拥有特殊样式时 1)位置 通常头部head标签的内部 2)格式 外部文件.css
href="地址" rel="联系" 链接文件与当前文档的关系 stylesheet样式表 3) 适用于:多个页面有相同样式时 (1).id选择器。 (2).伪类选择器、属性选择器与类选择器。 (3).*通配符选择器。 (4).从父辈元素继承而来的样式 除此之外 内联样式优先能高于id选择器 如果选择器的优先级相同,CSS代码中,靠后的CSS规则优先级高于前面的规则 用0,0,0,0表示,等级从左到右降序排列: (1).id选择器权重等级:0,1,0,0。 (2).类、属性或伪类选择器权重等级:0,0,1,0。 (3).元素和伪元素选择器权重等级:0,0,0,1。 (4).*通配符选择器权重等级:0,0,0,0。 首先比较最高等级,如果打个平手,那么再比较次一等级,以此类推。 如果选择器等级权重相同,那么后来者居上,也就是后面声明的属性会覆盖前面的。 同级选择器之间比较的是数量,不同级之间与数量无关,十个师长也顶不上一个军长权力大 !important与内联CSS权重最高不受上述规则的限制。 字体,文本相关 font-size,font-style,font-weight,font-family,color, text-align、text-indent、line-height Word-spacing,letter-spacing 盒模型:所有HTML元素都可以看作一个盒子,每个盒子有外边距(margin)、边框(border)、内边距(padding)、内容(content)等要素组成。 (1) 相邻元素的垂直方向上相遇的margin值发生叠加 (2) 子元素的margin值叠加给父元素 1. 给父级设置边框或内边距 2.触发bfc(块级格式上下文),改变父级的渲染规则 3.给父元素加以下属性,改变父级的渲染规则有以下四种方法: (1)position:absolute/fixed (2)display:inline-block (3)float:left/right (4)overflow:hidden/scroll/auto 这四种方法都能触发bfc,但是使用的时候都会带来不同的麻烦,具体使用中还需根据具体情况选择没有影响的来解决margin塌陷 l 块级元素默认从上到下垂直排列(也就是每一个块级标签始终会从一个新的行开始)。 l 默认宽度100% l 支持所有css属性(宽高,内外边距,行高等) l 通常允许包含其他块元素或内联元素 l 默认从左到右在一行排列,当一行放不下时会发生折行 l 设置宽、高属性无效, l 默认宽度就是它本身内容的宽度。 l 水平方向的padding和margin可以设置,垂直方向的无效。 l 行内元素只能容纳文本或则其他行内元素 元素浮动以后,脱离正常文档流,导致父元素无法被撑开(高度塌陷),且会影响后续正常布局 常用清浮动的方法: 1)给浮动标签的父标签固定高度 ( 不够灵活 ) Formatting Context:指页面中的一个渲染区域,并且拥有一套渲染规则,他决定了其子标签如何定位,以及与其他标签的相互关系和作用。 BFC:块级格式化上下文,它是指一个独立的块级渲染区域,只有Block-level BOX参与,该区域拥有一套渲染规则来约束块级盒子的布局,且与区域外部无关。 CSS2.1中规定满足下列CSS声明之一的标签便会生成BFC。 l 根标签 l float的值不为none l overflow的值不为visible l display的值为inline-block l position的值为absolute或fixed l 内部的标签会在垂直方向上一个接一个的放置 l 垂直方向上的距离由margin决定,属于同一个BFC的两个相邻标签的margin会发生重叠 l 每个标签的左外边距与包含块的左边界相接触(从左向右),即使浮动标签也是如此。 l BFC的区域不会与float的标签区域重叠 l 计算BFC的高度时,浮动子标签也参与计算 l BFC就是页面上的一个隔离的独立容器,容器里面的子标签不会影响到外面标签,反之亦然 1)外边距折叠(塌陷) 2)自适应两栏或三栏布局 3)防止字体环绕 4)清除浮动 1.给图片加vertical-align:middle/top/bottom;【不改变图片本身的属性:推荐】 2.给图片加display:block; 【会改变图片本身的属性 1.使图片独占一行 2.通过margin:0 auto实现水平居中】 3.给图片的父元素加 font-size:0; 【元素有其它文字布局时,会受影响,需要再次定义字号】 1.ie7以下块转内联块不在一行显示 解决:.box{*display:inline;*zoom:1;} 2.ie7以下子元素相对定位,父元素overflow:hidden失效 解决:给父元素添加position:relative; 3.ie6 双边距问题 浮动元素,拥有同向margin值时,第一个元素的边距两倍显示 float:right,margin-right float:left,margin-left 解决:_display:inline 针对ie6加 (下划线) 4.ie6最小高度问题 当元素定义的高度小于19px时,在ie6里会显示19px font-size:0; 5.ie6,7,li的子元素浮动时,会产生间隙 解决:给【li】加 vertical-align:middle/top/bottom; 实现要点: 改变加载顺序 ——》 结构先后顺序 两侧宽度固定,中间列宽度自适应 允许任意列高度自适应(不一定等高) 利用border属性定义两个小三角,通过布局技巧(定位,margin负值等)将两个小三角叠加起来,位置根据需要调整。 css精灵,雪碧图英文叫法 css sprites,通常被解释为“CSS 图像拼合”,其实就是把网页中一些背景图片整合到一张图片文件中,再利用 CSS “background-image”, “background- repeat”,“background-position”的组合进行背景定位,background-position 用数字能精确的定位出背景图片的位置。 适用于: 一般小图标,不适合大背景大背景 优点: (1)减少网页的 http 请求,从而大大的提高页面的性能 (2)减少图片命名上的困扰 (3)更换风格方便 缺点: (1)必须要限定容器大小符合背景图元素位置,需要计算 PSD:Photoshop源文件格式,可以保留所有有图层、色版、通道、蒙版、路径、未栅格化文字以及图层样式等。是在UI设计和前端页面开发中使用到的图片格式。 以下图片格式则是实际在网页当中用到的图片格式。 格式 优点 缺点 使用场景 jpg 色彩丰富,文件小 有损压缩,反复保存图片质量下降明显 色彩丰富的图片/渐变图像 gif 文件小,支持动画、透明,无兼容性问题 只支持256种颜色 色彩简单的logo/icon/动图 png 无损压缩,支持透明,简单图片尺寸小 不支持动画,色彩丰富的图片尺寸大 logo/icon/透明图 webp 文件小,支持有损和无损压缩,支持动画、透明 浏览器兼容性不好 支持webp格式的app和webview 每个浏览器都有自己的默认样式,这给开发者带来了一定的麻烦 开发者利用css强制每个浏览器将其所有样式重置,从而尽可能避免跨浏览器的差异 display:none; / block 隐藏、显示 不再占位 visibility:hidden/ visible 隐藏、显示 仍然占位 1.display:none; 2.visibility:hidden 3.Opacity:0; 4.父元素Overflow:hidden; 5.定位 l 合理嵌套HTML标签,ul和li是固定嵌套,ul直接子元素必须是li;dl和dt,dd是固定嵌套,dl的直接子元素必须是dl和dd; l p标签不允许嵌套p标签;a标签不允许嵌套 l a标签和其他交互性元素比如button l 尽可能的控制元素嵌套层级,不合理的嵌套会影响页面性能 1)降低图片的大小,利用图片压缩工具,可以在图片上线前使用压缩工具进行压缩,获得更高的压缩比 2)选择最合适的图片格式,如照片实景图用jpg,单色小图标用png,gif 对于支持webp格式的浏览器使用webp格式等。 3)样式代替图片,如小三角,小箭头,圆角边框等。 4)减少HTTP的网络资源请求 Css精灵的使用,将同类型的图标或按钮等背景图合到一张大图中,减少页面请求 其他: 1)字体图库代替图标 2)SVG技术替换图片 3)使用canvas可以使用脚本javascript来绘制各种图表、动画等 4)图片延迟加载(懒加载)- 篇幅较长的页面会有很多的图片素材,这样全部加载就会变的很慢,懒加载处理,只加载窗口内的图片,视口外的图片会在窗口滚动到它的位置时再进行加载。 新特性: 新增了语义化元素,如header,footer,nav,section,article,aside 新增了表单元素和相关属性, 3.新增了全局属性 4.新增了API canvas audio,video多媒体 离线存储,本地存储 拖拽上传 地理位置 以下的 HTML 4.01 标签在HTML5中已经被删除: ● ● ● ● ● ● ● ● ● ● ●
document.createElement("header"); document.createElement("nav"); document.createElement("footer");
/* 创建元素默认内联形式 */ header,nav,footer{display: block;} body *{width:600px;height:50px;border:1px solid #000;}
如: E[attr^="value"]选择拥有attr属性,且属性值【以value开始】的E元素 E[attr*="value"]选择拥有attr属性,且属性值【包含value】的E元素 E[attr$="value"]选择拥有attr属性,且属性值【以value结束】的E元素 如: E:first-of-type{} 选择父元素中【类型为E】的【第一个】子元素 E:last-of-type{} 选择父元素中【类型为E】的【最后一个】子元素 E:nth-of-type(n){} 选择父元素中【类型为E】的【正数 第n个】子元素 E:nth-last-of-type(n){} 选择父元素中【类型为E】的【倒数 第n个】子元素 E:first-of-type{} 选择父元素中【类型为E】的【第一个】子元素 E:last-of-type{} 选择父元素中【类型为E】的【最后一个】子元素 E:nth-of-type(n){} 选择父元素中【类型为E】的【正数 第n个】子元素 E:nth-last-of-type(n){} 选择父元素中【类型为E】的【倒数 第n个】子元素 E:checked{} 元素处理【选中状态】时 E:disabled{} 元素处理【禁用状态】时 E:enabled{} 元素处理【可用状态】时 新增的伪元素选择器: E::after{} 在元素内部的最后生成内容 E::before{} 在元素内部的开始位置生成内容 Box-shaodw盒子阴影 Border-radius圆角边框 多背景:逗号隔开 background-clip: 背景绘制区域 background-origin: 背景图像定位的参考原点(背景起始位置) background-size: 背景图像的大小 背景渐变: background-image:linear-gradient(color1,color2,....) background-image:radial-gradient(color1,color2,....) resize:重置元素大小 box-sizing:定义盒子组成模式 多列布局,弹性盒,2d,3d变换,媒体查询 弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成 弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。 弹性容器内包含了一个或多个弹性子元素。 容器默认存在两根轴线,一根主轴(main axis)一根交叉轴(cross axis)。 项目默认沿主轴排列 使用弹性盒相关属性可以实现对一个容器中的子元素进行排列、对齐和分配空白空间。 适用场景: 当元素需要具备一定特性适应容器,或页面需要适应不同的屏幕大小以及设备类型时,如弹性网格布局,移动端适配,响应式适配处理等。 1.flex-direction 决定项目在主轴的排列方向。 2.flex-wrap 决定如果一条轴线排不下了,该如何换行。 3.flex-row 是flex-direction和wrap的简写形式,默认row nowrap。 4.justify-content 决定项目在主轴方向上如何对齐。 5.align-items 决定项目在交叉轴上如何对齐。 6.align-content 定义多根轴线如何对齐。 1.order 决定项目的排列顺序,数值越小,排列越靠前。 2.flex-grow 决定项目的放大比例,默认值是0,也就是存在剩余空间,不放大。 3.flex-shrink 是也就是决定项目的缩小比例,默认是1,表示剩余空间不足时,等比缩小,如果需要不变,可以设置为0。 4.flex-basis 定义了在分配多余项目之前,项目占据的主轴空间。 5.flex 是以上三个的简写,默认0 1 auto,也就是不放大,不缩小,占据项目本来大小的主轴空间 6.align-self属性 默认auto,继承flex容器,也就是父元素的align-items属性,项目和algn-items一样,只是决定单个item对交叉轴的对齐方式。 Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如嵌套,变量、混合(mixin)、运算,函数等功能, 好处:Less中的嵌套,让 CSS书写结构清晰,编码更快,更省时;同时变量,混合等特性的使用也使代码更易维护、方便扩展。 1.rem布局 2.vw布局 3.vw+rem 固定宽度 超出部分留白 沿用pc端布局方式 流式布局 如固定高度,宽度自适应(利用百分比,定位,浮动,弹性盒等) 响应式做法 利用媒体查询为不同分辨率的设备加载不同的样式。 设置viewport 使视口宽等于设备宽 以设计稿宽度为基准值,并预设此时1rem = 100px。通过动态计算,计算并设置其他设备尺寸下html的font-size值。 从设计稿获取px值并换算为rem进行布局。 html字号的的动态变化使得不同屏幕尺寸下1rem的值发生变化,使得页面元素一改俱改从而实现适配。 ---
< li>
*b和strong(i和em)标签的区别?
*谈谈对语义化的理解?
1) 什么是HTML语义化?
2) 语义化的好处?
*如何合并表格单元格?
<table>
<tr>
<td rowspan=”2”> 1-1 td>
<td>1-2td>
<tr>
<tr>
<td>2-2td>
tr>
<table>
<tr>
<td colspan=”2”> 1-1 td>
<tr>
<tr>
<td>2-1td>
<td>2-2td>
tr>
*thead、tbody、tfoot有什么作用?
*常见表单元素有哪些?
*常见表单元素相关属性有哪些?
表单元素相关属性
form 标签属性
*引入css的方式有几种?
1.行间样式
2.内部样式
3.外部样式
*单行文本水平垂直居中如何实现?
.box{
width:100px;
height:100px;
line-height:100px;
text-align:center;
}
*选择器优先级如何计算?
基础选择器优先级由高到低顺序如下:
选择器优先级计算规则:根据选择器的特殊性,大致可以分为四个等级:
*哪些CSS属性是可继承的?
*简述css盒模型?
*如何使用border实现小三角?
例:如果实现一个向下,红色,宽40,高40的小三角代码如下:
HTML
<div class="box">div>
css
.box{
width:0;
height:0;
border-width:40px 20px 0;
border-style:solid;
border-color:red transparent;
}
*margin外边距常见问题及处理方法?
1,常见问题:
2. margin塌陷解决方法
*块级标签和行内标签的区别?
块元素
行内(内联)元素:
*浮动产生的问题?清除浮动的方案?
问题:
2)在浮动标签的最后加一个空 div( 块标签 ),标签本身不浮动,且添加样式clear:both;(代码冗余)
3)给父标签加 overflow 属性,overflow 为 visible 以外的其它值时可以帮助实现
4)推荐方法:给浮动标签的父标签添加 .clearfix ( 不会在结构上产生冗余代码,可多次重复使用 ).clearfix{
*zoom:1;
} /* 处理 ie7 以下兼容 */
.clearfix:after{
content:””;
clear:both;
display:block;
}
*如何让盒子水平垂直居中?
1.普通盒子的四周加同一个padding值
CSS:
.wrap{width:200px;height:200px;padding:20px;}
.inner{width:200px;height:200px;}
HTML:
<div class="wrap">
<div class="inner">居中的盒子div>
div>
2.内联块盒子
CSS:
.wrap{height:200px;
height:200px;
line-height:200px;
text-align:center;
font-size:0;
}
.inner{
width:100px;
height:100px;
display:inline-block;
}
HTML:
<div class="wrap">
<div class="inner">居中的盒子div>
div>
3.定位的盒子
CSS:
.wrap{
position:relative;
height:200px;
width:200px;
}
.inner{
position:absolute;
left:50%;
margin-left:-50px;
top:50%;
margin-top:-50px;
width:100px;
height:100px;
}
HTML:
<div class="wrap">
<div class="inner">居中的盒子div>
div>
4.定位的盒子-方法2
CSS:
.wrap{
position:relative;
height:200px;
width:200px;
}
.inner{
position:absolute;
left:0;
right:0;
top:0;
bottom:0;
margin:auto;
width:100px;
height:100px;
}
HTML:
<div class="wrap">
<div class="inner">居中的盒子div>
div>
*简述BFC规则,及解决的问题?
什么是BFC?(Block Formatting Context)
怎样生成BFC
BFC的特性
BFC解决的问题
*图片间隙问题,如何解决?
普通文档流内的图片默认与基线对齐,产生间隙问题。
*说说常见浏览器兼容问题?
*等高布局实现?
实现要点:
1.多列( 有背景)
2.等高变化(一列变高其他列自动等高变化)
原理1:
利用padding值与margin值相互抵销的原理。
三列盒子浮动定义不同的背景,每一列div分别padding-bottom:500px撑开背景,margin-bottom:-500px抵销占位。
CSS:
.wrap{border:5px solid #000;width:900px;margin:0 auto;overflow: hidden;}
.wrap:after{content:"";display: block;clear: both;}
.left,.center,.right{
float:left;
word-break:break-all;
min-height:300px;
}
.left{width:300px; background: pink;padding-bottom:500px;margin-bottom:-500px;}
.center{width:300px;padding-bottom:500px;margin-bottom:-500px; background: yellowgreen;}
.right{width:300px;padding-bottom:500px;margin-bottom:-500px;background:skyblue;}
HTML
<div class="wrap">
<div class="left">左侧div>
<div class="center">中间div>
<div class="right">右侧div>
div>
*圣杯布局、双飞翼布局的实现原理?
圣杯布局:
HTML:
<div class="header">headerdiv>
<div class="wrap">
<div class="center">div>
<div class="left">div>
<div class="right">div>
div>
<div class="footer">footerdiv>
CSS:
.footer,.header{height:100px;background:#ccc;min-width:900px;}
.wrap{padding:0 200px;min-width:500px;}
.wrap:after{content:"";display:block;clear:both;}
.left,.right,.center{float:left;}
.center{width:100%;background:pink;min-height:300px;}
.left{width:200px;background:green;min-height:300px;margin-left:-100%;position:relative;left:-200px;}
.right{width:200px;background:skyblue;min-height:300px;margin-right:-200px;}双飞翼布局
HTML:
<div class="header">headerdiv>
<div class="main">
<div class="main-inner">centerdiv>
div>
<div class="left">div>
<div class="right">div>
<div class="footer">footerdiv>
CSS:
.footer,.header{height:100px;background:#ccc;}
.footer{clear:both;}
.main{width:100%;float:left;}
.main-inner{margin:0 200px;background:yellowgreen;min-height:300px;}
.left{float:left;width:200px;background:green;min-height:300px;margin-left:-100%;}
.right{float:left;width:200px;background:skyblue;min-height:300px;margin-left:-200px;}
百分比同理。
*用纯CSS实现小箭头的思路?
HTML
<div class="sjbox">
<div class="sj1">div>
<div class="sj2">div>
div>
Css:
.sjbox{width:40px;height:40px;position: relative;overflow: hidden;}
.sj1{width:0;height:0;border-width:40px 20px 0;border-style:solid;border-color:red transparent;}
.sj2{width:0;height:0;border-width:40px 20px 0;border-style:solid;border-color:#fff transparent; position:absolute;top:-4px;left:0;}
*简述精灵图的原理及优缺点?
*简述网页中常见图片格式及特点?
*为什么要初始化CSS样式?哪些样式需要初始化?
*display:none和visibity:hidden的区别?
*你能想出几种方法让元素在页面中消失?
*标签应该如何合理嵌套?
*在项目中你是如何做图片优化的?
*html5有哪些新特性、移除了那些元素?
如新增的input的类型
新增的相关属性:
移除的元素:
*如何处HTML5新标签的浏览器兼容问题?
利用document.createElement创建元素,设置display:block
针对ie9以下浏览器引入html5shiv.js
*CSS3有哪些新特性?
新增了属性选择器
新增了伪类选择器
新增了背景相关属性:
用户界面相关:
*请解释一下CSS3的flexbox(弹性盒布局模型),以及适用场景?
*flex-box容器的主要属性有:
*flex-item项目的属性有:
*什么是less?less有什么好处?
*常见的移动端布局解决方案有哪些?原理如何?
*简述rem布局原理?