ใช้ไอคอน Font Awesome เป็นเนื้อหา CSS


279

ฉันต้องการใช้ไอคอน Font Awesome เป็นเนื้อหา CSS เช่น

a:before {
    content: "<i class='fa...'>...</i>";
}

ฉันรู้ว่าฉันไม่สามารถใช้รหัส HTML contentได้ดังนั้นจึงเหลือเฉพาะภาพเท่านั้น


จากหน่วยความจำคุณไม่สามารถฉีด HTML ลงใน DOM โดยใช้แอตทริบิวต์ content แค่ข้อความเก่าธรรมดา
Mike Causer

คำตอบ:


634

อัปเดตสำหรับ FontAwesome 5 ด้วยAurelien

คุณจำเป็นต้องเปลี่ยนfont-familyไปFont Awesome 5 BrandsหรือFont Awesome 5 Freeขึ้นอยู่กับประเภทของไอคอนที่คุณกำลังพยายามที่จะทำให้ นอกจากนี้อย่าลืมที่จะประกาศfont-weight: 900;

a:before {
   font-family: "Font Awesome 5 Free";
   content: "\f095";
   display: inline-block;
   padding-right: 3px;
   vertical-align: middle;
   font-weight: 900;
}

การสาธิต

คุณสามารถอ่านคำตอบที่เหลือด้านล่างเพื่อทำความเข้าใจวิธีการทำงานและรู้วิธีแก้ปัญหาบางอย่างเกี่ยวกับระยะห่างระหว่างไอคอนและข้อความ


FontAwesome 4 และต่ำกว่า

นั่นเป็นวิธีที่ผิดที่จะใช้ เปิดสไตล์ชีตแบบอักษรที่ยอดเยี่ยมไปclassที่ตัวอักษรที่คุณต้องการใช้พูดfa-phoneคัดลอกคุณสมบัติเนื้อหาภายใต้คลาสนั้นด้วยเอนทิตีและใช้งานเช่น:

a:before {
    font-family: FontAwesome;
    content: "\f095";
}

การสาธิต

เพียงตรวจสอบให้แน่ใจว่าหากคุณต้องการกำหนดเป้าหมายaแท็กเฉพาะให้ลองใช้classแทนเพื่อให้มีลักษณะเฉพาะมากขึ้นเช่น:

a.class_name:before {
    font-family: FontAwesome;
    content: "\f095";
}

การใช้วิธีการด้านบนจะติดไอคอนกับข้อความที่เหลืออยู่ของคุณดังนั้นหากคุณต้องการให้มีช่องว่างระหว่างสองรายการนี้ให้สร้างdisplay: inline-block;และใช้งานบางส่วนpadding-right:

a:before {
    font-family: FontAwesome;
    content: "\f095";
    display: inline-block;
    padding-right: 3px;
    vertical-align: middle;
}

ขยายคำตอบนี้ไปอีกเนื่องจากหลายคนอาจมีความต้องการที่จะเปลี่ยนไอคอนบนโฮเวอร์ดังนั้นเราจึงสามารถเขียนตัวเลือกและกฎแยกต่างหากสำหรับ:hoverการกระทำ:

a:hover:before {
    content: "\f099"; /* Code of the icon you want to change on hover */
}

การสาธิต

ตอนนี้ในตัวอย่างด้านบนไอคอนนัดเนื่องจากขนาดแตกต่างกันและคุณไม่ต้องการอย่างนั้นดังนั้นคุณสามารถตั้งค่าคงที่widthในการประกาศฐานเช่น

a:before {
    /* Other properties here, look in the above code snippets */
    width: 12px; /* add some desired width here to prevent nudge */
}

การสาธิต



ด้วยfont-family: FontAwesome;มันจะเปลี่ยนแบบอักษรสำหรับแท็กสมอยัง เราจะจัดการกับสิ่งนั้นได้อย่างไร
Shubh

@Shubh อ่านรหัสอย่างระมัดระวังfont-familyควรใช้ชื่อ:beforeปลอมและไม่ยึดแท็ก
Mr. Alien

