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

  • 声明位于HTML文档中的第一行,处于 html 标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。
  • 标准模式的排版 和 JS 运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。

HTML5 为什么只需要写 <!DOCTYPE HTML>

  • HTML5 不基于 SGML,因此不需要对 DTD 进行引用,但是需要 doctype 来规范浏览器的行为(让浏览器按照它们应该的方式来运行);
  • 而 HTML4.01 基于 SGML,所以需要对 DTD 进行引用,才能告知浏览器文档所使用的文档类型。

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

定义:CSS 规范规定,每个元素都有 display 属性,确定该元素的类型,每个元素都有默认的 display 值,如 div 的 display 默认值为“block”,则为“块级”元素;span 默认 display 属性值为“inline”,是“行内”元素。

  • 行内元素有:a b span img input select strong(强调的语气)
  • 块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p
  • 空元素:
    • 常见: br hr img input link meta
    • 不常见: area base col command embed keygen param source track wbr

不同浏览器(版本)、HTML4(5)、CSS2 等实际略有差异
参考: http://stackoverflow.com/questions/6867254/browsers-default-css-for-html-elements

页面导入样式时,使用 link 和@import 有什么区别?

  • link 属于 XHTML 标签,除了加载 CSS 外,还能用于定义 RSS, 定义 rel 连接属性等作用;而@import 是 CSS 提供的,只能用于加载 CSS;
  • 页面被加载的时,link 会同时被加载,而@import 引用的 CSS 会等到页面被加载完再加载;
  • import 是 CSS2.1 提出的,只在 IE5 以上才能被识别,而 link 是 XHTML 标签,无兼容问题;
  • link 支持使用 js 控制 DOM 去改变样式,而@import 不支持;

介绍一下你对浏览器内核的理解?

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

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

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

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

常见的浏览器内核有哪些?

  • Trident 内核:IE,MaxThon,TT,The World,360,搜狗浏览器等。[又称 MSHTML]
  • Gecko 内核:Netscape6 及以上版本,FF,MozillaSuite/SeaMonkey 等
  • Presto 内核:Opera7 及以上。 [Opera 内核原为:Presto,现为:Blink;]
  • Webkit 内核:Safari,Chrome 等。 [ Chrome 的:Blink(WebKit 的分支)]

详细文章:浏览器内核的解析和对比

html5 有哪些新特性、移除了那些元素?如何处理 HTML5 新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?

  • HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加

    • 绘画 canvas
    • 用于媒介回放的 video 和 audio 元素
    • 本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失
    • sessionStorage 的数据在浏览器关闭后自动删除
    • 语意化更好的内容元素,比如 article、footer、header、nav、section
    • 表单控件,calendar、date、time、email、url、search
    • 新的技术 webworker, websocket, Geolocation
  • 移除的元素:

    • 纯表现的元素:basefont,big,center,font, s,strike,tt,u;
    • 对可用性产生负面影响的元素:frame,frameset,noframes;
  • 支持 HTML5 新标签:

    • IE8/IE7/IE6 支持通过 document.createElement 方法产生的标签,

    • 可以利用这一特性让这些浏览器支持 HTML5 新标签,

    • 浏览器支持新标签后,还需要添加标签默认的样式。

    • 当然也可以直接使用成熟的框架、比如 html5shim;

      <!--[if lt IE 9]><script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>
      <![endif]-->
      
  • 如何区分 HTML5: DOCTYPE 声明\新增的结构元素\功能元素

    - 新增的结构元素:
    (1)section
    表示页面中的一个内容区块,比如章节,页眉,页脚或页面中的其他部分。它可以与h1,h2,h3,h4,h5,h6等元素结合起来使用,标示文档结构。
    (2)article
    表示页面中的一块与上下文不相关的独立内容,譬如博客中的一篇文章或报纸中的一篇文章。
    (3)aside
    表示article元素的内容之外的,与article元素的内容相关的辅助信息。
    (4)header
    表示页面中一个内容区块或整个页面的标题。
    (5)hgroup
    用于对整个页面或页面中一个内容区块的标题进行组合。
    (6)footer
    表示整个页面或页面中一个内容区块的脚注。一般来说,它会包含创作者的姓名,创作日期以及创作者联系信息。
    (7)nav
    表示页面中导航链接的部分。
    (8)figure
    表示一段独立的流内容,一般表示文档主体流内容的一个独立单元。使用figcaption元素为figure元素组添加标题。
    
    - 新增的功能元素:
    hgroup元素:用于对整个页面或页面中一个内容区块的标题进行组合。
    figure元素:表示一段独立的流内容,一般表示文档主题流内容中的一个独立单元。
    video元素:定义视频,比如电影片段或其他视频流。
    audio元素:定义音频,比如音乐或其他音频流。
    embed元素:用来插入各种多媒体,格式可以是MIDI、WAV、AIFF、AU、MP3等。
    mark元素:主要用来在视觉上向用户呈现需要突出显示或高亮显示的文字。
    time元素:表示日期或时间,也可以同时表示两者。
    canvas元素:表示图形,如图表和其他图像。
    output元素:表示不同类型的输出,比如脚本的输出。
    source元素:为媒介元素定义媒介资源。
    menu元素:表示菜单列表。当希望列出表单控制时使用该标签。
    ruby元素:表示ruby注释。
    rt元素:表示字符的解释或发音。
    rp元素:在ruby解释中使用,以定义不支持ruby元素的浏览器所显示的内容。
    wbr元素:表示软换行。
    command元素:表示命令按钮,如单选按钮、复选框或按钮。
    details元素:表示用户要求得到并且可以得到的细节信息,可与summary 元素配合使用。
    datalist元素:可选数据的列表,与input元素配合使用,可以制作出输入值的下拉列表。
    datagrid元素:表示可选数据的列表,它以树形列表的形式来显示。
    keygen元素:表示生成密钥。
    progress元素:表示运行中的进程,可以使用progress来显示JavaScript中耗费时间的函数的进程。
    email:表示必须输入E-mail地址的文本输入框。
    url:表示必须输入URL地址的文本输入框。
    number:表示必须输入数值的文本输入框。
    range:表示必须输入一定范围内数字值的文本输入框。
    Date Pickers:HTML5拥有多个可供选取日期和时间的新型输入文本框。
    

