2012-08-09 61 views
71

Có cách nào để nhúng HTML vào phần tử css content: khi sử dụng một phần tử giả :before không?Sử dụng FontAwesome hoặc Glyphicons với css: trước

Tôi muốn sử dụng một phông chữ tuyệt vời (hoặc Glyphicon) trong một trường hợp sử dụng như thế này:

h1:before { 
     content: "X"; 
     padding-right: 10px; 
     padding-left: 10px; 
     color: @orangeLight; 
    } 

đâu X là một cái gì đó giống như <i class="icon-cut"></i>.

Tôi có thể, tất nhiên làm điều này theo cách thủ công trong HTML, nhưng tôi thực sự muốn sử dụng :before trong trường hợp này.

Tương tự, có cách nào để sử dụng <i> làm dấu đầu dòng không? Công trình này hoạt động nhưng không hoạt động chính xác cho các mục bullet nhiều dòng:

<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> 
+2

Kể từ ': before' là một yếu tố giả, bạn có thể không có' nội dung html', chỉ 'văn bản'. –

+0

Hi tig, chỉ cần kiểm tra nếu câu trả lời của tôi là đủ. Hy vọng nó đã giúp. Cảm ơn! – keithwyland

+0

Bạn thực sự nên chấp nhận câu trả lời của wylander. Nó hoàn toàn làm những gì tôi cần, mà dường như là những gì bạn muốn, quá! –

Trả lời

143

Điều bạn mô tả thực sự là những gì FontAwesome đang làm. Họ áp dụng phông chữ FontAwesome cho thành phần giả ::before của bất kỳ phần tử nào có lớp bắt đầu bằng "biểu tượng-".

[class^="icon-"]:before, 
[class*=" icon-"]:before { 
    font-family: FontAwesome; 
    font-weight: normal; 
    font-style: normal; 
    display: inline-block; 
    text-decoration: inherit; 
} 

Sau đó, họ sử dụng phần tử giả ::before để đặt biểu tượng trong phần tử với lớp. Tôi chỉ đi đến http://fortawesome.github.com/Font-Awesome/ và kiểm tra mã để tìm thấy điều này:

.icon-cut:before { 
    content: "\f0c4"; 
} 

Vì vậy, nếu bạn đang tìm kiếm để thêm vào biểu tượng một lần nữa, bạn có thể sử dụng các yếu tố ::after để đạt được điều này. Hoặc đối với phần thứ hai của câu hỏi, bạn có thể sử dụng phần tử giả ::after để chèn ký tự dấu đầu dòng giống như một mục danh sách. Sau đó, sử dụng vị trí tuyệt đối để đặt nó ở bên trái, hoặc một cái gì đó tương tự.

i:after{ content: '\2022';} 
+1

Quan sát tuyệt vời !!! – chris

+12

Ở đây bạn có thể tìm thấy tất cả các mã biểu tượng nội dung '" \ xxxx ";': http://astronautweb.co/snippet/font-awesome/ –

+1

@miromarchi Đó là một danh sách tốt đẹp tất cả trong một chỗ! Cám ơn vì đã chia sẻ! Ngoài ra, nếu bạn truy cập trang web phông chữ tuyệt vời liệt kê các biểu tượng (http://fortawesome.github.io/Font-Awesome/icons/) và nhấp vào một trong các biểu tượng, trang có Unicode về phía trên cùng, là cùng một số được sử dụng trong thuộc tính nội dung. – keithwyland

0

Trong trường hợp các mục danh sách của bạn có một chút CSS bạn có thể sử dụng để đạt được hiệu quả mong muốn.

ul.icons li { 
    position: relative; 
    padding-left: -20px; // for example 
} 
ul.icons li i { 
    position: absolute; 
    left: 0; 
} 

Tôi đã thử nghiệm điều này trong Safari trên OS X.

-13
<ul class="icons-ul"> 
<li><i class="icon-play-sign"></i> <a>option</a></li> 
<li><i class="icon-play-sign"></i> <a>option</a></li> 
<li><i class="icon-play-sign"></i> <a>option</a></li> 
<li><i class="icon-play-sign"></i> <a>option</a></li> 
<li><i class="icon-play-sign"></i> <a>option</a></li> 
</ul> 

Tất cả các phông chữ tuyệt vời biểu tượng đi kèm mặc định với Bootstrap.

+0

từ khi nào? bootstrap đi kèm với glyphicons, không phải với fontawesome. – Dementic

+2

Điều này không chính xác và không sử dụng: trước đây. – Alex

-1

Đây là cách dễ nhất để làm những gì bạn đang cố gắng làm:

http://jsfiddle.net/ZEDHT/

<style> 
ul { 
    list-style-type: none; 
} 
</style> 

<ul class="icons"> 
<li><i class="fa fa-bomb"></i> Lists</li> 
<li><i class="fa fa-bomb"></i> Buttons</li> 
<li><i class="fa fa-bomb"></i> Button groups</li> 
<li><i class="fa fa-bomb"></i> Navigation</li> 
<li><i class="fa fa-bomb"></i> Prepended form inputs</li> 
</ul> 
-1

Re: sử dụng biểu tượng trong :before - Font gần đây công trình tuyệt vời bao gồm .fa-icon() mixin cho Sass và LESS . Điều này sẽ tự động bao gồm font-family cũng như một số chỉnh sửa hiển thị (ví dụ: -webkit-font-smoothing). Do đó, bạn có thể làm, ví dụ:

// Add "?" icon to header. 
h1:before { 
    .fa-icon(); 
    content: "\f059"; 
} 
+0

Chỉ cần một lời nhắc ngắn gọn rằng phông chữ tuyệt vời cũng cung cấp các biến để sử dụng làm nội dung để người dùng cũng có thể sử dụng: .pseudo-class: before { @include fa-icon(); nội dung: $ fa-var-phone-square; } – Jan

0

Cách tiếp cận này nên tránh. Giá trị mặc định cho vertical-alignbaseline. Thay đổi họ phông chữ của chỉ phần tử giả sẽ dẫn đến các phần tử có phông chữ khác nhau. Các phông chữ khác nhau có thể có các chỉ số phông chữ khác nhau và các đường cơ sở khác nhau. Để các đường cơ sở khác nhau căn chỉnh, chiều cao tổng thể của phần tử sẽ phải tăng lên. See this effect in action.

Tốt hơn nên có một phần tử trên mỗi biểu tượng phông chữ.

1

@keithwyland câu trả lời là rất tốt. Dưới đây là một mixin SCSS:

@mixin font-awesome($content){ 
    font-family: FontAwesome; 
    font-weight: normal; 
    font-style: normal; 
    display: inline-block; 
    text-decoration: inherit; 
    content: $content; 
} 

Cách sử dụng:

@include font-awesome("\f054"); 
Các vấn đề liên quan