FAQ?
怎么让页面上的某块区域全屏展示?
可以通过 HTML5 提供的 全屏 API,将该区域元素通过 requestFullscreen() 方法切换到全屏模式。
怎么在页面上获取用户的定位信息?
要在网页上获取用户的地理位置信息,可以使用 HTML5 提供的 Geolocation API,或者使用百度地图、高德地图等 SDK 进行获取。
html 文档中常见的 是什么,有什么作用?
- 需要保持单词或短语不被拆开时(如人名、数字单位等)。
- 用于精确控制空格数量。
- 实现特定的排版或对齐需求。
canvas 与 svg 在可视化领域优劣如何
选择 <canvas>
还是 <svg>
取决于具体的需求和应用场景。如果你需要高性能、动态更新的图形绘制,<canvas>
是更好的选择。而如果你需要可维护的矢量图形、灵活的样式和交互,<svg>
是更合适的选择。在实际应用中,也可以根据需要将两者结合使用,以发挥各自的优势。
html 中前缀为 data- 开头的元素属性是什么?
data-
属性提供了一种简洁的方法来将自定义数据存储在 HTML 元素中,这些数据可通过 JavaScript 进行访问和操作,而不会影响页面的标准表现。它们是现代 Web 开发中用于处理元素相关数据的有用工具。
link 标签有哪些属性,分别有什么作用?
- href:指定资源 URL。
- rel:定义文档与资源的关系。
- type:指定资源 MIME 类型(主要用于样式表)。
- media:定义样式表的媒体条件。
- sizes:定义图标的尺寸。
- as:指定预加载资源的类型。
- crossorigin:设置跨域请求处理方式。
link 标签的 rel 属性中,preload 和 prefetch 这两个值的作用是什么?
- preload:优先加载当前页面需要的关键资源,以提升页面加载速度。
- prefetch:预取未来可能需要的资源,以提高未来导航的速度。
HTML 部分标签中的 crossorigin 属性,作用是什么?
- crossorigin="anonymous":请求不包含凭证,适用于公开资源。
- crossorigin="use-credentials":请求包含凭证,适用于需要用户认证的资源。
SSG 的理解
SSG(Static Site Generation,静态网站生成)是指在构建时预先生成静态页面,并将这些页面部署到 CDN 或者其他存储服务中,以提升 Web 应用的性能和用户体验。
具体来说,SSG 的实现方式通常包括以下几个步骤:
- 在开发阶段,使用模板引擎等技术创建静态页面模板;
- 将需要展示的数据从后台 API 中获取或者通过其他渠道获取,并将其填充到静态页面模板中,生成完整的 HTML 页面;
- 使用构建工具(例如 Gatsby、Next.js 等)对静态页面进行构建,生成静态 HTML、CSS 和 JavaScript 文件;
- 部署生成好的静态文件到服务器或者 CDN 上,以供用户访问。
相比于传统的动态网页,SSG 具有如下优势:
- 加载速度快:由于不需要每次请求都动态地渲染页面,SSG 可以减少页面加载时间,从而提高用户体验和搜索引擎排名;
- 安全性高:由于没有后台代码和数据库,SSG 不容易受到 SQL 注入等攻击;
- 成本低:由于不需要动态服务器等设备,SSG 可以降低网站的 运维成本和服务器负担。
需要注意的是,SSG 不适用于频繁更新的内容和动态交互等场景,但对于内容较为稳定和更新较少的网站则是一个性能优化的好选择。
Dom 树的理解
- DOM 树 是文档的结构化表示,包含了文档的所有元素、属性和文本节点。
- 操作 DOM 是通过 JavaScript 对页面内容进行动态修改和控制的基础。
- 了解 DOM 树 的结构和操作可以帮助开发者更有效地处理网页的动态内容和交互。
Node 和 Element 是什么关系?
Node与Element的关系,从继承方面思考可能清晰很多。
Element 继承于 Node,具有Node的方法,同时又拓展了很多自己的特有方法。
在Element的一些方法里,是明确区分了Node和Element的。比如说:childNodes与 children, parentNode与parentElement等方法。
Node的一些方法,返回值为Node,比如说文本节点,注释节点之类的,而Element的一些方法,返回值则一定是Element。
区分清楚这点了,也能避免很多低级问题。
简单的说就是Node是一个基类,DOM中的Element
,Text和Comment
都继承于它。换句话说,Element
,Text
和Comment
是三种特殊的Node,它们分别叫做ELEMENT_NODE
,TEXT_NODE
和COMMENT_NODE
。
所以我们平 时使用的 html上的元素,即Element
,是类型为ELEMENT_NODE
的Node
。
前端跨页面通信,你知道哪些方法?
前端跨页面通信的方法主要包括:
- Web 存储 API:使用
LocalStorage
或SessionStorage
存储数据,在不同页面之间共享。 - Cookies:通过设置和读取 Cookie 值在同一域名下的不同页面间传递信息。
- PostMessage:允许在不同的窗口之间发送和接收消息,通过
origin
限制接收范围。 - Broadcast Channel:创建频道实现类似发布-订阅模式的通信,适合标签页和 iframe 之间。
- SharedWorker:共享的 Web Worker,允许不同页面通过
postMessage
进行双向通信。 - IndexedDB:浏览器提供的客户端数据库,允许在不同页面间存储和共享数据。
- WebSockets:全双工通信通道,适合实时通信,客户端和服务器间实时数据传输。
什么是 DOM 和 BOM?
DOM(Document Object Model)和 BOM(Browser Object Model)是 JavaScript 中常用的两个概念,用于描述浏览器中的不同对象模型。
- DOM(Document Object Model):
- DOM 是表示 HTML 和 XML 文档的标准的对象模型。它将文档中的每个组件(如元素、属性、文本等)都看作是一个对象,开发者可以使用 JavaScript 来操作这些对象,从而动态地改变页面的内容、结构和样式。
- DOM 以树状结构组织文档的内容,其中树的根节点是
document
对象,它代表整个文档。document
对象有各种方法和属性,可以用来访问和修改文档的内容和结构。
- BOM(Browser Object Model):
- BOM 是表示浏览器窗口及其各个组件的对象模型。它提供了一组对象,用于访问和控制浏览器窗口及其各个部分,如地址栏、历史记录等。
- BOM 的核心对象是
window
对象,它表示浏览器窗口,并且是 JavaScript 中的全局对象。window
对象提供了许多属性和方法,用于控制浏览器窗口的各个方面,如页面导航、定时器、对话框等。 - BOM 还提供了其他一些对象,如
navigator
(提供浏览器相关信息)、location
(提供当前文档的 URL 信息)、history
(提供浏览器历史记录)、screen
(提供屏幕信息)等。
总的来说,DOM 是用于访问和操作网页文档的对象模型,而 BOM 是用于控制浏览器窗口及其各个组件的对象模型。在 JavaScript 编程中,开发者通常会同时使用 DOM 和 BOM 来完成各种任务,如操作网页元素、导航控制、事件处理等。
简单描述从输入网址到页面显示的过程
当输入URL到 页面加载完成,发生了以下几个关键过程:
- DNS解析:浏览器将URL解析为对应的IP地址。这个过程涉及多级DNS服务器,从本地缓存开始,如果没有找到,则递归查询根域名服务器、顶级域名服务器,直到找到目标服务器的IP地址。
- TCP连接:浏览器通过三次握手与服务器建立TCP连接。一旦连接建立,浏览器可以发送HTTP请求。
- HTTP请求:浏览器构建HTTP请求报文,通过TCP连接发送到服务器。请求报文包含请求行、请求头和请求正文。
- 服务器处理请求:服务器接收HTTP请求,解析请求内容,执行相应的处理(如数据库查询、文件读取等),并构建HTTP响应报文。
- HTTP响应:服务器将响应报文通过TCP连接发送回浏览器。响应报文包含状态码、响应头和响应正文。
- 浏览器解析渲染:浏览器接收到HTTP响应后,解析HTML文档构建DOM树,解析CSS构建CSSOM树,合并两者形成渲染树,然后开始渲染页面。
- 连接结束:当浏览器完成页面渲染或收到服务器关闭连接的信号时,浏览器会发送TCP连接关闭的信号,服务器收到后,双方断开连接。
简述 html 页面渲染过程
- 解析 HTML -> 构建 DOM 树。
- 解析 CSS -> 构建 CSSOM 树。
- 合并 DOM 和 CSSOM -> 构建渲染树。
- 计算布局 -> 生成布局信息。
- 绘制页面 -> 将内容绘制到屏幕。
- 合成和显示 -> 合成图层并显示页面。
- JavaScript 执行 -> 执行脚本可能导致重绘或回流。
HTML5 有哪些新特性?
- 新增语义化标签:nav、header、footer、aside、section、article
- 音频、视频标签:audio、video
- 数据存储:localStorage、sessionStorage
- canvas(画布)、Geolocation(地理定位)、websocket(通信协议)
- input标签新增属性:placeholder、autocomplete、autofocus、required
- history API
- go、forward、back、pushstate
<!DOCTYPE html>
标签有什么用?
<!DOCTYPE html>
是 HTML5 文档的标准声明,用于告知浏览器当前页面遵循 HTML5 标准。它帮助浏览器以标准模式渲染网页,确保一致的用户体验和网页表现。
iframe是什么?有哪些优缺点?
<iframe>
标签提供了一种便捷的方法来嵌入外部内容和实现特定的布局,但它也带来了一些性能、安全性、SEO 和用户体验方面的挑战。合理使用 <iframe>
并考虑 其优缺点可以帮助开发人员在实现页面功能和保持页面性能之间找到平衡。
canvas在标签上设置宽高,与在style中设置宽高有什么区别?
canvas标签的width和height是画布实际宽度和高度,绘制的图形都是在这个上面。
而style的width和height是canvas在浏览器中被渲染的高度和宽度。
如果canvas的width和height没指定或值不正确,就被设置成默认值。
如何禁用a标签跳转页面或定位链接?
当页面中a标签不需要任何跳转时,从原理上来讲,可分如下两种方法:
- 标签属性href,使其指向空或不返回任何内容。如:
<a href="javascript:void(0);" >点此无反应javascript:void(0)</a>
<a href="javascript:;" >点此无反应javascript:</a>
- 从标签事件入手,阻止其默认行为。如:
html方法:
<a href="" onclick="return false;">return false;</a>
<a href="#" onclick="return false;">return false;</a>
或者在js文件中阻止默认点击事件:
Event.preventDefault()
还可以在css文件中处理点击,不响应任何鼠标事件:
pointer-events: none;
script 标签中, async 和 defer 两个属性有什么用途和区别?
在HTML的<script>
标签中,async
和defer
两个属性都用于控制脚本的异步加载,但它们之间存在关键的区别,主要体现在脚本加载和执行顺序上。
async属性
- 用途:
async
属性用于指定脚本应该异步执行,即脚本的加载和解析不会阻塞HTML文档的解析,并且脚本一旦加载完成就会立即执行,不等待DOMContentLoaded事件触发。 - 特点:
async
脚本的加载和执行是独立的,不会按照在HTML文档中出现的顺序执行。如果页面中有多个async
脚本,它们的执行顺序是不确定的。
defer属性
- 用途:
defer
属性也用于指定脚本的异步加载,但与async
不同的是,defer
脚本会等到整个文档被解析完成后,才会执行。这意呀着,脚本的执行会按照在HTML文档中出现的顺序进行。 - 特点:使用
defer
属性的脚本不会阻塞HTML文档的解析,同时保证了脚本的执行顺序,这对于依赖DOM元素或顺序 执行的脚本非常有用。
区别
- 执行时机:
async
脚本一旦加载完成就会立即执行,不等待其他脚本或DOM的加载完成;而defer
脚本会等待整个文档解析完成后,按照在HTML文档中出现的顺序执行。 - 执行顺序:
async
脚本的执行顺序是不确定的,多个async
脚本可能会乱序执行;而defer
脚本会按照在HTML文档中出现的顺序执行。
常用的 meta 元素有哪些?
- 字符集:
<meta charset="UTF-8">
- 描述:
<meta name="description" content="...">
- 关键词:
<meta name="keywords" content="...">
- 作者:
<meta name="author" content="...">
- 视口:
<meta name="viewport" content="...">
- 刷新和重定向:
<meta http-equiv="refresh" content="...">
- 网页权限设置:
<meta name="robots" content="...">
- 兼容性:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
- Open Graph 和 Twitter Card 元素用于社交媒体优化:
<meta property="og:image" content="...">
、<meta name="twitter:card" content="summary_large_image">
JSONP 的缺点
跨域(jsonp,ajax)
如何实现跨域
dom 是什么,你的理解?
关于 dom 的 api 有什么
节点类型 nodeType - 返回值
如何对项目中的图片进行优化?
-
图片压缩:使用适当的图像压缩 算法来减小图像文件的大小。可以使用图像编辑工具,如 Adobe Photoshop、GIMP 或在线压缩工具来压缩图片。压缩图片可以减少文件大小,而不会显著降低图像质量。
-
选择合适的图像格式:选择适当的图像格式可以降低文件大小。对于复杂的图像、照片等,使用 JPEG 格式,对于图标、线条图像等,使用 PNG 格式。避免使用无损格式如 BMP 或 TIFF,因为它们通常具有较大的文件大小。
-
图片尺寸调整:根据需要调整图片的尺寸。如果在网页上显示的图片尺寸较小,可以将其调整为实际显示大小,以减少加载时间。
-
响应式图片:使用响应式设计技术,在不同设备和屏幕尺寸上显示不同大小的图片。这样可以避免在移动设备上加载过大的图片。
-
懒加载:采用懒加载技术,只有当图片进入可见区域时才加载它们。这样可以减少初始加载时间,提高页面加载速度。
-
CDN(内容分发网络):使用 CDN 来存储和交付图片。CDN 可以将图片存储在全球各地的服务器上,以降低图片加载时间。
-
图片缓存:启用浏览器缓存,以便当用户再次访问页面时,可以从缓存中加载图片,而不是从服务器重新下载。
-
图片精灵:将多个小图标或小图片合并成一个大图,通过 CSS 的 background-position 属性来显示需要的部分。这样可以减少 HTTP 请求的数量。
-
使用矢量图形:对于简单的图标和矢量图形,可以考虑使用 SVG(可缩放矢量图形)格式,它们可以在不失真的情况下进行放大和缩小。