简述一下你对 HTML 语义化的理解?

  • 用正确的标签做正确的事情。
  • html 语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;
  • 即使在没有样式 CSS 情况下也以一种文档格式显示,并且是容易阅读的;
  • 搜索引擎的爬虫也依赖于 HTML 标记来确定上下文和各个关键字的权重,利于 SEO;
  • 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。

HTML5 的离线储存怎么使用,工作原理能不能解释一下?

在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件。

原理:HTML5 的离线存储是基于一个新建的.appcache 文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像 cookie 一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。

如何使用:

  1. 页面头部像下面一样加入一个 manifest 的属性;
  2. 在 cache.manifest 文件的编写离线存储的资源
CACHE MANIFEST
#v1.0CACHE:
js/app.js
css/style.cssNETWORK:
assets/logo.pngFALLBACK:
/html5/ /404.html
  1. 在离线状态时,操作 window.applicationCache 进行需求实现。

参考链接:HTML5 离线缓存-manifest 简介

浏览器是怎么对 HTML5 的离线储存资源进行管理和加载的呢?

  • 在线的情况下,浏览器发现 html 头部有 manifest 属性,它会请求 manifest 文件,如果是第一次访问 app,那么浏览器就会根据 manifest 文件的内容下载相应的资源并且进行离线存储。如果已经访问过 app 并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的 manifest 文件与旧的 manifest 文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,那么就会重新下载文件中的资源并进行离线存储。
  • 离线的情况下,浏览器就直接使用离线存储的资源。

请描述一下 cookies,sessionStorage 和 localStorage 的区别?

  • cookie 是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)
  • cookie 数据始终在同源的 http 请求中携带(即使不需要),记会在浏览器和服务器间来回传递。
  • sessionStorage 和 localStorage 不会自动把数据发给服务器,仅在本地保存。
  • 存储大小:
    • cookie 数据大小不能超过 4k。
    • sessionStorage 和 localStorage 虽然也有存储大小的限制,但比 cookie 大得多,可以达到 5M 或更大。
  • 有效期(生命周期):
    • localStorage: 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;
    • sessionStorage: 数据在当前浏览器窗口关闭后自动删除。
    • cookie: 设置的 cookie 过期时间之前一直有效,即使窗口或浏览器关闭

iframe 有那些缺点?

  • iframe 会阻塞主页面的 Onload 事件;
  • 搜索引擎的检索程序无法解读这种页面,不利于 SEO;
  • iframe 和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。

使用 iframe 之前需要考虑这两个缺点。如果需要使用 iframe,最好是通过 javascript

