本文详细介绍了前端基础知识,包括HTML、CSS、JavaScript等核心概念和技术,旨在帮助读者巩固前端技术栈。此外,文章还提供了前端大厂面试真题和面试技巧,助力读者顺利通过面试。
HTML(HyperText Markup Language)是用于创建网页的标准标记语言。HTML文档由元素组成,元素又由标签构成。标签分为开始标签和结束标签,使用尖括号包围。例如,<html>
是开始标签,</html>
是结束标签。
一个HTML文档的基础结构如下:
<!DOCTYPE html> <html> <head> <title>网页标题</title> </head> <body> <h1>这是页面标题</h1> <p>这是页面内容。</p> </body> </html>
<head>
:包含文档的元数据,如<title>
、<meta>
标签。<body>
:包含页面的所有内容,如文本、图像、视频等。<div>
:用于布局,将内容组织到一个块级元素中。<span>
:用于在行内文本中设置样式。<a>
:用于创建链接,格式为<a href="链接地址">文本</a>
。<img>
:用于插入图像,格式为<img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="图片地址" alt="替代文本">
。例如,创建一个简单的HTML页面,包含标题和段落:
<!DOCTYPE html> <html> <head> <title>我的网页</title> </head> <body> <h1>欢迎来到我的网页</h1> <p>这里是网页内容。</p> </body> </html>
CSS(层叠样式表)用于控制网页的样式和布局。CSS可以添加到HTML文档中,通过选择器指定元素的样式。
element
、.class
、#id
等。color
、font-size
、background-color
等。color: red
、font-size: 16px
、background-color: #fff
等。body { background-color: #f0f0f0; font-family: Arial, sans-serif; } h1 { color: #333; } p { font-size: 18px; }
将上述CSS样式应用到HTML页面中,可以通过<link>
标签引入外部CSS文件。
<!DOCTYPE html> <html> <head> <title>我的网页</title> <link rel="stylesheet" href="styles.css"> </head> <body> <h1>欢迎来到我的网页</h1> <p>这里是网页内容。</p> </body> </html>
JavaScript是一种广泛使用的脚本语言,用于给网页添加交互性。JavaScript代码可以嵌入在HTML页面中,也可以通过<script>
标签引入外部文件。
var
、let
、const
声明。if
、else
、switch
等。for
、while
、do...while
等。<!DOCTYPE html> <html> <head> <title>我的网页</title> </head> <body> <p id="demo">点击按钮来改变内容。</p> <button onclick="changeContent()">点击我</button> <script> function changeContent() { document.getElementById("demo").innerHTML = "内容已改变。"; } </script> </body> </html>
var name = "张三"; // 字符串 let age = 28; // 数字 const PI = 3.14; // 常量
冒泡排序:
function bubbleSort(arr) { let len = arr.length; for (let i = 0; i < len - 1; i++) { for (let j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j + 1]) { [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; } } } return arr; } // 测试冒泡排序 let testArray = [5, 3, 8, 1, 2]; console.log(bubbleSort(testArray)); // [1, 2, 3, 5, 8]
快速排序:
function quickSort(arr, left = 0, right = arr.length - 1) { if (left < right) { let pivotIndex = partition(arr, left, right); quickSort(arr, left, pivotIndex - 1); quickSort(arr, pivotIndex + 1, right); } return arr; } function partition(arr, left, right) { let pivot = arr[right]; let i = left - 1; for (let j = left; j < right; j++) { if (arr[j] <= pivot) { i++; [arr[i], arr[j]] = [arr[j], arr[i]]; } } [arr[i + 1], arr[right]] = [arr[right], arr[i + 1]]; return i + 1; } // 测试快速排序 let testArray = [5, 3, 8, 1, 2]; console.log(quickSort(testArray)); // [1, 2, 3, 5, 8]
不同浏览器对CSS的解析可能存在差异,需要使用浏览器前缀来解决。
.box { width: 100px; height: 100px; background-color: red; /* 兼容性处理 */ -webkit-border-radius: 10px; /* Safari 和 Chrome */ -moz-border-radius: 10px; /* Firefox */ border-radius: 10px; /* 标准 */ }
不同浏览器对JavaScript的支持程度可能不同,需要进行兼容性处理。
if (!Array.prototype.includes) { Array.prototype.includes = function(searchElement) { return this.indexOf(searchElement) !== -1; }; }
浏览器对DOM的支持存在差异,需要进行兼容性处理。
<!DOCTYPE html> <html> <head> <title>兼容性示例</title> <style> .box { width: 100px; height: 100px; background-color: red; /* 兼容性处理 */ -webkit-border-radius: 10px; /* Safari 和 Chrome */ -moz-border-radius: 10px; /* Firefox */ border-radius: 10px; /* 标准 */ } </style> </head> <body> <div class="box"></div> <script> // JavaScript 兼容性处理示例 if (!Array.prototype.includes) { Array.prototype.includes = function(searchElement) { return this.indexOf(searchElement) !== -1; }; } </script> </body> </html>
document.getElementById
、document.querySelector
等。innerHTML
、textContent
、style
等。document.createElement
、element.appendChild
、element.removeChild
等。element.addEventListener
。element.removeEventListener
。<!DOCTYPE html> <html> <head> <title>DOM 操作与事件处理</title> <style> .box { width: 100px; height: 100px; background-color: red; } </style> </head> <body> <div id="box" class="box"></div> <script> // 获取元素 var box = document.getElementById('box'); // 修改元素 box.style.backgroundColor = 'blue'; // 创建新元素 var newDiv = document.createElement('div'); newDiv.className = 'box'; box.appendChild(newDiv); // 添加事件 box.addEventListener('click', function() { box.style.backgroundColor = 'green'; }); // 移除事件 box.removeEventListener('click', function() { box.style.backgroundColor = 'green'; }); </script> </body> </html>
示例:优化页面加载速度
<!DOCTYPE html> <html> <head> <title>优化页面加载速度</title> <link rel="stylesheet" href="styles.min.css"> </head> <body> <img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="small-image.jpg" alt="优化过的图片"> <script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="scripts.min.js"></script> </body> </html>
示例:使用React构建一个简单的组件
import React from 'react'; function App() { return ( <div> <h1>欢迎来到我的React应用</h1> <p>这是一个简单的React组件。</p> </div> ); } export default App;
console.log
输出变量值,使用断点调试。示例:使用Chrome DevTools进行性能分析
// 示例代码 function analyzePerformance() { // 使用Chrome DevTools进行性能分析 console.time('performanceTest'); // 执行性能测试代码 console.timeEnd('performanceTest'); }
示例:使用Chrome DevTools调试JavaScript代码
function debugCode() { // 使用console.log输出变量值 console.log('函数开始执行'); let num = 10; console.log('num:', num); }
通过以上详细介绍,希望你能更好地准备前端大厂的面试,并在实际工作中应用这些知识和技巧。