从模仿到掌握:尝试一下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. 尝试不同过渡速度
  • 输出:做出至少三种风格按钮(圆角大/小,颜色明/暗,阴影浮/沉)
相关推荐
J***Q29241 分钟前
Vue数据可视化
前端·vue.js·信息可视化
roman_日积跬步-终至千里2 小时前
【强化学习基础(2)】被动强化学习:学习价值函数
学习
ttod_qzstudio2 小时前
深入理解 Vue 3 的 h 函数:构建动态 UI 的利器
前端·vue.js
芳草萋萋鹦鹉洲哦2 小时前
【elemen/js】阻塞UI线程导致的开关卡顿如何优化
开发语言·javascript·ui
_大龄3 小时前
前端解析excel
前端·excel
逢考必过@k3 小时前
6级550学习ing
学习
一叶茶3 小时前
移动端平板打开的三种模式。
前端·javascript
前端大卫3 小时前
一文搞懂 Webpack 分包:async、initial 与 all 的区别【附源码】
前端
Want5953 小时前
HTML音乐圣诞树
前端·html
老前端的功夫4 小时前
前端浏览器缓存深度解析:从网络请求到极致性能优化
前端·javascript·网络·缓存·性能优化