动态给 iframe 添加 src 属性值,这样可以绕开以上两个问题。

Label 的作用是什么?是怎么用的?

label 标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。

  <label for="Name">Number:</label><input type=“text“name="Name" id="Name"/><label>Date:<input type="text" name="B"/></label>

HTML5 的 form 如何关闭自动完成功能?

给不想要提示的 form 或某个 input 设置为 autocomplete=off。

如何实现浏览器内多个标签页之间的通信? (阿里)

  • WebSocket、SharedWorker;
  • 也可以调用 localstorge、cookies 等本地存储方式;

localstorge 另一个浏览上下文里被添加、修改或删除时,它都会触发一个事件,

我们通过监听事件,控制它的值来进行页面信息通信;

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

webSocket 如何兼容低浏览器?(阿里)

  • Adobe Flash Socket 、
  • ActiveX HTMLFile (IE) 、
  • 基于 multipart 编码发送 XHR 、
  • 基于长轮询的 XHR

页面可见性(Page Visibility API) 可以有哪些用途?

  • 通过 visibilityState 的值检测页面当前是否可见,以及打开网页的时间等;
  • 在页面被切换到其他后台进程的时候,自动暂停音乐或视频的播放;

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

  • map+area 或者 svg
  • border-radius
  • 纯 js 实现 需要求一个点在不在圆上简单算法、获取鼠标坐标等等

实现不使用 border 画出 1px 高的线,在不同浏览器的标准模式与怪异模式下都能保持一致的效果。

 <div style="height:1px;overflow:hidden;background:red"></div>

网页验证码是干嘛的,是为了解决什么安全问题。

  • 区分用户是计算机还是人的公共全自动程序。可以防止恶意破解密码、刷票、论坛灌水;
  • 有效防止黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。

title 与 h1 的区别、b 与 strong 的区别、i 与 em 的区别?

  • title 属性没有明确意义只表示是个标题,H1 则表示层次明确的标题,对页面信息的抓取也有很大的影响;
  • strong 是标明重点内容,有语气加强的含义,使用阅读设备阅读网络时:strong 会重读,而 b 是展示强调内容。
  • i 内容展示为斜体,em 表示强调的文本;

Physical Style Elements – 自然样式标签

b, i, u, s, pre

Semantic Style Elements – 语义样式标签

strong, em, ins, del, code

应该准确使用语义样式标签, 但不能滥用, 如果不能确定时首选使用自然样式标签。

html 中 title 属性和 alt 属性的区别?

<img src="#" alt="alt信息" />

当图片不输出信息的时候,会显示 alt 信息 鼠标放上去没有信息,当图片正常读取,不会出现 alt 信息。

<img src="#" alt="alt信息" title="title信息" />

当图片不输出信息的时候,会显示 alt 信息 鼠标放上去会出现 title 信息;
当图片正常输出的时候,不会出现 alt 信息,鼠标放上去会出现 title 信息。

另外还有一些关于 title 属性的知识:

  • title 属性可以用在除了 base,basefont,head,html,meta,param,script 和 title 之外的所有标签。
  • title 属性的功能是提示。额外的说明信息和非本质的信息请使用 title 属性。title 属性值可以比 alt 属性值设置的更长。
  • title 属性有一个很好的用途,即为链接添加描述性文字,特别是当连接本身并不是十分清楚的表达了链接的目的。

前端开发工程师原生html进阶指南相关推荐

  1. 前端开发工程师css样式进阶指南

    display: none; 与 visibility: hidden; 的区别 相同: 它们都能让元素不可见 区别: display:none;会让元素完全从渲染树中消失,渲染的时候不占据任何空间: ...

  2. 5年经验前端大佬在线收徒了.... 如何学习前端, 前端开发中的疑惑,进阶指南

    时至今日,已经参见工作5年多了啦,这期间也曾迷茫过,也曾孤独地在深夜流泪. 特别是刚出来工作那一会,没人什么朋友,钱赚的少不说,每天压力也很大,记得当初住的房子是一家旅店.住在5楼,隔壁是一对上夜班的 ...

  3. 前端开发从入门到进阶完全指南,不用再迷茫前端要怎么学啦!

    我经常会看到很多同学在学习前端的时候比较迷茫,不知道到底应该以怎样的学习路线来入门和进阶前端领域.每次遇到这种问题我也会分享一下自己的学习经验,但是发现这是一个问得非常多的一个共性问题. 作为程序员, ...

  4. 前端前端开发工程师_我们庞大的工程师团队会使用此前端开发指南

    前端前端开发工程师 by Yangshun Tay 阳顺泰 我们庞大的工程师团队会使用此前端开发指南 (Our large team of engineers use this front end d ...

  5. web前端是什么?如何能成为一名合格的前端开发工程师?

    对于刚刚接触前端,并且以后想从事前端开发行业的小伙伴们,肯定都有过这样的疑问,如何才能成为一名合格的前端开发工程师呢? 相信这个问题是所有刚刚准备入行的小伙伴们都比较关心的. 如果大家在一些搜索引擎上 ...

  6. 如何能成为一名合格的前端开发工程师?

    对于刚刚接触前端,并且以后想从事前端开发行业的小伙伴们,肯定都有过这样的疑问,如何才能成为一名合格的前端开发工程师呢? 相信这个问题是所有刚刚准备入行的小伙伴们都比较关心的. 如果大家在一些搜索引擎上 ...

  7. 想成为一个Web前端开发工程师,需要掌握的详细知识总结

    前端工程师已经成为目前互联网企业极具竞争力的人才,企业不断提升薪资水平为了招聘到优秀的Web前端开发工程师.因此,越来越多的人想要学习Web前端.那么呢?Web前端的学习路线是什么? 想成为一个Web ...

  8. 如何才能成为一名合格的web前端开发工程师

    如何才能成为一名合格的web前端开发工程师 开篇 前端开发是一个非常特殊的行业,它的历史实际上不是很长,但是知识之繁杂,技术迭代速度之快是其他技术所不能比拟的. winter在他的<重学前端&g ...

  9. 五一在家宅5天?前端开发工程师必读书单送给你!(文末大彩蛋!)

    OMG,据说五一小长假马上就来了,所以你要去旅游(惊恐表情)了吗?如果你没有这项计划,小编建议你"用阅读丈量世界"! 今天为大家准备了前端开发工程师必读书单, 趁着京东423世界图 ...

  10. 网易微专业之《前端开发工程师》学习笔记(1)

    何为网易微专业? 微专业是由网易云课堂联合各领域知名专家,以就业为导向,精心打造的职业培训方案. 按要求完成学习,考试通过可获得专业认定证书,令你求职或加薪多一份独特优势. 一个微专业包含了多门必修课 ...

最新文章

  1. Wijmo 更优美的jQuery UI部件集:爱上 ThemeRoller
  2. Python除了人工智能,还能从事哪些工作?
  3. 虚拟主机域名访问yum服务器,虚拟主机域名访问yum服务器
  4. SystemVerilog——任务和函数(Tasks and Functions)[转]
  5. 发布订阅模式 仿写Vue事件监听手写js实现
  6. 前端人英语学习的那点事儿
  7. 50个jQuery代码段帮你成为更出色的JS开发者
  8. 正确的python变量名_在Python,如何将变量名作为字符串?_others_酷徒编程知识库...
  9. 如何让网站在百度有LOGO展示
  10. 网络调试助手NetAssist的使用
  11. Android 4.2虚拟按键背景透明,Android 4.0 隐藏虚拟按键(导航栏)的方法
  12. Pytorch基础操作 —— 8. 张量转置操作
  13. 贝叶斯法则的一个例题
  14. 使用微信小程序怎么用wx.storage来实现收藏功能?
  15. 自媒体如何推广?推广的渠道有哪些?
  16. wmi 计算机应用程序,WMI 提供程序宿主程序 (Wmiprvse.exe) 已安装 NLB 功能的基于 Windows Server 2008 的计算机上可能会崩溃...
  17. 10年测试经验,在35岁的生理年龄面前,一文不值
  18. 互联网公司的风险控制
  19. 正确设置 php-fpm子进程用户 提高网站安全性 防止被挂木马
  20. 网页点击怎么直接呼叫,发短信

热门文章

  1. Javascript DOM readyState 属性
  2. 2022年8月止,国外最佳游戏榜出炉
  3. cloudstack上传模板时候的一个报错
  4. DOM元素 DAY17
  5. 6大智慧电厂关键技术,三维可视化仅是基础
  6. php 泊松分布,关于检验泊松分布
  7. 《吐血整理》一篇文章教你学废Git版本管理
  8. 未能找到路径中的某个部分_未能找到路径“..”的一部分
  9. 编程中遇到的优秀网站收藏
  10. 什么是软件质量——基于ISO质量定义对软件质量的理解