WyOJ 的前端实在是太丑了,不得不好好重新设计一下。于是我不得不去学前端。其实我也挺想学的,感觉设计这种东西应该很有意思。
我本来从来没有记笔记的习惯的,但是感觉前端这些东西实在是太杂了,不记根本跟没学差不多。所以记一下。
我问了问 DS 有啥需要学的,DS 说:
一、CSS 基础核心(必须滚瓜烂熟)
- 选择器与优先级
基础选择器:标签、类、ID、通配符、属性选择器。
关系选择器:后代、子代、相邻兄弟、通用兄弟。
伪类与伪元素::hover、:focus、:nth-child()、::before、::after。
优先级计算:内联 > ID > 类/伪类 > 标签,以及 !important 的影响。
- 盒模型
组成:content、padding、border、margin。
两种盒模型:box-sizing: content-box(默认)与 border-box(推荐,让宽度包含 padding 和 border)。
边距折叠:相邻块级元素的上下外边距会合并。
- 常用属性
文本与字体:font-family、font-size、font-weight、line-height、text-align、color。
背景与边框:background-color、background-image、border、border-radius。
尺寸与间距:width、height、padding、margin。
二、布局核心(如何摆放元素)
- 普通流(Normal Flow)
块级元素独占一行,行内元素在一行内排列。
通过 display 改变元素类型:block、inline、inline-block。
- 浮动(Float)
让元素向左或向右浮动,文字环绕。需要清除浮动(clearfix)避免父容器高度塌陷。
- 定位(Position)
static:默认。
relative:相对自身原位置偏移,不脱离文档流。
absolute:脱离文档流,相对于最近的非 static 祖先定位。
fixed:相对于视口定位。
sticky:粘性定位,在滚动到阈值时表现像 fixed。
- Flexbox(一维布局)
核心概念:容器(display: flex)、项目、主轴、交叉轴。
常用属性:
容器:flex-direction、flex-wrap、justify-content、align-items、align-content。
项目:flex-grow、flex-shrink、flex-basis、align-self。
适用场景:导航栏、卡片列表、表单对齐、垂直居中。
- Grid(二维布局)
核心概念:容器(display: grid)、行、列、单元格、网格线。
常用属性:
容器:grid-template-columns、grid-template-rows、gap、grid-template-areas。
项目:grid-column、grid-row、grid-area。
适用场景:复杂页面布局、图片墙、仪表盘。
- 响应式设计
媒体查询:@media (max-width: 768px) { ... }。
视口单位:vw、vh、vmin、vmax。
弹性单位:rem(相对于根元素字体)、em(相对于父元素字体)。
响应式图片:srcset、sizes、picture 元素。
容器查询(进阶):根据父容器大小调整内部样式。
三、设计转化:从脑中的设计到代码 1. 视觉分解法
看到一个设计(或自己脑中的画面),按以下顺序拆解:
大结构:整个页面分几块?头部、主体、底部?主体是几列?用 Grid 还是 Flex?
模块划分:每个区块内部有哪些组件?如卡片、列表、表单。
细节属性:每个组件的颜色、字体、间距、边框、阴影。
- 建立“布局思维”
先结构后样式:先用 HTML 搭建骨架(只考虑标签语义和嵌套),再写 CSS。
从外到内:先定好大容器的大小和位置,再处理内部元素。
利用浏览器调试:随时在开发者工具里修改样式,实时看效果,边试边调。
- 常见设计模式的 CSS 套路
卡片:border-radius、box-shadow、padding、display: flex(垂直或水平排列内部)。
导航栏:display: flex,justify-content: space-between,子项 padding。
表单:display: grid 或 flex 对齐标签和输入框。
列表:list-style: none,padding,border-bottom 分隔。
按钮:padding、border-radius、background-color、:hover 变色。











鲁ICP备2025150228号