整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

史上最全的web前端面试题汇总及答案Html&amp

史上最全的web前端面试题汇总及答案Html&Css(一)

者:樱桃小丸子儿

来源:https://www.jianshu.com/p/2f7eb1ad7174

很早之前就在看web前端面试题,一直想总结一个比较全面又详细的面试题库,现在总结了一些,分享给大家,以后还会持续更新,有些题目有多种答案,本文只给出其中一种,哪里有问题的欢迎指出。

Html&CSS

1、谈谈你对web标准的理解

web标准的理解

2、列举html中至少三个实体

&amp、&nbsp 、&lt、&gt、&reg、&copy

详细请看w3schoolHTML实体符号参考手册

w3schoolHTML实体符号参考手册

3、cellpadding与cellspacing有何区别?

cellpadding:代表单元格边框到内容之间的距离(留白)

cellspacing:cellspacing属性用来指定表格各单元格之间的空隙。此属性的参数值是数字,表示单元格间隙所占的像素点数。

4、CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3新增伪类有哪些?

1.id选择器( # myid)

2.类选择器(.myclassname)

3.标签选择器(div, h1, p)

4.相邻选择器(h1 + p)

5.子选择器(ul > li)

6.后代选择器(li a)

7.通配符选择器( *)

8.属性选择器(a[rel="external"])

9.伪类选择器(a: hover, li: nth - child)

**可继承的样式: **

font-size font-family color, UL LI DL DD DT;

不可继承的样式:

border padding margin width height

优先级

优先级就近原则,同权重情况下样式定义最近者为准,载入样式以最后载入的定位为准;

优先级为:

!important > id > class > tag

important 比 内联优先级高

CSS3新增伪类举例

p:first-of-type 选择属于其父元素的首个<p> 元素的每个<p>元素。

p:last-of-type 选择属于其父元素的最后 <p>元素的每个<p>元素。

p:only-of-type 选择属于其父元素唯一的<p>元素的每个<p>元素。

p:only-child 选择属于其父元素的唯一子元素的每个<p>元素。

p:nth-child(2) 选择属于其父元素的第二个子元素的每个<p>元素。

:enabled :disabled 控制表单控件的禁用状态。

:checked 单选框或复选框被选中。

5、display与visibility有何异同?

display可以有很多值,visibility只有两个常用值:visible、hidden。

当display为none、visibility为hidden时都会隐藏元素。但display会隐藏掉元素空间,visibility会保留元素空间。

6、怎么在网页中实现绝对定位?

absolute

绝对定位与相对定位

7、table-layout、border-collapse有何用途?

①table-layout:设置表格是否自动调整宽高

②border-collapse:表格与单元格及单元格间的边框是否融合在一起。

8、简述盒模型

简述盒模型

9、链接标记target属性的_top、_parent、_blank、main、left、top各有何用处?

链接标记target与Dom,Bom

10、你对浏览器兼容怎么看?通常你都做哪些处理?

浏览器的兼容性

11、get和post的区别?

GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符

POST:一般用于修改服务器上的资源,对所发送的信息没有限制。

GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值,也就是说Get是通过地址栏来传值,而Post是通过提交表单来传值。

然而,在以下情况中,请使用 POST 请求:

①无法使用缓存文件(更新服务器上的文件或数据库)向服务器发送大量数据(POST 没有数据量限制)。

②发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠。

12、xhtml和html有什么区别

①HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言

②最主要的不同:

XHTML 元素必须被正确地嵌套。

XHTML 元素必须被关闭。

标签名必须用小写字母。

XHTML 文档必须拥有根元素。

13、行内元素有哪些?块级元素有哪些?空(void)元素有那些?

行内元素和块级元素的区别是什么?行内块元素的兼容性使用?(IE8 以下)

块级元素:div p h1 h2 h3 h4 form ul ol dl dt dd

行内元素: a b br i span input select image strong(强调的语气)

常见空元素:

<br>/<hr>/<img>/<input>/<link>/<meta>

不常见空元素:

<area>/<base>/<col>/<command>/<embed>/<keygen>/<param>/<source>/<track>/<wbr>

行内元素:会在水平方向排列,不能包含块级元素,设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效。

块级元素:各占据一行,垂直方向排列。从新行开始结束接着一个断行。

兼容性:

display:inline-block;*display:inline;*zoom:1;

14、CSS引入的方式有哪些? link和@import的区别是?

CSS引入的方式包括内联 内嵌 外链 导入

link和@import的区别是 :

①link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;

②页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;

③import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题;

④后者优先级更高

15、你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?介绍一下你对浏览器内核的理解

Ie(Ie内核) 火狐(Gecko) 谷歌(webkit) opera(blink)

对内核的理解:

主要分成两部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎。

①渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。

②JS引擎:解析和执行javascript来实现网页的动态效果。

最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。

16、解释css sprites,如何使用。

Css 精灵 把一堆小的图片整合到一张大的图片上,减轻服务器对图片的请求数量。

适用于以下情况:

①静态图片,不随用户信息的变化而变化

②小图片,图片容量比较小

③加载量比较大

17、清除浮动的几种方式,各自的优缺点

(1)父级div定义height。

(2)结尾处加空div标签clear:both。

(3)父级div定义伪类:after和zoom。

(4)父级div定义overflow:hidden。

(5)父级div定义overflow:auto。

(6)父级div也浮动,需要定义宽度。

(7)父级div定义display:table。

(8)结尾处加br标签clear:both。

比较好的是第3种方式,好多网站都这么用。

18、Doctype作用?标准模式与兼容模式各有什么区别?

①<!DOCTYPE>告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。

②标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。

注意点:

HTML5 只需要写<!DOCTYPEHTML>不需要对DTD进行引用,因为HTML5不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行)。

