前端学习备忘记录

HTML技巧

使用语义化标签

例如,<header><nav><section><footer>等语义化标签,可以让页面结构更清晰,有利于搜索引擎优化。

自定义数据属性

可以使用data-前缀的自定义属性,存储额外的信息。例如:<div data-role="user" data-id="123"></div>,然后可以通过JavaScript获取这些属性。

<div data-role="user" data-id="123"></div>
document.querySelector('div').getAttribute('data-id'); // 获取data-id属性的值

CSS技巧

使用CSS变量

可以在根元素中定义变量,然后在页面中重复使用。例如::root { --main-color: #333; },然后在其他地方使用color: var(--main-color);

CSS选择器组合

可以组合使用选择器来精确选择元素。例如,div.class1.class2选择同时具有class1和class2类的div元素;div > p选择div元素下的直接子元素p。

:root { --main-color: #333; }
.container div.class1.class2 { color: var(--main-color); }

div布局技巧

可以使用flex布局来创建灵活的div布局。例如,设置display: flex;可以让div内的子元素水平排列,并且可以通过justify-contentalign-items属性来控制子元素的对齐方式。

还可以使用grid布局来创建复杂的网格布局。通过设置display: grid;和定义网格的行和列,可以精确地控制元素的位置。

.flex-container { display: flex; justify-content: space-between; align-items: center; }
.grid-container { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: auto auto; }

JavaScript技巧

事件委托

可以将事件监听器绑定到父元素上,利用事件冒泡的特性来处理子元素的事件。这样可以提高性能,尤其是在有大量子元素时。

闭包

闭包可以捕获外部函数的局部变量,创建私有的作用域。例如,可以使用闭包来创建计数器。

document.getElementById('parent').addEventListener('click', function(event) { if(event.target.tagName === 'LI') { // 处理li元素的点击事件 } });
function createCounter() { let count = 0; return function() { count++; console.log(count); } }
const counter = createCounter(); counter(); // 输出1 counter(); // 输出2