web前端开发面试题(一)

article/2025/9/22 1:55:28

一、html部分

1.1 link和@import

区别如下:

1.1.1从属关系区别

@import是 CSS 提供的语法规则,只有导入样式表的作用;link是HTML提供的标签,不仅可以加载 CSS 文件,还可以定义 RSS、rel 连接属性等。

2.加载顺序区别

加载页面时,link标签引入的 CSS 被同时加载;@import引入的 CSS 将在页面加载完毕后被加载。

3.兼容性区别

@import是 CSS2.1 才有的语法,故只可在 IE5+ 才能识别;link标签作为 HTML 元素,不存在兼容性问题。

4.DOM可控性区别

可以通过 JS 操作 DOM ,插入link标签来改变样式;由于 DOM 方法是基于文档的,无法使用@import的方式插入样式。

5.权重区别(没必要看)

link引入的样式权重大于@import引入的样式(有争议)

争议:

在此我不做任何争议 没啥意义

结论:

就结论而言,强烈建议使用link标签,慎用@import方式。
这样可以避免考虑@import的语法规则和注意事项,避免产生资源文件下载顺序混乱和http请求过多的烦恼。

二、CSS部分

2.1 圣杯布局和双飞翼布局

作用:就是两边顶宽,中间自适应的三栏布局,中间栏要在放在文档流前面以优先渲染。

区别:

  • 圣杯布局,为了中间div内容不被遮挡,将中间div设置了左右padding-left和padding-right后,将左右两个div用相对布局position: relative并分别配合right和left属性,以便左右两栏div移动后不遮挡中间div。
  • 双飞翼布局,为了中间div内容不被遮挡,直接在中间div内部创建子div用于放置内容,在该子div里用margin-left和margin-right为左右两栏div留出位置。

我们看下效果图以及代码:

2.1.1圣杯布局
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;}#hd {height: 50px;background: #666;text-align: center;}#bd {/*左右栏通过添加负的margin放到正确的位置了,此段代码是为了摆正中间栏的位置*/padding: 0 200px 0 180px;height: 100px;}#middle {float: left;width: 100%;/*左栏上去到第一行*/height: 100px;background: blue;}#left {float: left;width: 180px;height: 100px;margin-left: -100%;background: #0c9;/*中间栏的位置摆正之后,左栏的位置也相应右移,通过相对定位的left恢复到正确位置*/position: relative;left: -180px;}#right {float: left;width: 200px;height: 100px;margin-left: -200px;background: #0c9;/*中间栏的位置摆正之后,右栏的位置也相应左移,通过相对定位的right恢复到正确位置*/position: relative;right: -200px;}#footer {height: 50px;background: #666;text-align: center;}</style>
</head><body><div id="hd">header</div><div id="bd"><div id="middle">middle</div><div id="left">left</div><div id="right">right</div></div><div id="footer">footer</div>
</body></html>

在这里插入图片描述

知识点:通过父亲padding给左右俩腾位置从而不会遮住middle内容

2.1.2 双飞翼布局
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;}#hd {height: 50px;background: #666;text-align: center;}#middle {float: left;width: 100%;/*左栏上去到第一行*/height: 100px;background: blue;}#left {float: left;width: 180px;height: 100px;margin-left: -100%;background: #0c9;}#right {float: left;width: 200px;height: 100px;margin-left: -200px;background: #0c9;}/*给内部div添加margin,把内容放到中间栏,其实整个背景还是100%*/#inside {margin: 0 200px 0 180px;height: 100px;}#footer {clear: both;/*记得清除浮动*/height: 50px;background: #666;text-align: center;}</style>
</head><body><div id="hd">header</div><div id="middle"><div id="inside">middle</div></div><div id="left">left</div><div id="right">right</div><div id="footer">footer</div>
</body></html>

在这里插入图片描述

知识点:middle设置margin,限制内部内容区域,从而左右俩遮的地方不会影响到middle内容

三、JS部分

3.1 递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值

思路:

  1. 生成一个长度为5的空数组arr。
  2. 生成一个(2-32)之间的随机整数rand。
  3. 把随机数rand插入到数组arr内,如果数组arr内已存在与rand相同的数字,则重新生成随机数rand并插入到arr内
  4. 最终输出一个长度为5,且内容不重复的数组arr。