而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。

19、iframe有哪些缺点?

①iframe会阻塞主页面的Onload事件,搜索引擎的检索程序无法解读这种页面,不利于SEO;

②iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。

使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript动态给iframe添加src属性值,这样可以绕开以上两个问题。

20、如何实现浏览器内多个标签页之间的通信?

①通过WebSocket、SharedWorker来实现;

②也可以调用localstorge、cookies等本地存储方式。

localstorge另一个浏览上下文(另一个标签页)里被添加、修改或删除时,它都会触发一个事件,我们通过监听事件,控制它的值来进行页面信息通信。

注意quirks:Safari 在无痕模式下设置localstorge值时会抛出 QuotaExceededError 的异常。

21、如何在页面上实现一个圆形的可点击区域?

①map+area或者svg

②border-radius

③纯js实现 需要求一个点在不在圆上简单算法、获取鼠标坐标等等

22、CSS3有哪些新特性?

① CSS3实现圆角(border-radius:8px),阴影(box-shadow:10px);

② 对文字加特效(text-shadow、),线性渐变(gradient),旋转(transform);

③ transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);

//旋转,缩放,定位,倾斜

④ 增加了更多的CSS选择器 多背景 rgba

CSS3新增属性

、HTML中定义表格的宽度用80px和80%的区别是什么?

PX标识像素,%标识整个父标签宽度百分比

2、CSS样式定义优先级顺序是?

内联样式最高优先权,然后是内部样式,然后才是外部样式

3、div和span的区别?

DIV 和 SPAN 元素最大的特点是默认都没有对元素内的对象进行任何格式化渲染。主要用于应用样式表(共同点)。

两者最明显的区别在于DIV是块元素,而SPAN是行内元素(也译作内嵌元素)。

详解:1.所谓块元素,是以另起一行开始渲染的元素,行内元素则不需另起一行,测试一下下面的代码你会有更形象的理解:

测试<span>紧跟前面的"测试"显示</span><div>这里会另起一行显示</div>

4、CSS选择器包括?

1)类别选择器 用“.”来标识

2)标签选择器 用HTML标签来标识

3)ID选择器用“#”号来标识

4)通配符选择器 用“*”号来标识

5、用css3语法中,如何实现一个矩形框的圆角效果和50%红色透明效果?,请写出关键脚本

<style>

div{

width:200px;

height:200px;

border-radius: 30px;

opacity: 0.5;/* 火狐 */

/* filter:alpha(opacity=50); IE */

background-color:red;

}

</style>

6、Div与Table的区别

1) div大大缩减页面代码,提高页面浏览速度,table代码量繁多,页面浏览效率慢。

2) div结构清晰,可读性非常强,也容易被搜索引擎搜索到,优化了搜索引擎,Table结构复杂,可读性差。

3)div 缩短改版时间。只要简单的修改几个CSS文件就可以改变很多页面。Table要想改变的话,需要一个页面一个页面的去修改。

4)div表现和内容相分离,非常符合w3c标准。

5)table制作效率高于div

6)table浏览器兼容性高于div,我们常用的IE6.0,IE7.0火狐Firefox浏览器对div css设置上非常挑剔。

7、行级标签转块级标签,块级标签转行级标签

行级转块级:display:block

块级转行级:float:left

evExpress WinForm拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

注意:目前基于HTML & CSS的控件正在积极研发中,可以作为技术预览提供,如果需要使用请下载最新版组件体验哦~

DevExpress WinForms Subscription官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载-慧都网

