0

0

如何通过css框架Bulma制作按钮和表单

P粉602998670

P粉602998670

发布时间:2025-09-19 12:13:01

|

679人浏览过

|

来源于php中文网

原创

如何通过css框架bulma制作按钮和表单

Bulma 框架通过其直观的类名系统,让制作美观且响应式的按钮和表单变得异常简单。你只需要引入 Bulma 的 CSS 文件,然后利用它预设的类名,就能快速构建出符合现代网页设计标准的交互元素,而无需编写大量的自定义样式代码。它的模块化设计意味着你可以按需组合不同的类,实现高度定制化。

解决方案

使用 Bulma 制作按钮和表单的核心在于理解其组件化的类名系统。通过组合不同的修饰符类,你可以快速实现多样化的样式和功能。对于按钮,主要使用

.button
基类配合颜色、大小和状态修饰符。对于表单,则围绕
.field
.control
和具体的输入元素(如
.input
.textarea
.select
)及其修饰符来构建。

Bulma按钮:从基础到高级定制

聊聊 Bulma 的按钮,其实它上手特别快。我个人觉得 Bulma 的按钮设计哲学很棒,即插即用,但又留足了定制空间。最基础的按钮就是给一个

button
a
标签加上
.button
类。

<button class="button">普通按钮</button>
<a class="button">链接按钮</a>

要给按钮上色,Bulma 提供了一系列语义化的颜色类,比如

.is-primary
(主色)、
.is-link
(链接色)、
.is-info
(信息色)、
.is-success
(成功色)、
.is-warning
(警告色)、
.is-danger
(危险色)。这些颜色类让你的按钮一眼就能看出它的意图,这在设计上真的帮了大忙。

立即学习前端免费学习笔记(深入)”;

<button class="button is-primary">主要操作</button>
<button class="button is-link">跳转链接</button>
<button class="button is-success">保存</button>

大小方面,Bulma 也考虑得很周全,从

.is-small
.is-large
,有四种尺寸可选。我通常会根据按钮在页面中的重要程度和布局空间来选择尺寸,比如导航栏里用小按钮,提交表单可能用中等或大按钮。

<button class="button is-small">小按钮</button>
<button class="button is-normal">正常按钮</button>
<button class="button is-medium">中按钮</button>
<button class="button is-large">大按钮</button>

除了这些,还有一些修饰符能改变按钮的视觉风格或状态。

.is-outlined
让按钮变成边框样式,
.is-inverted
则会反转颜色,
.is-loading
会自动添加一个加载动画,这在异步操作时特别有用。
.is-static
则是让按钮看起来像按钮,但不可点击。

<button class="button is-primary is-outlined">边框按钮</button>
<button class="button is-link is-inverted">反色按钮</button>
<button class="button is-primary is-loading">加载中...</button>
<button class="button is-static">静态按钮</button>

有时候,按钮需要和图标一起出现,Bulma 的

.icon
组件能很好地融入按钮内部,让按钮表达更清晰。

<button class="button is-success">
  <span class="icon is-small">
    <i class="fas fa-check"></i>
  </span>
  <span>保存</span>
</button>

Bulma表单:构建用户友好的输入界面

构建用户友好的表单,是任何 Web 应用都绕不开的。说实话,刚开始用 Bulma 的表单,觉得

.field
.control
有点多余,但用久了才发现,这种结构化其实让表单的可维护性大大提升。Bulma 的表单元素都包裹在
.field
.control
容器中,这使得布局和样式管理变得非常一致。

一个基本的文本输入框通常是这样:

<div class="field">
  <label class="label">姓名</label>
  <div class="control">
    <input class="input" type="text" placeholder="请输入您的姓名">
  </div>
</div>

.label
类用来定义标签,
.input
类则直接作用于
input
标签。对于多行文本,用
textarea
标签配合
.textarea
类。

<div class="field">
  <label class="label">留言</label>
  <div class="control">
    <textarea class="textarea" placeholder="您的宝贵意见..."></textarea>
  </div>
</div>

下拉选择框 (

select
) 稍微有点特殊,它需要一个
.select
类包裹
select
标签本身,再套在
.control
里面。我遇到过一个坑,就是想给
select
加个图标,结果直接套用
input
的思路就错了,
select
需要一个特定的
control has-icons-left
结构。

<div class="field">
  <label class="label">选择</label>
  <div class="control">
    <div class="select">
      <select>
        <option>选项一</option>
        <option>选项二</option>
      </select>
    </div>
  </div>
</div>

和按钮类似,表单元素也有状态和大小修饰符。例如,

.is-success
.is-warning
.is-danger
可以用来显示验证结果,
.is-small
.is-medium
.is-large
改变尺寸。

腾讯交互翻译
腾讯交互翻译

腾讯AI Lab发布的一款AI辅助翻译产品

下载
<div class="field">
  <label class="label">邮箱</label>
  <div class="control has-icons-left has-icons-right">
    <input class="input is-danger" type="email" placeholder="Email input" value="hello@">
    <span class="icon is-small is-left">
      <i class="fas fa-envelope"></i>
    </span>
    <span class="icon is-small is-right">
      <i class="fas fa-exclamation-triangle"></i>
    </span>
  </div>
  <p class="help is-danger">这个邮箱地址是无效的</p>
</div>

Bulma 还支持水平布局的表单,通过在

.field
上添加
.is-horizontal
类,然后使用
.field-label
.field-body
来组织标签和控制区域,这在一些后台管理界面里很常见。

<div class="field is-horizontal">
  <div class="field-label is-normal">
    <label class="label">主题</label>
  </div>
  <div class="field-body">
    <div class="field">
      <p class="control">
        <input class="input" type="text" placeholder="输入主题">
      </p>
    </div>
  </div>
</div>

提升用户体验:Bulma按钮与表单的实战技巧与常见陷阱

在实际项目中,光会基础用法还不够,一些实战技巧能让你的 Bulma 按钮和表单更上一层楼,同时也要警惕一些常见的“坑”。

一个很实用的技巧是利用 Bulma 的

has-icons-left
has-icons-right
类给输入框添加图标。这不仅能美化界面,还能直观地告诉用户这个输入框是用来干什么的,比如一个邮箱输入框旁边放个信封图标。但要注意,图标需要放在
span.icon
里面,并且
input
标签需要放在
div.control
里面,同时
div.control
也要有相应的
has-icons-left/right
类。我刚开始用的时候就经常忘记给
control
添加这些类,导致图标错位。

<div class="field">
  <p class="control has-icons-left">
    <input class="input" type="password" placeholder="密码">
    <span class="icon is-small is-left">
      <i class="fas fa-lock"></i>
    </span>
  </p>
</div>

另一个提升用户体验的点是表单验证反馈。Bulma 提供了

.is-success
.is-warning
.is-danger
这些修饰符,配合
.help
类,可以清晰地展示验证信息。这比弹出
alert
框要优雅得多。

<div class="field">
  <label class="label">用户名</label>
  <div class="control">
    <input class="input is-success" type="text" placeholder="Text input" value="zhangsan">
  </div>
  <p class="help is-success">这个用户名可用</p>
</div>

至于常见陷阱,除了前面提到的

select
标签和图标的组合方式,还有一个是关于
checkbox
radio
。Bulma 默认对它们没有太多样式,你需要手动添加
.checkbox
.radio
类,并且它们通常需要包裹在一个
label
标签里,而不是直接作用于
input

<div class="field">
  <div class="control">
    <label class="checkbox">
      <input type="checkbox">
      记住我
    </label>
  </div>
</div>

最后,不要忘记可访问性。虽然 Bulma 已经做了很多基础工作,但我们作为开发者,仍需要确保为所有表单元素提供明确的

label
,并为复杂的交互提供
aria
属性,让使用辅助技术的用户也能顺畅地操作。

Bulma按钮与表单的自定义与扩展:超越默认样式

虽然 Bulma 默认的样式已经很漂亮了,但总有些时候,我们需要更个性化的设计来匹配品牌调性,或者实现一些框架没有直接提供的特殊效果。这时候,我们就需要对 Bulma 进行自定义和扩展了。

最直接的自定义方式是利用 Bulma 基于 Sass 构建的优势。如果你在项目中使用了 Sass,那么你可以通过覆盖 Bulma 的 Sass 变量来轻松修改颜色、字体、边框圆角等几乎所有样式。例如,我想把主色调改成我公司的主题蓝,我只需要在我的 Sass 文件中,在导入 Bulma 之前,重新定义

$primary
变量:

// custom.scss
$primary: #663399; // 我公司的主题紫
@import "~bulma/bulma.sass"; // 确保在自定义变量后导入 Bulma

这样,所有使用

.is-primary
类的按钮和表单元素都会自动更新为新的颜色。这种方式非常强大,因为它能让你在不修改 Bulma 核心文件的情况下,实现全局的样式调整。

如果只是想针对某个特定的按钮或表单元素做一些微调,直接写自定义 CSS 也是可以的。Bulma 的类名设计得很清晰,冲突的可能性比较小。比如,你可能需要一个特别的按钮,点击后边框会闪烁一下,这显然不是 Bulma 默认提供的,就需要自己写动画 CSS。

/* custom.css */
.button.is-special-effect {
  position: relative;
  overflow: hidden;
}

.button.is-special-effect::after {
  content: '';
  position: absolute;
  top: -1px;
  left: -1px;
  right: -1px;
  bottom: -1px;
  border: 2px solid transparent;
  border-radius: inherit;
  animation: border-flash 1s infinite alternate;
  pointer-events: none;
}

@keyframes border-flash {
  from { border-color: transparent; }
  to { border-color: #ffdd57; }
}

我发现,有时候为了实现一些复杂的表单布局,比如多列输入框或者带有特定背景的输入组,直接用 Bulma 现有的

.field
.control
组合可能不够灵活。这时候,我可能会结合 Bulma 的网格系统(Columns)来构建更复杂的布局,或者为
.field
.control
添加一些自定义的类,然后编写额外的 CSS 来调整间距和对齐。关键是不要害怕跳出 Bulma 提供的固定模式,利用它的基础结构,再结合自己的 CSS 知识去扩展。毕竟,CSS 框架是工具,不是限制。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Sass和less的区别
Sass和less的区别

Sass和less的区别有语法差异、变量和混合器的定义方式、导入方式、运算符的支持、扩展性等。本专题为大家提供Sass和less相关的文章、下载、课程内容,供大家免费下载体验。

216

2023.10.12

alert怎么实现换行
alert怎么实现换行

alert通过使用br标签来实现换行。更多关于alert相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

501

2023.11.07

点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

197

2023.11.24

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

71

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

82

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

97

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

223

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

458

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 42.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号