从模仿到掌握:尝试一下Native CSS手写一个好看的按钮

从模仿到掌握:尝试一下Native CSS手写一个好看的按钮

笔者前段时间正在学习Native CSS,刚好看到有一个按钮的CSS写的真不错,打算借过来抄抄,这是我第一次思考和描摹一个按钮的样式。,顺便理解每一个属性的作用。


从最简单的按钮开始

HTML中放置一个按钮采用如下的标签

html 复制代码
<button>Click Me</button>

然后在 CSS 里定义:

css 复制代码
button {
  padding: 10px 20px;
  border: none;
  border-radius: 8px;
  cursor: pointer;
}

这是最经典的原生开发中对按钮上样式表的办法,属性的介绍笔者放到下面。

  • padding 控制文字和边框的距离,直接决定按钮的大小和舒适度;
  • border-radius 决定边角的圆润程度;
  • cursor: pointer 让鼠标悬停时变成手型,给用户"可点击"的反馈;
  • border: none 去掉浏览器默认的丑边框。

到这里,按钮的形状就已经"像样"了。

上颜色

下一步是上色,上色的重要目的是强调视觉重点,调整字体让字体加粗让按钮更有存在感。

css 复制代码
background-color: #42b983;
color: white;
font-size: 16px;
font-weight: bold;

让交互更自然:过渡动画

css 复制代码
transition: background-color 0.3s ease, transform 0.1s ease;

这个属性的作用是让按钮在"变化"时更加平滑。比如,当后来加上悬停(hover)或点击(active)效果时,颜色和位置不会突兀地跳变,而是柔和地过渡。这是CSS 的"动效感"的来源


Hover属性设置

当用户的鼠标移上去时,按钮轻轻变深、阴影变大------这样就能塑造按钮浮起来的感觉

css 复制代码
button:hover {
  background-color: #369b74;
  box-shadow: 0 6px 8px rgba(0, 0, 0, 0.15);
}

Active:点击的物理反馈

按下按钮时,让它微微下沉一点点,这样我们就能让按钮看起来像真的被按下去:

css 复制代码
button:active {
  transform: translateY(1px);
  box-shadow: 0 3px 5px rgba(0, 0, 0, 0.1);
}

完整的成品代码

css 复制代码
button {
  padding: 10px 20px;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  background-color: #42b983;
  color: white;
  font-size: 16px;
  font-weight: bold;
  transition: background-color 0.3s ease, transform 0.1s ease;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

button:hover {
  background-color: #369b74;
  box-shadow: 0 6px 8px rgba(0, 0, 0, 0.15);
}

button:active {
  transform: translateY(1px);
  box-shadow: 0 3px 5px rgba(0, 0, 0, 0.1);
}

按钮CSS清单表

Step 1:基础形状

  • 目标:用 padding、border、border-radius、cursor 做一个基础按钮
  • 操作步骤
    1. 创建 button,设置文字"点击我"
    2. 调整 padding 到 10px 20px
    3. 设置 border: none
    4. 设置 border-radius 为 0、8px、50px 三种,观察变化
    5. 设置 cursor: pointer
  • 输出:按钮大小合理,边角圆润,鼠标悬停显示手型

Step 2:颜色与字体

  • 目标:让按钮有视觉重点
  • 操作步骤
    1. 设置背景色 background-color 为绿色或你喜欢的主色
    2. 设置字体颜色 color: white
    3. 调整 font-sizefont-weight
  • 输出:按钮清晰可见,文字大小合适

Step 3:平滑过渡

  • 目标:按钮交互不生硬

  • 操作步骤

    1. 给按钮加上 transition

      css 复制代码
      transition: background-color 0.3s ease, transform 0.1s ease;
    2. 在 hover 和 active 里改变颜色和位置

  • 输出:悬停和点击有平滑动画


Step 4:悬停效果

  • 目标:鼠标悬停时按钮有浮起感
  • 操作步骤
    1. button:hover 中设置背景色稍深
    2. 增加 box-shadow 让按钮看起来浮起来
  • 输出:悬停时颜色变深,阴影变大

Step 5:点击效果

  • 目标:点击按钮有物理反馈
  • 操作步骤
    1. button:active 中设置 transform: translateY(1px)
    2. 调整 box-shadow 变小
  • 输出:点击按钮时轻微下沉,阴影缩小

Step 6:自由组合挑战

  • 目标:自己设计不同风格按钮
  • 操作步骤
    1. 调整 padding、radius、颜色、阴影
    2. 改变 hover/active 效果
    3. 尝试不同过渡速度
  • 输出:做出至少三种风格按钮(圆角大/小,颜色明/暗,阴影浮/沉)
相关推荐
时间的情敌6 小时前
Vue3+CSS 实现3D卡片动画
前端·css·3d
小九今天不码代码6 小时前
CSS技巧:使用 box-shadow + outline 实现多重边框与圆角阴影完美结合
css·outline·box-shadow·多重边框·圆角边框·前端视觉效果·css3技巧
吃饺子不吃馅6 小时前
Canvas 如何渲染富文本、图片、SVG 及其 Path 路径?
前端·svg·canvas
弈风千秋万古愁6 小时前
【PID】连续PID和数字PID chapter1(补充) 学习笔记
笔记·学习·算法·matlab
CodeCraft Studio6 小时前
MPP文件处理组件Aspose.Tasks教程:使用Python在Excel中打开MPP文件
python·ui·excel·csv·mpp·aspose·ms project
王六岁6 小时前
🐍 前端开发 0 基础学 Python 入门指南:f-strings 篇
前端·javascript·python
一道雷6 小时前
🚀 Vue Router 插件系统:让路由扩展变得简单优雅
前端·javascript·vue.js
辣辣y6 小时前
Tailwind CSS 使用指南
前端·css