今日前端面试常问的问题?

158 阅读4分钟

HTML5的文件离线存储怎么使用,工作原理是什么?

HTML5的离线存储是通过使用Web存储机制来实现的,其中最主要的技术是Application Cache(应用程序缓存)。Application Cache允许网页作者指定哪些资源(例如HTML、CSS、JavaScript文件和图像)应该在用户离线时进行缓存,从而使网页能够在没有网络连接的情况下正常运行。 以下是HTML5离线存储的基本步骤和工作原理:

  1. 创建一个Cache Manifest文件:Cache Manifest是一个文本文件,以.appcache为扩展名。它包含了网页所需的资源列表,以及一些用于控制缓存更新的指令。这个文件需要在网页的<html>标签中通过<html manifest="cache.manifest">来声明。 2. 指定资源列表:在Cache Manifest文件中,你需要列出所有要离线缓存的资源,包括HTML文件、CSS文件、JavaScript文件、图像等。这些资源的URL将会被存储在缓存中。 3. 设置更新策略:在Cache Manifest文件中,你可以定义资源的缓存策略,包括CACHENETWORKFALLBACKCACHE部分包含要缓存的资源列表,NETWORK部分列出应该始终从网络加载的资源,而FALLBACK部分定义了在某些资源不可用时的替代资源。 4. 应用缓存:一旦你在HTML文件中声明了Cache Manifest文件,浏览器会开始下载并缓存在Manifest中列出的资源。用户访问网页时,浏览器将会检查缓存,如果有匹配的资源,就会从缓存中加载资源,而不需要网络连接。 5. 更新缓存:当你更新了Cache Manifest文件中的资源列表或指令时,浏览器会认为缓存已过期。此时,用户再次访问网页时,浏览器会下载新的资源并更新缓存。这可以通过在Cache Manifest文件中增加一个注释或者修改文件的内容来触发。 需要注意的是,由于Application Cache存在一些问题和限制,例如缓存清除困难、不支持动态数据更新等,建议在考虑使用之前,详细了解其工作原理和限制。另外,由于Web技术不断发展,现在已经有更先进的方法来实现离线存储,比如使用Service Workers来提供更灵活和可控的缓存策略。

CSS选择器有哪些?哪些属性可以继承?

CSS(层叠样式表)中有多种选择器,用于定位和选择要应用样式的HTML元素。以下是一些常见的CSS选择器:

  1. 元素选择器(Type Selector) :通过HTML元素的标签名来选择元素,如divph1等。
  2. 类选择器(Class Selector) :通过HTML元素的class属性值来选择元素,以.开头,如.my-class
  3. ID选择器(ID Selector) :通过HTML元素的id属性值来选择元素,以#开头,如#my-id
  4. 后代选择器(Descendant Selector) :选择指定元素的后代元素,使用空格分隔,如div p选择所有<p>元素,它们是<div>元素的后代。
  5. 子元素选择器(Child Selector) :选择指定元素的直接子元素,使用>符号,如ul > li选择所有在<ul>元素内的直接子级<li>元素。
  6. 相邻兄弟选择器(Adjacent Sibling Selector) :选择紧接在另一个元素后面的元素,使用+符号,如h2 + p选择紧接在<h2>元素后的<p>元素。
  7. 通用选择器(Universal Selector) :选择所有元素,使用*,如*选择所有元素。
  8. 伪类选择器(Pseudo-Class Selector) :选择具有特定状态的元素,如:hover:nth-child():first-child等。
  9. 伪元素选择器(Pseudo-Element Selector) :选择元素的特定部分,如::before::after用于在元素前后插入内容。
  10. 属性选择器(Attribute Selector) :根据元素的属性值来选择元素,如[type="text"]选择所有type属性值为"text"的元素。

CSS中有一些属性可以继承,这意味着如果一个元素应用了这些属性,它的子元素也会继承这些属性的值。以下是一些常见的可以继承的CSS属性:

  1. 字体相关属性font-familyfont-sizefont-weightfont-style等。
  2. 文本相关属性colorline-heighttext-aligntext-decoration等。
  3. 盒模型属性marginpadding
  4. 列表属性list-style
  5. 表格相关属性border-collapseborder-spacing
  6. 继承属性inherit,它用于明确指示子元素继承父元素的属性值。

需要注意的是,并非所有的CSS属性都可以继承,有些属性是不会被子元素继承的。


js写一个方法把下划线命名转成大驼峰命名

你可以使用JavaScript编写一个方法来将下划线命名转换为大驼峰命名。下面是一个示例方法:

javascriptCopy code
function underscoreToCamel(str) {
  return str.replace(/_(.)/g, function(match, char) {
    return char.toUpperCase();
  });
}

// 示例用法
const underscoreName = "my_variable_name";
const camelName = underscoreToCamel(underscoreName);
console.log(camelName); // 输出:myVariableName

这个方法使用正则表达式来匹配下划线后的字符,并将其转换为大写,然后返回新的字符串。在示例中,underscoreName会被转换为camelName,从my_variable_name变为myVariableName