通过实际项目案例,学习 FontAwesome 图标库的完整使用流程
在网站导航链接前添加图标,可以显著提升导航的视觉辨识度和用户体验。使用 fa-fw(固定宽度)类名可以使所有图标在水平方向对齐,让导航菜单更加整齐美观。
<nav class="navbar">
<ul class="nav-list">
<li><a href="/"><i class="fa-solid fa-house fa-fw"></i> 首页</a></li>
<li><a href="/about"><i class="fa-solid fa-circle-info fa-fw"></i> 关于</a></li>
<li><a href="/services"><i class="fa-solid fa-gear fa-fw"></i> 服务</a></li>
<li><a href="/contact"><i class="fa-solid fa-envelope fa-fw"></i> 联系我们</a></li>
</ul>
</nav>提示:结合 Bootstrap 等 CSS 框架使用效果更佳,可配合导航栏的 active 状态高亮当前页面。
使用 FontAwesome 品牌图标制作社交媒体分享按钮,为每个平台搭配品牌主色,让分享按钮更加醒目。
<div class="share-buttons">
<a href="#" class="btn btn-dark">
<i class="fa-brands fa-github"></i> GitHub
</a>
<a href="#" class="btn btn-primary">
<i class="fa-brands fa-weixin"></i> 微信
</a>
<a href="#" class="btn btn-info text-white">
<i class="fa-brands fa-weibo"></i> 微博
</a>
<a href="#" class="btn btn-danger">
<i class="fa-brands fa-x-twitter"></i> Twitter
</a>
</div>提示:品牌图标使用 fa-brands 前缀,仅免费版就包含 200+ 品牌图标。
结合 JavaScript 和 FontAwesome 图标,实现交互式的星级评分组件。Solid 风格表示已选,Regular 风格表示未选。
<div class="star-rating" data-rating="3">
<i class="fa-solid fa-star" data-value="1" style="color:gold;cursor:pointer;"></i>
<i class="fa-solid fa-star" data-value="2" style="color:gold;cursor:pointer;"></i>
<i class="fa-solid fa-star" data-value="3" style="color:gold;cursor:pointer;"></i>
<i class="fa-regular fa-star" data-value="4" style="cursor:pointer;"></i>
<i class="fa-regular fa-star" data-value="5" style="cursor:pointer;"></i>
</div>
<script>
document.querySelectorAll('.star-rating i').forEach(function(star) {
star.addEventListener('click', function() {
var val = this.dataset.value;
var siblings = this.parentElement.querySelectorAll('i');
siblings.forEach(function(s) {
s.className = s.dataset.value <= val
? 'fa-solid fa-star' : 'fa-regular fa-star';
if (s.dataset.value <= val) s.style.color = 'gold';
else s.style.color = '';
});
});
});
</script>利用 FontAwesome 内置的动画类名,可以为按钮、加载指示器等元素添加生动的动态效果。
<!-- 按钮加载状态 -->
<button class="btn btn-primary" disabled>
<i class="fa-solid fa-spinner fa-spin"></i> 加载中...
</button>
<!-- 页面加载指示器 -->
<div class="text-center py-5">
<i class="fa-solid fa-circle-notch fa-spin fa-3x" style="color:#528dd7;"></i>
<p class="mt-2">正在加载数据,请稍候...</p>
</div>
<!-- 不同动画效果展示 -->
<div class="d-flex gap-3">
<i class="fa-solid fa-heart fa-beat" style="color:red"></i>
<i class="fa-solid fa-bell fa-shake"></i>
<i class="fa-solid fa-sun fa-fade"></i>
<i class="fa-solid fa-flag fa-flip"></i>
</div>动画类名:fa-spin(旋转)、fa-pulse(脉冲)、fa-beat(跳动)、fa-fade(淡入淡出)、fa-beat-fade(跳动淡出)、fa-flip(翻转)、fa-shake(抖动)。
在表单输入框内嵌入图标,可以直观地提示用户输入内容的类型,提升表单的可用性和美观度。
<div class="input-group mb-3">
<span class="input-group-text">
<i class="fa-solid fa-envelope"></i>
</span>
<input type="email" class="form-control" placeholder="请输入邮箱地址">
</div>
<div class="input-group mb-3">
<span class="input-group-text">
<i class="fa-solid fa-lock"></i>
</span>
<input type="password" class="form-control" placeholder="请输入密码">
</div>
<div class="input-group mb-3">
<span class="input-group-text">
<i class="fa-solid fa-user"></i>
</span>
<input type="text" class="form-control" placeholder="请输入用户名">
</div>
<!-- 验证状态图标 -->
<div class="mb-3">
<input type="text" class="form-control is-valid" placeholder="验证通过">
<i class="fa-solid fa-check-circle text-success"></i>
</div>结合 CSS Grid 或 Flexbox,FontAwesome 图标可以轻松实现响应式布局适配不同屏幕尺寸。
<div class="icon-grid" style="display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:1rem;">
<div class="icon-item text-center p-3 border rounded">
<i class="fa-solid fa-house fa-2x"></i>
<p class="mt-2 small">首页</p>
</div>
<div class="icon-item text-center p-3 border rounded">
<i class="fa-solid fa-user fa-2x"></i>
<p class="mt-2 small">用户</p>
</div>
<div class="icon-item text-center p-3 border rounded">
<i class="fa-solid fa-gear fa-2x"></i>
<p class="mt-2 small">设置</p>
</div>
<div class="icon-item text-center p-3 border rounded">
<i class="fa-solid fa-bell fa-2x"></i>
<p class="mt-2 small">通知</p>
</div>
<div class="icon-item text-center p-3 border rounded">
<i class="fa-solid fa-envelope fa-2x"></i>
<p class="mt-2 small">邮件</p>
</div>
<div class="icon-item text-center p-3 border rounded">
<i class="fa-solid fa-chart-bar fa-2x"></i>
<p class="mt-2 small">统计</p>
</div>
</div>响应式布局的优势:桌面端显示多列网格,平板和手机端自动减少列数,图标始终居中显示。