游客发表
真正把网页当成作品而不是作业,是大学端心得体从大二那个凌晨三点开始的。当时我对着自己写的大学端心得体<div>嵌套了七层、用绝对定位硬怼出来的大学端心得体“响应式”页面,在手机模拟器上彻底崩了——导航栏叠在轮播图上,大学端心得体文字挤成蚂蚁窝。大学端心得体那一刻我才明白,大学端心得体前端不是大学端心得体把设计图翻译成代码,而是大学端心得体跟浏览器、设备、大学端心得体网络、大学端心得体用户习惯打一场永远猜不到结局的大学端心得体游击战。
刚接触HTML和CSS时,大学端心得体我沉迷于“像素级还原”。大学端心得体老师给了个电商首页的大学端心得体PSD,我拿着取色器一个个吸颜色,连阴影的模糊半径都要精确到0.1px。结果呢?在投影仪上展示时,旁边同学小声说“你这卡片间距怎么忽宽忽窄”。后来才懂,像素完美是伪命题——不同屏幕的DPR、字体渲染差异、甚至操作系统滚动条宽度都会让布局偏移。现在我会用clamp()和minmax()写弹性间距,留出呼吸感,比死磕数值舒服多了。
JavaScript给我上的第一课叫“别相信用户的输入”。课程项目里做了个待办清单,本地测试时增删改查丝滑流畅。舍友拿去用,输入了“<script>alert('xss')</script>”当任务名,页面直接弹窗。我盯着屏幕愣了五秒——原来innerHTML这么危险。后来改用textContent,又加了简单的转义函数。这事让我养成了习惯:任何来自DOM的值,先当它是脏数据。
框架选择上我走过弯路。Vue和React的文档各啃了两周,跟着视频敲了三个项目,结果面试时被问“为什么用虚拟DOM”还是支支吾吾。真正开窍是在一次性能优化里:列表渲染两千条数据卡成PPT,用key加上v-memo后流畅了,我才回头去读Diff算法。现在觉得,“先跑起来再想为什么”和“先搞懂原理再动手”得交替着来,光看文档不动手是纸上谈兵,光抄代码不思考是重复劳动。
响应式设计这块,我踩过最蠢的坑是只写@media (max-width: 768px)。直到用平板竖屏打开自己的页面,发现它既不符合桌面布局也不符合手机布局——因为平板宽度正好卡在中间。后来改用移动优先,先写小屏样式,再用min-width逐级覆盖。还学会了用container query让组件根据父容器宽度自适应,而不是傻盯着视口。这感觉就像从“给所有人做同一件衣服”变成了“量体裁衣”。
工具链的进化速度让人又爱又恨。大一时用Dreamweaver拖拽生成表格布局,大二换VSCode装Live Server,大三开始折腾Webpack配置。有次为了配sass-loader和postcss的版本兼容,折腾到凌晨两点,最后发现是Node版本太新。现在用Vite,npm create vite@latest几秒钟就搭好环境,反而有点怀念当初手动配webpack.config.js时那种“每一步都看得见”的踏实感。技术栈越方便,底层理解越容易断层——这是我最近在补TypeScript类型体操时的深刻体会。
团队协作让我改掉了“代码能跑就行”的毛病。Git提交信息从“改了一下”变成“fix: 修复移动端导航栏溢出”,Code Review时被指出!important滥用,才开始系统学习CSS层叠上下文。最有意思的是和设计同学吵架——她说“这个按钮要呼吸感”,我说“你说的是box-shadow还是animation”,最后一起翻Material Design规范,发现她想要的是transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1)。前端果然是离用户最近也离设计最近的岗位。
现在回头看,那些调不对的居中、理不清的this指向、配不好的跨域代理,都成了肌肉记忆。前端像一扇旋转门,每转一圈都以为到了终点,结果发现只是下一圈的起点。但至少现在我敢说:给我一个浏览器,我能让任何设计稿在屏幕上活过来,并且活得体面。至于明天又出什么新框架——管它呢,先把今天的flex布局调舒服再说。
友情链接