一组控件和组件允许开发人员构建HTML格式的UI,并使用CSS样式自定义UI元素的外观设置、大小、填充和布局选项,不再需要处理自定义绘制事件或更改大量属性来修改控件以匹配UI规范,可以使用HTML和CSS标记的知识为桌面应用程序构建布局。

在上文中(点击这里回顾:用DevExpress实现基于HTML&CSS的桌面应用程序的UI(二)),我们为大家介绍了HTML-CSS标记的动态自定义项目、数据绑定等,本文将继续为大家介绍如何使用外部控件和就地编辑器、按钮的使用等,欢迎持续关注这个系列的文章哦~

HTML-CSS标记

外部控件和就地编辑器

<input>标记允许开发者向基于HTML的UI添加就地编辑器或外部控件,标签支持以下控件:

HtmlContentControl

使用<input>标记作为想要在布局中显示的外部控件和存储库项(就地编辑器)的占位符。

Data Grid Views (ItemsView, TileView和 WinExplorerView)

使用<input>标记作为Repository Items(就地编辑器)的占位符,不能使用此标记在数据网格视图中显示外部控件。

HTML

<input name="textEditEmail" class="field-input"/>
<input name="repositoryItemPictureEdit1" value="${ImageData}" class="editor"/>

按钮

按照下面的步骤渲染一个按钮:

  • 定义一个呈现按钮的HTML元素,指定元素的类(例如,将类名设置为“button”)。
  • 在CSS代码中,定义“button”类来指定元素的显示属性。
  • 还为按钮类定义悬停状态,以便在元素悬停时突出显示元素。

下面的示例使用<div> 标记来定义一个按钮:

HTML

<div id="uploadBtn" class="centered button">Upload</div>
<div id="removeBtn" class="centered button">Remove</div>

CSS

.centered{
align-self:center;
}
.button {
width: 70px;
height: 20px;
min-width: 20px;
padding: 8px;
margin-left: 2px;
opacity: 0.5;
}
.button:hover {
border-radius: 4px;
background-color: #F2F2F2;
}

UI元素鼠标操作

开发者可以再控制级、HTML标记级和使用Fluent API时响应HTML UI元素上的鼠标操作。

控件的鼠标事件

支持HTML的控件公开可以处理的事件,以响应HTML UI元素上的鼠标动作,这些事件通常被称为:

  • ElementMouseClick
  • ElementMouseDown
  • ElementMouseMove
  • ElementMouseOut
  • ElementMouseOver
  • ElementMouseUp

C#

void htmlContentControl1_ElementMouseClick(object sender, DevExpress.Utils.Html.DxHtmlElementMouseEventArgs e) {
if(e.ElementId=="btnSend") {
//...
}
}

VB.NET

Sub HtmlContentControl1_ElementMouseClick(sender As Object, e As DevExpress.Utils.Html.DxHtmlElementMouseEventArgs) Handles HtmlContentControl1.ElementMouseClick
If e.ElementId="btnSend" Then
'...
End If
End Sub

HTML鼠标事件

HTML标记中支持以下鼠标事件:onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove和onmouseout,开发者可以通过以下方式订阅这些事件:

  • 用下面的签名在代码后面定义一个方法:

C#

void <MethodName>(object sender, DxHtmlElementMouseEventArgs args)

VB.NET

Sub <MethodName>(ByVal sender As Object, ByVal args As DxHtmlElementMouseEventArgs)
  • 在HTML代码中,将元素的事件设置为已定义方法的名称。

HTML

<img onclick="<MethodName>" ... />

示例:

C#

void OnPhoneClick(object sender, DxHtmlElementMouseEventArgs args) {
XtraMessageBox.Show("Phone!");
}

VB.NET

Sub OnPhoneClick(ByVal sender As Object, ByVal args As DxHtmlElementMouseEventArgs)
XtraMessageBox.Show("Phone!")
End Sub

HTML

<div class='buttonPanel'>
<img onclick="OnPhoneClick" src="PhoneCall" class="button" />
</div>

Fluent API

开发者可以使用Fluent API订阅元素的鼠标单击事件。

C#

var fluent=context.OfType<ViewModel>();
fluent.BindCommandToElement(htmlContentControl, "btnPhone", x=> x.Phone);
//...
public class ViewModel {
public void Phone() {
//...
}
//...
}

VB.NET

Dim fluent=context.OfType(Of ViewModel)()
fluent.BindCommandToElement(htmlContentControl, "btnPhone", Sub(x) x.Phone())
'...
Public Class ViewModel
Public Sub Phone()
'...
End Sub
End Class
'...

HTML

<img id="btnPhone" src="PhoneCall" class="button" />