アイコンフォント(Font Awesome 等) を使ったリストマーカーをリスト要素のみで実装する
i タグを使いたくないときの書き方。
サンプルは Font Awesome 5 を使用。
描画
コード
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title></title>
<link href="https://use.fontawesome.com/releases/v5.0.6/css/all.css" rel="stylesheet">
<style>
body {
margin: 0;
}
.container {
width: 360px;
border: 1px solid gray;
margin: 0 auto;
}
hr {
border-width: 2px;
}
a {
outline: 1px solid gray;
}
a:hover {
background-color: yellow;
}
.sample1 {
list-style: none;
padding-left: 0;
}
.sample1 li:before {
font-family: "Font Awesome 5 Free";
font-weight: 900;
content: "\f138";
margin-right: .3em;
}
.sample2 {
list-style: none;
padding-left: 0;
}
.sample2 li {
margin-left: 1.3rem; /* 追加 */
text-indent: -1.3em; /* 追加 */
}
.sample2 li:before {
font-family: "Font Awesome 5 Free";
font-weight: 900;
content: "\f138";
margin-right: .3em;
}
.sample2 li {
margin-left: 1.3rem;
text-indent: -1.3em;
}
.sample2b {
list-style: none;
padding-left: 0;
}
.sample2b li:before {
font-family: "Font Awesome 5 Free";
font-weight: 900;
content: "\f138";
margin-right: .3em;
margin-left: 1.3rem;
text-indent: -1.3em;
}
.sample2b li a {
display: block; /* 追加 */
}
.sample2c {
list-style: none;
padding-left: 0;
}
.sample2c li {
margin-left: 1.3rem;
text-indent: -1.3em;
}
.sample2c li a:before {
font-family: "Font Awesome 5 Free";
font-weight: 900;
content: "\f138";
margin-right: .3em;
margin-left: 1.3rem;
text-indent: -1.3em;
}
.sample2c li a {
display: block; /* 追加 */
}
.sample3 {
list-style: none;
padding-left: 0;
}
.sample3 li {
position: relative;
}
.sample3 li:before {
position: absolute;
top: .25em;
left: 1rem; /* 左余白 */
font-family: "Font Awesome 5 Free";
font-weight: 900;
content: "\f138";
}
.sample3 li a {
display: block;
padding-left: 2.3rem; /* 左余白 1rem をプラス */
}
.sample3b {
list-style: none;
padding-left: 0;
}
.sample3b li {
position: relative;
}
.sample3b li a {padding-left: 1.3rem;
display: block;
padding-left: 2.3rem; /* 左余白 1rem をプラス */
}
.sample3b li a:before {
font-family: "Font Awesome 5 Free";
font-weight: 900;
content: "\f138";
}
</style>
</head>
<body>
<div class="container">
<h2>sample 1</h2>
<p>改行が入ると2行目以降がリストマーカーの頭と揃い格好悪い</p>
<ul class="sample1">
<li><a href="#">りんご</a></li>
<li><a href="#">ばなな</a></li>
<li><a href="#">長くて改行が<br>入った場合</a></li>
</ul>
<hr>
<h2>sample 2</h2>
<p>text-indent と マイナス左マージンで調整。幅いっぱい表示しないならこれでいい</p>
<ul class="sample2">
<li><a href="#">りんご</a></li>
<li><a href="#">ばなな</a></li>
<li><a href="#">長くて改行が<br>入った場合</a></li>
</ul>
<hr>
<h2>sample 2b</h2>
<p>スマホ表示でまず必要となる幅いっぱい表示。before 疑似要素は a 要素の内側でなく前に生成されるため、a 要素を "display: block;" でブロック要素にしてもうまくいかない</p>
<ul class="sample2b">
<li><a href="#">りんご</a></li>
<li><a href="#">ばなな</a></li>
<li><a href="#">長くて改行が<br>入った場合</a></li>
</ul>
<hr>
<h2>失敗例:sample 2b</h2>
<p>スマホ表示でまず必要となる幅いっぱい表示。before 疑似要素は a 要素の内側でなく前に生成されるため、a 要素を "display: block;" でブロック要素にしてもうまくいかない</p>
<ul class="sample2b">
<li><a href="#">りんご</a></li>
<li><a href="#">ばなな</a></li>
<li><a href="#">長くて改行が<br>入った場合</a></li>
</ul>
<hr>
<h2>sample 3</h2>
<p>a 要素を幅いっぱいに。Font Awesome アイコンを使ったリストマーカーを絶対配置で置く</p>
<ul class="sample3">
<li><a href="#">りんご</a></li>
<li><a href="#">ばなな</a></li>
<li><a href="#">長くて改行が<br>入った場合</a></li>
</ul>
<h2>失敗例:sample 3b</h2>
<p>li でなく a 要素の before 疑似要素にすると、before 疑似要素が a 要素内に位置するため、 "text-decoration: none;" を指定してもリンク線が付いてしまう。</p>
<ul class="sample3b">
<li><a href="#">りんご</a></li>
<li><a href="#">ばなな</a></li>
<li><a href="#">長くて改行が<br>入った場合</a></li>
</ul>
</div>
</body>
</html>
Author And Source
この問題について(アイコンフォント(Font Awesome 等) を使ったリストマーカーをリスト要素のみで実装する), 我々は、より多くの情報をここで見つけました https://qiita.com/oreo3@github/items/59ed5e44091a9abfe045著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .