diff --git a/web/app/controllers/problem.php b/web/app/controllers/problem.php
index 88c8acb..0bb6425 100644
--- a/web/app/controllers/problem.php
+++ b/web/app/controllers/problem.php
@@ -406,11 +406,11 @@ if (UOJContest::cur()) {
标签
queryTags() as $tag) : ?>
-
-
- = HTML::escape($tag) ?>
-
-
+ = HTML::tag(
+ 'a',
+ ['class' => 'uoj-problem-tag'],
+ HTML::tag('span', ['class' => 'badge bg-secondary'], HTML::escape($tag))
+ ) ?>
diff --git a/web/app/controllers/problem_solutions.php b/web/app/controllers/problem_solutions.php
index 66c69fc..71ef636 100644
--- a/web/app/controllers/problem_solutions.php
+++ b/web/app/controllers/problem_solutions.php
@@ -269,11 +269,11 @@ $pag = new Paginator($pag_config);
标签
queryTags() as $tag) : ?>
-
-
- = HTML::escape($tag) ?>
-
-
+ = HTML::tag(
+ 'a',
+ ['class' => 'uoj-problem-tag'],
+ HTML::tag('span', ['class' => 'badge bg-secondary'], HTML::escape($tag))
+ ) ?>
diff --git a/web/app/controllers/problem_statistics.php b/web/app/controllers/problem_statistics.php
index 8e9844e..d87c49b 100644
--- a/web/app/controllers/problem_statistics.php
+++ b/web/app/controllers/problem_statistics.php
@@ -341,11 +341,11 @@ $submissions_sort_by_choice = !isset($_COOKIE['submissions-sort-by-code-length']
标签
queryTags() as $tag) : ?>
-
-
- = HTML::escape($tag) ?>
-
-
+ = HTML::tag(
+ 'a',
+ ['class' => 'uoj-problem-tag'],
+ HTML::tag('span', ['class' => 'badge bg-secondary'], HTML::escape($tag))
+ ) ?>