แค่คิดว่าฉันจะเพิ่มที่นี่ที่คุณสามารถหาข้อมูลจำเพาะ Unicode สำหรับไอคอนเฉพาะโดยไม่ต้องขุดลงในแหล่งที่มา เพียงไปที่รายการไอคอนบนเว็บไซต์ตัวอักษรที่สวยงามแล้วคลิกไอคอนที่คุณต้องการ คุณจะเห็นค่า Unicode บนหน้าเว็บใต้ตัวอย่างไอคอน: fortawesome.github.io/Font-Awesome/icon/pencil-square-o
Allen Underwood

รายการ CSS Unicode สำหรับ FontAwesome นั้นดีกว่า: astronautweb.co/snippet/font-awesomeเพราะมันแสดงcontentรหัสที่ถูกต้องสำหรับการคัดลอกโดยตรง (เช่นไม่มีเกมง่ายๆ) PS: ฉันยังสงสัยว่าทำไม FontAwesome จึงไม่ใส่รหัสเนื้อหาลงในหน้าไอคอนแต่ละหน้า!
Kai Noack

25

วิธีการแก้ปัญหาอื่นโดยที่คุณไม่ต้องยุ่งกับ Unicode ด้วยตนเองสามารถหาได้ในการทำ Font Awesome Awesome - การใช้ไอคอนโดยไม่มี i-tags ( ข้อจำกัดความรับผิดชอบ: ฉันเขียนบทความนี้ )

สรุปคุณสามารถสร้างคลาสใหม่เช่นนี้:

.icon::before {
    display: inline-block;
    margin-right: .5em;
    font: normal normal normal 14px/1 FontAwesome;
    font-size: inherit;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    transform: translate(0, 0);
}

จากนั้นใช้กับไอคอนใด ๆ ตัวอย่างเช่น:

<a class="icon fa-car" href="#">This is a link</a>

23

หากคุณสามารถเข้าถึงไฟล์ SCSS จากแบบอักษรสุดยอดเยี่ยมคุณสามารถใช้วิธีแก้ปัญหาง่ายๆนี้:

.a:after {
    // Import mixin from font-awesome/scss/mixins.scss
    @include fa-icon();

    // Use icon variable from font-awesome/scss/variables.scss
    content: $fa-var-exclamation-triangle;
}


3

คุณสามารถใช้ unicode สำหรับสิ่งนี้ได้ใน CSS หากคุณใช้แบบอักษรที่ยอดเยี่ยม 5 นี่คือไวยากรณ์;

.login::before {
    font-family: "Font Awesome 5 Free"; 
    font-weight: 900; 
    content: "\f007";  
}

คุณสามารถดูเอกสารของพวกเขาที่นี่


3

คุณควรกำหนดน้ำหนักแบบอักษรเป็น 900 สำหรับFont Awesome 5 ฟรีตัวอักษรตระกูล

นี่คือหนึ่งในการทำงาน:

.css-selector::before {
   font-family: 'Font Awesome 5 Free';
   content: "\f101";
   font-weight: 900;
}

1

อย่างที่บอกในเว็บไซต์FontAwesome FontAwesome =>

HTML:

<span class="icon login"></span> Login</li>

CSS:

 .icon::before {
    display: inline-block;
    font-style: normal;
    font-variant: normal;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
  }

    .login::before {
        font-family: "Font Awesome 5 Free";
        font-weight: 900;
        content: "\f007";
   }

ใน.login::before-> แก้ไขcontent:'';เพื่อให้เหมาะกับ Unicode ของคุณ



0

ต่อไปนี้เป็นโซลูชัน webpack 4 + font Awesome 5 ของฉัน:

ปลั๊กอิน webpack:

new CopyWebpackPlugin([
    { from: 'node_modules/font-awesome/fonts', to: 'font-awesome' }
  ]),

สไตล์ css ทั่วโลก:

@font-face {
    font-family: 'FontAwesome';
    src: url('/font-awesome/fontawesome-webfont.eot');
    src: url('/font-awesome/fontawesome-webfont.eot?#iefix') format('embedded-opentype'),
    url('/font-awesome/fontawesome-webfont.woff2') format('woff2'),
    url('/font-awesome/fontawesome-webfont.woff') format('woff'),
    url('/font-awesome/fontawesome-webfont.ttf') format('truetype'),
    url('/font-awesome/fontawesome-webfont.svgfontawesomeregular') format('svg');
    font-weight: normal;
    font-style: normal;
}

i {
    font-family: "FontAwesome";
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.