Sử dụng biểu tượng Font Awesome cho các dấu đầu dòng, với một thành phần mục danh sách


131

Chúng tôi muốn có thể sử dụng biểu tượng Phông chữ Tuyệt vời ( http://fortawclaw.github.com/Font-Aw đũa / ) làm điểm nhấn cho danh sách không có thứ tự trong CMS.

Trình soạn thảo văn bản trên CMS chỉ xuất ra HTML thô để có thể thêm các thành phần / lớp bổ sung.

Điều này có nghĩa là hiển thị các biểu tượng khi đánh dấu trông như thế này:

<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>

Vấn đề đầu tiên tôi có thể thấy nếu Font Awesome yêu cầu một thuộc tính họ phông chữ khác, sẽ yêu cầu một yếu tố riêng biệt.

Điều này có thể sử dụng CSS thuần túy không? Hoặc tôi sẽ phải nối phần tử vào đầu mỗi mục danh sách bằng cách sử dụng cái gì đó như jQuery?

Tôi nhận ra rằng chúng ta có thể sử dụng một hình ảnh nền, nhưng thật tuyệt khi sử dụng Font Awesome nếu có thể.

Câu trả lời:


248

Giải pháp:

http://jsfiddle.net/VR2hP/

ul li:before {    
    font-family: 'FontAwesome';
    content: '\f067';
    margin:0 5px 0 -15px;
    color: #f00;
}

Đây là một bài viết trên blog giải thích kỹ thuật này chuyên sâu.


18
Một danh sách hữu ích các bản dịch từ các biểu tượng tuyệt vời này sang các giá trị css có tại đây: Astronautweb.co/snippet/font-awemme
Scott C Wilson

24
Bạn sẽ muốn bao gồm điều này để xóa các dấu đầu dòng mặc địnhul { list-style-type: none; }
Edd

Tại sao methode này không hoạt động khi tôi có hai danh sách trên cùng một trang?
deKajoo

6
Rất đẹp, điều duy nhất tôi muốn đề xuất để sắp xếp mọi thứ đẹp hơn là margin: 0 0.2em 0 -1.2em;chỉ sử dụng tăng / giảm hai giá trị với cùng một lượng để có khoảng cách mong muốn. Nếu bạn sử dụng một giá trị pixel cố định không tương ứng với phông chữ của mình, bạn sẽ nhận thấy sự khác biệt về các mục danh sách đa dòng.
phanh

Tôi đã thêm tiền tố ul vào điều này nếu không nó sẽ cố gắng thực hiện nếu khách hàng sử dụng cms để tạo danh sách (được đánh số) theo thứ tự
rtpHarry

154

Các fontawgie mới (phiên bản 4.0.3) làm cho điều này thực sự dễ dàng để làm. Chúng tôi chỉ đơn giản sử dụng các lớp sau:

<ul class="fa-ul">
  <li><i class="fa-li fa fa-check-square"></i>List icons (like these)</li>
  <li><i class="fa-li fa fa-check-square"></i>can be used</li>
  <li><i class="fa-li fa fa-spinner fa-spin"></i>to replace</li>
  <li><i class="fa-li fa fa-square"></i>default bullets in lists</li>
</ul>

Theo url (mới) này: http://fontawclaw.io/examples/#list


12
Đây phải là câu trả lời chính xác, với phiên bản fa mới. Rất tốt, cảm ơn vì lời giải thích này.
David

23
Tôi không đồng ý, câu hỏi yêu cầu một giải pháp sử dụng một danh sách duy nhất trong CSS thuần túy. Điều này sử dụng HTML bổ sung, cũng như các lớp. Mặc dù đây chắc chắn là cách mà các tài liệu FA chỉ định để thực hiện việc này, nhưng về mặt kỹ thuật, đây không phải là giải pháp cho câu hỏi và không hữu ích nếu bạn đang tìm cách thực hiện điều này mà không sửa đổi đầu ra HTML của mình.
Ryan

Tôi biết những gì bạn sẽ làm - nhưng những người không liên tục viết CSS thuần túy trong tình huống họ không thể sửa đổi HTML của mình ???? . Tôi không có ý nói "không chỉ có một câu trả lời đúng cho vấn đề" nhưng không có ...
lol

1
Cách tiếp cận này không hoạt động tốt với các thành phần danh sách gói thành nhiều dòng, vì nhận dạng trên các dòng bổ sung sẽ không mở rộng để bao gồm chiều rộng của biểu tượng.
Lars Haugseth

2
Có lẽ đáng để thêm, với FA 4.3 (có thể là các phiên bản khác nữa) và Bootstrap 3, ullicác mục cần phải được đặt position: relativefa-limục này được định vị tuyệt đối. Nếu không, tất cả chúng sẽ nổi lên trên cùng bên trái.
Jeremy Harris

14

Tôi muốn xây dựng một số câu trả lời ở trên và đưa ra ở nơi khác và đề nghị sử dụng định vị tuyệt đối cùng với : trước lớp giả . Rất nhiều ví dụ ở trên (và trong các câu hỏi tương tự) đang sử dụng đánh dấu HTML tùy chỉnh, bao gồm cả phương pháp xử lý của Font Awesome. Điều này đi ngược lại câu hỏi ban đầu và không thực sự cần thiết.

DEMO TẠI ĐÂY

ul {
  list-style-type: none;
  padding-left: 20px;
}

li {
  position: relative;
  padding-left: 20px;
  margin-bottom: 10px
}

li:before {
  position: absolute;
  top: 0;
  left: 0;
  font-family: FontAwesome;
  content: "\f058";
  color: green;
}

Về cơ bản là vậy. Bạn có thể nhận giá trị ISO để sử dụng trong nội dung CSS trên áo phông Font Awesome . Chỉ cần sử dụng 4 chữ số cuối cùng có tiền tố với dấu gạch chéo ngược. Vì vậy, [&#xf058;]trở thành\f058


4

Có một ví dụ về cách sử dụng Font Awesome cùng với danh sách không có thứ tự trên trang ví dụ của họ .

<ul class="icons">
  <li><i class="icon-ok"></i> Lists</li>
  <li><i class="icon-ok"></i> Buttons</li>
  <li><i class="icon-ok"></i> Button groups</li>
  <li><i class="icon-ok"></i> Navigation</li>
  <li><i class="icon-ok"></i> Prepended form inputs</li>
</ul>

Nếu bạn không thể tìm thấy nó hoạt động sau khi thử mã này thì bạn không bao gồm thư viện chính xác. Theo trang web của họ, bạn nên bao gồm các thư viện như sau:

<link rel="stylesheet" href="../css/bootstrap.css">
<link rel="stylesheet" href="../css/font-awesome.css">

Ngoài ra, hãy xem bài đăng của Chris Coyier hay thay đổi về phông chữ biểu tượng trên trang web CSS Tricks của anh ấy .

Đây là một screencast của anh ấy cũng như nói về cách tạo khuôn mặt biểu tượng phông chữ của riêng bạn.


2
Bạn không cần đánh dấu thêm: li:beforecó thể có họ phông chữ khác với họ li.
cimmanon

@cimmanon: Mặc dù bạn thực sự chính xác, tài liệu về Font Awesome gợi ý bạn nên có thêm đánh dấu. Về mặt kỹ thuật, nó không cần thiết, tuy nhiên, tôi cảm thấy có thể cần phải đào qua các glyphs của phông chữ để tìm ra khóa nào được ánh xạ tới biểu tượng nào. Điều này sẽ đòi hỏi một chút thời gian và sự kiên nhẫn, nhưng chắc chắn, giải pháp của bạn cũng sẽ hiệu quả.
cereallarceny

@cereallarceny - vấn đề chúng tôi gặp phải là trình soạn thảo HTML (TinyMCE) cho CMS tạo ra định dạng tôi đưa ra trong câu hỏi của mình. Vì vậy, từ quan điểm đó, chúng tôi không có quyền kiểm soát danh sách HTML. Trừ khi chúng ta cấu hình TinyMCE để bao gồm phần tử i (và không xóa phần tử này dưới dạng phần tử trống).
BaronGrivet

Vì vậy, bạn không có quyền truy cập vào HTML, bạn có quyền truy cập vào CSS không?
cereallarceny

Có, hoàn toàn truy cập vào CSS.
BaronGrivet

1

@Tama, bạn có thể muốn kiểm tra câu trả lời này: Sử dụng biểu tượng Font Awesome làm đạn

Về cơ bản, bạn có thể thực hiện việc này bằng cách chỉ sử dụng CSS mà không cần đánh dấu thêm như được đề xuất bởi FontAwgie và các câu trả lời khác tại đây.

Nói cách khác, bạn có thể thực hiện những gì bạn cần bằng cách sử dụng cùng một đánh dấu cơ bản mà bạn đã đề cập trong bài đăng đầu tiên của mình:

<ul>
  <li>...</li>
  <li>...</li>
  <li>...</li>
</ul>

Cảm ơn.


1

Giải pháp của tôi sử dụng tiêu chuẩn <ul><i>bên trong<li>

  <ul>
    <li><i class="fab fa-cc-paypal"></i> <div>Paypal</div></li>
    <li><i class="fab fa-cc-apple-pay"></i> <div>Apple Pay</div></li>
    <li><i class="fab fa-cc-stripe"></i> <div>Stripe</div></li>
    <li><i class="fab fa-cc-visa"></i> <div>VISA</div></li>
  </ul>

nhập mô tả hình ảnh ở đây

DEMO TẠI ĐÂY


1

Trong Font Awesome 5 có thể được thực hiện bằng CSS thuần như trong một số câu trả lời ở trên với một số sửa đổi.

ul {
  list-style-type: none;
}

li:before {
  position: absolute;
  font-family: 'Font Awesome 5 free';
          /*  Use the Name of the Font Awesome free font, e.g.:
           - 'Font Awesome 5 Free' for Regular and Solid symbols;
           - 'Font Awesome 5 Brand' for Brands symbols.
           - 'Font Awesome 5 Pro' for Regular and Solid symbols (Professional License);
          */
  content: "\f1fc"; /* Unicode value of the icon to use: */
  font-weight: 900; /* This is important, change the value according to the font family name
                       used above. See the link below  */
  color: red;
}

Nếu không có trọng lượng phông chữ chính xác, nó sẽ chỉ hiển thị một hình vuông trống.

https://fontawgie.com/how-to-use/on-the-web/advified/css-pseudo-elements#define

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.