前端十五道html面试题

article/2025/11/4 8:42:23

目录

01.说一下对语义化的理解?✅

02.说一下iframe有哪些优点和缺点?✅

03.DOCTYPE的作用?严格模式和混杂模式的区别?

04.说一下渐进增强和优雅降级的区别?

05. <!DOCTYPE html> 标签是否为 HTML 标签?

06.文本超出部分显示省略号

07.说一下web worker?✅

08.如何让一段文本中的所有英文单词的首字母大写

09.rgba() 和 opacity 的透明效果有什么不同?

 

10.谈谈你对web标准和W3C的理解和认识。

11.列举常用的结构标签,并描述其作用

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

13、主流浏览器内核私有属性css前缀:

14.请描述下 SEO 中的 TDK?

15.前端页面有哪三层构成,分别是什么?作用是什么?


01.说一下对语义化的理解?✅

  • 对开发者友好,让人更容易读懂,利于代码可读性
  • 对机器友好,让搜索引擎更容易读懂,利于seo

02.说一下iframe有哪些优点和缺点?✅

  • 优点:展现嵌入的网页;加载速度较慢的内容,如广告;可以跨子域通信;
  • 缺点:iframe会阻塞主页面onload事件;不利于搜索引擎识别;增加http请求;

03.DOCTYPE的作用?严格模式和混杂模式的区别?


!DOCTYPE告诉浏览器以HTML5标准解析页面,如果不写,则进入混杂模式
严格模式(标准模式):以w3c标准解析代码
混杂模式(怪异模式):浏览器用自己的方式解析代码,混杂模式通常模拟老式浏览器的行为,以防止老站点无法工作
HTML5 没有 DTD ,因此也就没有严格模式与混杂模式的区别,HTML5 有相对宽松的方法,实现时,已经尽可能大的实现了向后兼容(HTML5 没有严格和混杂之分)。

04.说一下渐进增强和优雅降级的区别?

  • 渐进增强是针对低版本浏览器也能保证基础功能,然后对高级浏览器改进追加功能;
  • 优雅降级是一开始构建完整功能,再对低版本进行兼容

05.<!DOCTYPE html> 标签是否为 HTML 标签?

不是,<!DOCTYPE>声明叫做文件类型定义(DTD),声明的作用为了告诉浏览器该文件的类型。让浏览器解析器知道应该用哪个规范来解析文档。

06.文本超出部分显示省略号


单行:

overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;


多行:

display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3; // 最多显示几行
overflow: hidden;

07.说一下web worker?✅


Web Worker 的作用,就是为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行
Worker 线程一旦新建成功,就会始终运行,不会被主线程上的活动(比如用户点击按钮、提交表单)打断。这样有利于随时响应主线程的通信。但是,这也造成了 Worker 比较耗费资源,不应该过度使用,而且一旦使用完毕,就应该关闭。
通过postMessage将结果回传到主线程,这样复杂操作的时候,就不会阻塞主进程了

08.如何让一段文本中的所有英文单词的首字母大写

text-transform:uppercase(全大写)

text-transform:lowercase(全小写)

text-transform:capitalize(首字母大写)

09.rgba() 和 opacity 的透明效果有什么不同?

  • opacity 作用于元素,以及元素内的所有内容的透明度,rgba()只作用于元素的颜色或其背景色
  • 设置rgba透明的元素的子元素不会继承透明效果

10.谈谈你对web标准和W3C的理解和认识。


web标准主要强调的是一个网站的结构,样式,行为相分离,**(优点)**从而达到结构清晰,易于阅读,易于维护的目的。

W3C对web标准提出了规范化的要求,也就是在实际编程中的一些代码规范:包含如下几点:

1.对于结构的要求有:标签字母要小写、标签要闭合、标签不允许随意嵌套。用标签语义化来提高搜索引擎对页面的抓取效率。

2.对于样式和行为的要求有:

尽量使用外链css样式表和js脚本。这样做符合结构,样式,行为分离规范。同时提高页面渲染速度,提高用户的体验。
样式尽量少用行间样式表,使代码易维护、可复用。
 

11.列举常用的结构标签,并描述其作用


结构标签是专门用于标识页面的不同结构,相对于使用元素而言,结构标签可以实现标签的语义化。
常用的结构标签有以下几种:

header标签,用于定义文档的页眉。
nav标签,用于定义页面的导航链接部分。
section标签,用于定义文档中的节,表示文档中的一个具体的组成部分。
article标签,常用于定义独立于文档其他部分的内容。
aside标签,常用于定义页面的一些额外组成部分,如广告栏,侧边栏和相关引用信息。
footer标签,定义某区域的脚注信息。

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


区别1:link是XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;
区别2:link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载。
区别3:link是XHTML标签,无兼容问题;@import是在CSS2.1提出的,低版本(IE5及以下)的浏览器不支持。
区别4:link支持使用Javascript控制DOM去改变样式;而@import不支持。

13、主流浏览器内核私有属性css前缀:

  • mozilla内核 (firefox,flock等) -moz
  • webkit内核(safari,chrome等) -webkit
  • opera内核(opera浏览器) -o
  • trident内核(ie浏览器) -ms

14.请描述下 SEO 中的 TDK?

答案:在 SEO 中,所谓的 TDK 其实就是 title、description、keywords 这三个标签,title 标题标签,description 描述标签,keywords 关键词标签

15.前端页面有哪三层构成,分别是什么?作用是什么?

答案:分成:结构层、表示层、行为层。

        结构层(structural layer)

由 HTML 或 XHTML 之类的标记语言负责创建。标签,也就是那些出现在尖括号里的单词,对网页内容的语义含义做出了描述,但这些标签不包含任何关于如何显示有关内容的信息。例如,P 标签表达了这样一种语义:“这是一个文本段。”

        表示层(presentation layer)

由 CSS 负责创建。 CSS 对“如何显示有关内容”的问题做出了回答。

        行为层(behaviorlayer)

负责回答“内容应该如何对事件做出反应”这一问题。这是 Javascript 语言和 DOM 主宰的领域。

 16 描述从输入url到页面展示的完整过程

  • 网络请求
  • 解析
  • 渲染

1)网络请求:
DNS查询(得到IP ) ,建立TCP连接(三次握手)
浏览器发起HTTP请求
收到请求响应,得到HTML 源代码
继续请求静态资源
解析HTML过程中,遇到静态资源还会继续发起网络请求
JS CSS图片视频等
注意:静态资源可能有强缓存,此时不必请求
 

2)解析:字符串->结构化数据:
HTML构建 DOM树
CSS构建CSSOM树( style tree )
两者结合,形成render tree

 题外话:优化解析
 CSS放在<head> 中,不要异步加载CSS
JS放在<body>最下面(或合理使用defer async )
<img>提前定义width height

3)渲染: Render Tree云制到页面
计算各个DOM的尺寸、定位,最后绘制到页面
遇到JS 可能会执行(参考defer async )
异步CSS、图片加载,可能会触发重新渲染

 

 17 如何实现多网页多标签tab通讯?

1》使用WebSocket
无跨域限制
需要服务端支持,成本高

2》通过localStorage通讯
同域的多个页面
A页面设置localStorage
其他页面可监听到localStorage值的修改
 

3》通过SharedWorker 通讯
SharedWorker是WebWorker的一种
WebWorker可开启子进程执行JS,但不能操作DOM
SharedWorker可单独开启一个进程,用于同域页面通讯
 

总结:

WebSocket 需要服务端,成本较高 可以跨越
localStorage简单易用,推荐 只能同域
SharedWorker调试不方便,不兼容IE11 只能同域
 

17 如何实现网页和iframe之间的通讯?

iframe 向 父级页面发送消息

在 iframe 页面,使用 window.parent 调用 postMessage 方法,即可发送消息给父级页面。

window.parent.postMessage(message, '*');

message 只能是 String 类型,所以如果想发送多条数据,可以使用 JSON 序列化对象。

// 序列化对象
const message = JSON.stringify({message: 'Hello',date: Date.now(),
});
window.parent.postMessage(message, '*');

使用 JSON.stringify 方法对内容进行序列话,即可在传入 postMessage 方法。

父级页面向 iframe 发送消息
在父级页面,使用 iframe.contentWindow 调用 postMessage 方法,即可发送消息给 iframe。

iframeEl.contentWindow.postMessage(message, '*');

iframeEl 表示 iframe DOM 对象。

通过上面两个例子,我们可以得到一个信息。

向谁发送消息,那么调用者对象就是这个发送消息的目标对象,而不是当前对象。

这一点需要非常注意,这里是很容里踩坑的。

接收消息
无论是在 iframe 页面还是父级页面,都是使用 window 监听 message 事件接收消息。

window.addEventListener('message', function (e) {// 获取消息内容 dataconst { data } = e;
});


如果消息内容是序列化后的对象,还需要将消息内容反序列化。

window.addEventListener('message', function (e) {// 获取消息内容 datalet { data } = e;data = JSON.parse(data);
});

使用 JSON.parse 方法对内容进行反序列化,即可的到传递过来的内容对象。

指定发送消息的域名
上面我们使用 postMessage 方法,传递的第二个参数都是 *,这里的含义是指任何域名都能接收消息。

建议如果知道消息接收方的域名,第二个参数请传递消息接收方的域名。因为这里是会存在安全隐患的,任何站点都可以向你的站点发送消息,如果没有做相关安全处理,是很容易造成攻击的。

iframeEl.contentWindow.postMessage(message, 'https://www.baidu.com');

上面的示例代码标识仅当 iframe 的指向 https://www.baidu.com 时才会发送消息。

通过制定域名的的方式,避免安全隐患。


原文链接:https://blog.csdn.net/CH9704/article/details/126517119


http://chatgpt.dhexx.cn/article/WfMP0xto.shtml

相关文章

【前端面试题】01—42道常见的HTML5面试题(附答案)

HTML5为我们提供了更多的语义化标签、更丰富的元素属性&#xff0c;以及更让人欣喜的功能。但在面试中&#xff0c;HTML5部分的面试题主要考察应试者对HTML5API的掌握情况&#xff0c;这是HTML5的重点&#xff0c;也正是这些API推动了前端的发展。 这些新技术早已应用在很多大型…

28道HTML基础面试题及答案汇总

1、内元素和块级元素的区别&#xff1f; 行内元素&#xff1a;不会独立出现在一行&#xff0c;单独使用的时候后面不会有换行符的元素。eg&#xff1a;span, strong, img, a 等。这些元素&#xff0c;默认的高宽&#xff0c;总是其内容的高宽。并且&#xff0c;margin和padding…

HTML+CSS基础面试题总结

1. display:none; 和visibility:hidden;的区别 display:none; 彻底消失&#xff0c;释放空间。可能引发页面的reflow回流&#xff08;重排&#xff09;。 visibility:hidden; 就是隐藏&#xff0c;但是位置没释放&#xff0c;好比opacity:0; 不引发页面回流。 2.CSS 选择器权…

HTML面试题整理

HTML面试题整理 01.说一下对语义化的理解&#xff1f;✅ 对开发者友好&#xff0c;让人更容易读懂&#xff0c;利于代码可读性对机器友好&#xff0c;让搜索引擎更容易读懂&#xff0c;利于seo 02.说一下HTML5有哪些更新/新增&#xff1f;✅ 新增语义化标签&#xff0c;音频…

安全-反射性xss基础注入

目录 题目 代码分析 注入过程及思路 1、第一次注入 2、第二次注入 3、第三次注入 4、第四次注入 题目 <?php header(X-XSS-Protection: 0); $xss isset($_GET[xss])? $_GET[xss] : ; $xss str_replace(array("(",")","&",&qu…

网络安全-靶机dvwa之XSS注入Low到High详解(含代码分析)

目录 XSS(DOM)-LOW 普通注入 代码分析 后端 前端 XSS(DOM)-MIDIUM 普通注入 大小写绕过 Html标签绕过 闭合标签 代码分析 XSS(DOM)-HIGH 闭合HTML标签绕过 代码分析 主要步骤 漏洞原因 XSS(Reflected)-LOW 普通注入 代码分析 主要步骤 漏洞原因 XSS(Refle…

关于HTML 代码注入,XSS攻击问题解决

大部分的网站一般都有评论功能或留言功能&#xff0c;或类似可以让用户写东西的地方。 如果后台不经过处理&#xff0c;又把数据返回前端&#xff0c;这就会出问题了。网页解析器会把用户的信息也当成html代码给解析了。 如果用户写的是一些恶意的 js 脚本这是很危险的。专业…

实验三:XSS和SQL注入

实验三&#xff1a;XSS和SQL注入 实验目的&#xff1a; 实验目的&#xff1a;了解什么是XSS&#xff1b;了解XSS攻击实施&#xff0c;理解防御XSS攻击的方法&#xff1b;了解SQL注入的基本原理&#xff1b;掌握PHP脚本访问MySQL数据库的基本方法&#xff1b;掌握程序设计中避…

XSS注入漏洞解决方法(高风险)

漏洞描述 攻击者往Web页面里插入恶意Script代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中Web里面的Script代码会被执行&#xff0c;从而达到恶意攻击用户的目的。 漏洞验证 通过在页面中的留言板&#xff0c;提交框&#xff0c;录入信息框等能够提交参数的地方&a…

XSS注入——DOM型XSS

DOM型xss XSS根据恶意脚本的传递方式可以分为3种&#xff0c;分别为反射型、存储型、DOM型&#xff0c;前面两种恶意脚本都会经过服务器端然后返回给客户端&#xff0c;相对DOM型来说比较好检测与防御&#xff0c;而DOM型不用将恶意脚本传输到服务器在返回客户端&#xff0c;这…

XSS注入之xss-labs

目录 &#xff08;一&#xff09;配置环境 &#xff08;1&#xff09;phpstudy 的安装 &#xff08;2&#xff09;xss-labs 的安装 &#xff08;二&#xff09;XSS漏洞的一些基础知识 &#xff08;1&#xff09;XSS漏洞的定义 &#xff08;2&#xff09;XSS漏洞的原理 &…

sql注入和xss注入有什么不一样呢?

在OWASP Top10中注入排在第一位&#xff0c;xss排在第七位&#xff0c;那么问题问题就来了&#xff0c;sql注入和xss注入都是注入&#xff0c;为什么要单独把xss单独拿出来排个名呢&#xff1f;他俩到底有啥区别&#xff0c;各自的特点是啥&#xff1f;本文不对它俩做详细的讲解…

xss漏洞攻防

XSS基本概念和原理说明 基本概念 XSS又叫CSS (Cross Site Script) &#xff0c;跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中Web里面的html代码会被执行&#xff0c;从而达到恶意的特殊目的。XSS属于被动…

XSS注入——反射性XSS

xss注入的攻击步骤&#xff1a; 1.查找可能存在的注入点&#xff08;搜索框&#xff0c;留言板&#xff0c;注册&#xff09; 2.观察输出显示位置&#xff1a; html&#xff1a; 尖括号外部&#xff0c; 尖括号内部: 引号内部》闭合&#xff0…

XSS注入的原理与实现

一、JavaScript的常用脚本 1.window.location.href 用来跳转页面 eg:<script>window.location.hrefwww.jd.com</script> 2.document.cookie 获取客户端的cookie值 3.script 可以通过“src”属性引入JavaScript文件 二、什么是同源策略 同源策略在web应用的安…

XSS注入(跨站脚本攻击)

今天学习一下xss注入 1.XSS是什么 XSS注入漏洞又称为"跨站脚本攻击(Cross Site Scripting)"&#xff0c;为了不和层叠样式表(Cascading Style Sheets,CSS)混淆&#xff0c;所以将跨站脚本攻击缩写为XSS。xss本质上是黑客通过对网页的HTML注入&#xff0c;篡改了原本…

xss注入教程与总结

xss注入个人总结 1 " < >可以用URL编码 %22 %3c %3e HTML 编码 &quot; < > 代替 2 如果过滤 可以用%2522 %26colon; 这种代替尝试 二次转码 3 如果输入框有历史记录 &#xff0c;个人简介注意使用 发现很多网站对输入框有过滤缺但没有过滤历史记录这些…

XSS注入(1)-两个简单测试理解反射型xss注入和存储型xss注入

XSS注入(1)-两个例子理解反射型xss注入和存储型xss注入 XSS全称 Cross Site Script&#xff0c;为使与css语言重名&#xff0c;所以我们将其称为xss跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意脚本代码&#xff0c;而程序对于用户输入内容未过滤&#xff0c;当用户浏…

xss漏洞注入

定义&#xff1a; XSS攻击通常指的是通过利用网页开发时留下的漏洞&#xff0c;通过巧妙的方法注入恶意指令代码到网页&#xff0c;使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript&#xff0c;但实际上也可以包括Java、 VBScript、ActiveX、 Fla…

XSS-Lab(XSS注入笔记1-16)

前言 本篇博客主要是记录笔者完成XSS-Lab步骤以及分析 题目链接&#xff1a;https://buuoj.cn/challenges#XSS-Lab Github仓库&#xff1a;https://github.com/rebo-rn/xss-lab 出题人的题解&#xff1a;https://github.com/Re13orn/xss-lab/blob/master/XSSwrite%20up.doc…