代码:

 <script>var arr = []; //数组var num = 2 + Math.floor(Math.random() * 30); //生成 2-32 内的随机数var n = 0; //记录数回调次数var setArr = function (num) { //生成数组长度为5且元素的随机数在2-32间不重复的值if (arr.length === 5) { //数组长度为5便跳出循环return console.log(arr);}if (arr.every((v) => (v !== num))) { //判断数组中是否没有该值arr.push(num);}n++;setArr(Math.floor(Math.random() * (31) + 2));}setArr(num);</script>

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

相关文章

Web常见前端面试题及答案

前端技术导航大全 1、盒子模型 盒子模型包括四部分&#xff1a;内容&#xff08;content&#xff09;、填充&#xff08;padding&#xff09;、边框&#xff08;border&#xff09;、边界&#xff08;margin&#xff09; 盒子模型可以分为两种&#xff1a;IE盒子模型和W3C标准…

web前端开发面试题(七)

前端面试题第七天 一、HTML 部分 1.1 iframe框架都有哪些优缺点 在讲iframe框架之前 先聊聊iframe吧 定义&#xff1a;iframe是HTML标签&#xff0c;作用是文档中的文档&#xff0c;或者浮动的框架(FRAME)。iframe元素会创建包含另外一个文档的内联框架&#xff08;即行内框…

2020 web前端面试题及答案大全

css相关 1. 万能居中 1.margin: 0 auto;水平 2.text-align: center;水平 3.行高&#xff0c;垂直 4.表格&#xff0c;center,middle&#xff1b;水平垂直 5.display:table-cell&#xff1b;模拟表格&#xff0c;all 6.绝对定位&#xff0c;50%减自身宽高 7.绝对定位&#xff…

初级web前端面试题

文章目录 一、JS1、js基本类型和引用类型2、如何判断js数据类型3、js 拷贝4、事件处理机制5、原型和原型链6、什么是闭包7、事件循环机制&#xff08;event loop&#xff09;8、前端模块化9、es6新增特性1.let代替var关键字&#xff1b;2.const3.箭头函数4.字符串模板 &#xf…

【面试】web前端经典面试题试题及答案(持续更新)-html/css

html/ css css盒模型、BFC、css浮动、css经典布局、css兼容、css hack、html/ css基础 css盒模型BFCcss浮动css经典布局自适应css兼容css hackhtml/ css基础css3 transformcss实战图片 #mermaid-svg-vRGce0x6PUoXllsG .label{font-family:trebuchet ms, verdana, arial;font-fa…

前端面试题2021及答案

身为三本的我就是凭借这些前端面试题拿到百度京东offer的&#xff0c;前端面试题2021及答案... 此文转载自&#xff1a;https://blog.csdn.net/qq_33277654/article/details/112758362#commentBox 点进来之后你的噩梦就要来了&#xff0c;接下来你要面对上百道面试题&#xff…

web前端面试题(全)

近来看到网上格式各样的web前端求职的面试题&#xff0c;接下来我用我的经验总结了一套在面试过程中高频率问到的面试题&#xff0c;希望能帮助各位求职者在求职的过程中顺利通过&#xff0c;废话不多说&#xff0c;直接说题。。。 一、HTML5部分 1.说一下对css盒模型的理解 …

2023最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)

近期总结一一些面试题 都是企业的面试题笔记题 感觉薪资10k-15k的常见面试题 个人录制的最新Vue项目学习视频&#xff1a;B站 Vue2-第二版-后台管理系统项目实战/vueelement-ui/vue经典全套系统案例讲解_哔哩哔哩_bilibili 前端面试题视频讲解&#xff1a; 2023前端高频…

Web前端面试:这40个经典Web前端面试题面试者必看!

想成功就业Web前端工程师&#xff0c;想要能高薪就业&#xff0c;那么除了好的Web前端技能以外&#xff0c;还得有好的面试技巧&#xff0c;如果提前就了解更多企业的面试要求及面试题目&#xff0c;那么可以让我们的面试成功的几率大大的提高。今天千锋武汉Web前端培训小编为大…

最新Web前端面试题精选大全及答案

目录 HTML、CSS相关 Javascript相关 三者的异同 Vue相关 55.Vue路由懒加载&#xff08;按需加载路由&#xff09; React相关 react 生命周期函数 ******为什么虚拟 dom 会提高性能?(必考) (组件的)状态(state)和属性(props)之间有何不同 shouldComponentUpdate 是做…

50道web前端工程师面试题及答案解析,你学会了吗

简介&#xff1a;本文包含了50个实用的前端面试题及答案解析&#xff0c;涵盖了HTML、CSS、JavaScript、DOM、Ajax、MVC、模块化、ES6、SPA、Webpack、Babel、Virtual DOM、响应式设计、移动优先设计、响应式图片、CSS 预处理器、后处理器、模块化、布局、盒模型、浮动、定位、…

web前端面试题(必背面试题)

必背面试题-手写题 前端面试&#xff08;手写题&#xff09;_Z_Xshan的博客-CSDN博客 css系列 面试官&#xff1a;说说你对盒子模型的理解 一、是什么 所有元素都可以有像盒子一样的平面空间和外形 一个盒子由四部分组成&#xff1a;context ,padding,margin,border con…

指针数组与数组指针的区别

a、指针数组&#xff1a;是指一个数组里面装着指针&#xff0c;也即指针数组是一个数组&#xff1b; 定义形式:int *a[10]&#xff1b; 如图所示: b、数组指针:是指一个指向数组的指针&#xff0c;它其实还是一个指针&#xff0c;只不过是指向数组而已&#xff1b; 定义形式…

指针数组和数组指针的简单理解

图解 指针数组&#xff0c;重点在数组 数组指针&#xff0c;重点在指针 例子&#xff1a; include <iostream>using namespace std;int main() { int c[2][4]{1,2,3,4,5,6,7,8}; int *a[4]; //指针数组 int (*b)[4]; //数组指针 bc; //将数组c中元素赋给数组a for(int …

C指针数组和数组指针

一、指针数组和数组指针的内存布局 初学者总是分不出指针数组与数组指针的区别。其实很好理解&#xff1a; 指针数组&#xff1a;首先它是一个数组&#xff0c;数组的元素都是指针&#xff0c;数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。 数组指针&#…

c++数组指针和指针数组详解

指针数组&#xff1a; 指针数组可以说成是”指针的数组”&#xff0c;首先这个变量是一个数组&#xff0c;其次&#xff0c;”指针”修饰这个数组&#xff0c;意思是说这个数组的所有元素都是指针类型&#xff0c;在32位系统中&#xff0c;指针占四个字节。 数组指针&#xf…

C语言指针数组

一、指针数组概念回顾&#xff1a; 一个数组&#xff0c;其元素均为指针类型数据&#xff0c;称为指针数组。即&#xff1a;指针数组中每一个元素都是指针变量。 指针数组的定义格式: 类型标识符 *数组名(数字长度说明); 如&#xff1a; int *p[4]; //每个数组元素都可以看…

指针数组概念

一个数组&#xff0c;其元素均为指针类型数据&#xff0c;称为指针数组。 即&#xff1a;指针数组中每一个元素都是指针变量。 指针数组的定义格式: 类型标识符 *数组名(数字长度说明); 如&#xff1a; int *p[4]; //每个数组元素都可以看成是一个指针变量&#xff0c;都可…

数组指针与指针数组

一、数组指针 数组指针&#xff0c;即是指向数组的指针&#xff0c;数组指针中存放的应该是数组的地址。 1. 数组名的区分 数组名&#xff1a;数组名就是数组的最大存储单元的首地址&#xff0c;指向第一个元素&#xff0c;所以数组名的类型为元素类型的指针 &数组名[0]&…

c++指针数组(入门)

指针数组的本质是数组&#xff0c;只是每个数组的元素为指针 32位平台&#xff1a; char*arr1[4]; int *arr2[4]; short *arr3[4];sizeof(arr1)168; sizeof(arr2)168; sizeof(arr3)168; 8.4.1 数值的指针数组 int *arr[4]; 指针数组 int *arr[4]{&num1,&num2,&…