css 样式新手教程

1、vwvh 单位详解

视口是用户在网页中看到的区域,不包括浏览器的工具栏、地址栏等界面元素。

基本概念:

  • vw:视口宽度的百分比(Viewport Width)

    • 100vw = 视口宽度的 100%

    • 50vw = 视口宽度的 50%

    • 1vw = 视口宽度的 1%

  • vh:视口高度的百分比(Viewport Height)

    • 100vh = 视口高度的 100%

    • 75vh = 视口高度的 75%

    • 1vh = 视口高度的 1%

与百分比(%)的区别:

复制代码
/* 使用 % - 相对于父元素 */
.container {
  width: 100%;  /* 父元素宽度的100% */
}

/* 使用 vw/vh - 相对于视口 */
.container {
  width: 100vw;  /* 视口宽度的100% */
  height: 100vh; /* 视口高度的100% */
}

关键区别:

  • % 继承父元素的尺寸

  • vw/vh 直接相对于浏览器视口

2、.flex-row CSS 类详细解释

这个 CSS 类将一个元素转换为 Flex 容器 ,并将其子元素水平排列

display: flex;

  • 将元素设置为 Flex 容器

  • 使所有直接子元素成为 Flex 项目

  • 开启 Flexbox 布局模式

flex-direction: row;

  • 设置主轴方向为 水平方向(从左到右)

  • 这是 Flexbox 的默认方向,所以实际上可以不写

  • 但显式声明可以提高代码可读性

主轴和交叉轴概念:

复制代码
flex-direction: row; 时的布局:
主轴 (Main Axis):水平方向 ←→
交叉轴 (Cross Axis):垂直方向 ↑↓

┌───────────────────────────────────┐
│ 项目1    项目2    项目3            │ ← 水平排列
└───────────────────────────────────┘

其他 flex-direction 选项对比:

css 复制代码
.flex-row-reverse {
  display: flex;
  flex-direction: row-reverse; /* 从右到左 */
  /* [项目3] [项目2] [项目1] */
}

.flex-column {
  display: flex;
  flex-direction: column; /* 从上到下 */
  /* [项目1]
     [项目2]
     [项目3] */
}

.flex-column-reverse {
  display: flex;
  flex-direction: column-reverse; /* 从下到上 */
  /* [项目3]
     [项目2]
     [项目1] */
}

对齐方式(常用组合)

css 复制代码
.flex-row {
  display: flex;
  flex-direction: row;
  
  /* 主轴对齐(水平方向) */
  justify-content: flex-start;    /* 默认:左对齐 */
  justify-content: center;        /* 水平居中 */
  justify-content: flex-end;      /* 右对齐 */
  justify-content: space-between; /* 两端对齐,项目间等距 */
  justify-content: space-around;  /* 项目两侧等距 */
  justify-content: space-evenly;  /* 完全等距 */
  
  /* 交叉轴对齐(垂直方向) */
  align-items: stretch;     /* 默认:拉伸填满 */
  align-items: flex-start;  /* 顶部对齐 */
  align-items: center;      /* 垂直居中 */
  align-items: flex-end;    /* 底部对齐 */
  align-items: baseline;    /* 基线对齐 */
}

/* 示例:水平垂直居中 */
.flex-center {
  display: flex;
  flex-direction: row;
  justify-content: center;  /* 水平居中 */
  align-items: center;      /* 垂直居中 */
}

换行控制

css 复制代码
.flex-row-wrap {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap; /* 允许换行 */
  /* 当空间不足时,项目会自动换到下一行 */
}

.flex-row-nowrap {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap; /* 默认:不换行 */
  /* 项目会压缩或溢出 */
}

/* 简写方式 */
.flex-row {
  display: flex;
  flex-flow: row wrap; /* flex-direction + flex-wrap */
}

间距和间隙

css 复制代码
.flex-row {
  display: flex;
  flex-direction: row;
  
  gap: 10px; /* 项目之间的间隙 */
  /* 或者分别设置 */
  row-gap: 10px;    /* 行间隙 */
  column-gap: 20px; /* 列间隙 */
}

Flex 项目的相关属性:

css 复制代码
.item {
  flex-grow: 1;      /* 放大比例(默认0) */
  flex-shrink: 1;    /* 缩小比例(默认1) */
  flex-basis: 100px; /* 基础尺寸 */
  
  /* 简写 */
  flex: 1; /* 相当于 flex: 1 1 0% */
  flex: none; /* 相当于 flex: 0 0 auto */
  
  /* 单独对齐 */
  align-self: center; /* 覆盖容器的 align-items */
  
  /* 排序 */
  order: 1; /* 数值越小,排列越靠前 */
}

浏览器支持:

css 复制代码
.flex-row {
  display: -webkit-box;      /* OLD - iOS 6-, Safari 3.1-6 */
  display: -moz-box;         /* OLD - Firefox 19- */
  display: -ms-flexbox;      /* TWEENER - IE 10 */
  display: -webkit-flex;     /* NEW - Chrome */
  display: flex;             /* NEW, Spec - Opera 12.1, Firefox 20+ */
  
  -webkit-box-direction: normal;
  -webkit-box-orient: horizontal;
  -webkit-flex-direction: row;
  -moz-flex-direction: row;
  -ms-flex-direction: row;
  flex-direction: row;
}
相关推荐
代码匠心4 分钟前
AI 自动编程:一句话设计高颜值博客
前端·ai·ai编程·claude
_AaronWong1 小时前
Electron 实现仿豆包划词取词功能:从 AI 生成到落地踩坑记
前端·javascript·vue.js
cxxcode1 小时前
I/O 多路复用:从浏览器到 Linux 内核
前端
用户5433081441941 小时前
AI 时代,前端逆向的门槛已经低到离谱 — 以 Upwork 为例
前端
JarvanMo2 小时前
Flutter 版本的 material_ui 已经上架 pub.dev 啦!快来抢先体验吧。
前端
恋猫de小郭2 小时前
AI 可以让 WIFI 实现监控室内人体位置和姿态,无需摄像头?
前端·人工智能·ai编程
哀木2 小时前
给自己整一个 claude code,解锁编程新姿势
前端
程序员鱼皮2 小时前
GitHub 关注突破 2w,我总结了 10 个涨星涨粉技巧!
前端·后端·github
UrbanJazzerati2 小时前
Vue3 父子组件通信完全指南
前端·面试
是一碗螺丝粉2 小时前
5分钟上手LangChain.js:用DeepSeek给你的App加上AI能力
前端·人工智能·langchain