ฉันต้องการใช้ไอคอน Font Awesome เป็นเนื้อหา CSS เช่น
a:before {
content: "<i class='fa...'>...</i>";
}
ฉันรู้ว่าฉันไม่สามารถใช้รหัส HTML content
ได้ดังนั้นจึงเหลือเฉพาะภาพเท่านั้น
ฉันต้องการใช้ไอคอน Font Awesome เป็นเนื้อหา CSS เช่น
a:before {
content: "<i class='fa...'>...</i>";
}
ฉันรู้ว่าฉันไม่สามารถใช้รหัส HTML content
ได้ดังนั้นจึงเหลือเฉพาะภาพเท่านั้น
คำตอบ:
อัปเดตสำหรับ 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;
มันจะเปลี่ยนแบบอักษรสำหรับแท็กสมอยัง เราจะจัดการกับสิ่งนั้นได้อย่างไร
font-family
ควรใช้ชื่อ:before
ปลอมและไม่ยึดแท็ก
content
รหัสที่ถูกต้องสำหรับการคัดลอกโดยตรง (เช่นไม่มีเกมง่ายๆ) PS: ฉันยังสงสัยว่าทำไม FontAwesome จึงไม่ใส่รหัสเนื้อหาลงในหน้าไอคอนแต่ละหน้า!
วิธีการแก้ปัญหาอื่นโดยที่คุณไม่ต้องยุ่งกับ 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>
หากคุณสามารถเข้าถึงไฟล์ 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;
}
a:before {
content: "\f055";
font-family: FontAwesome;
left:0;
position:absolute;
top:0;
}
ลิงค์ตัวอย่าง: https://codepen.io/bungeedesign/pen/XqeLQg
รับรหัสไอคอนจาก: https://fontawesome.com/cheatsheet?from=io
คุณสามารถใช้ unicode สำหรับสิ่งนี้ได้ใน CSS หากคุณใช้แบบอักษรที่ยอดเยี่ยม 5 นี่คือไวยากรณ์;
.login::before {
font-family: "Font Awesome 5 Free";
font-weight: 900;
content: "\f007";
}
คุณควรกำหนดน้ำหนักแบบอักษรเป็น 900 สำหรับFont Awesome 5 ฟรีตัวอักษรตระกูล
นี่คือหนึ่งในการทำงาน:
.css-selector::before {
font-family: 'Font Awesome 5 Free';
content: "\f101";
font-weight: 900;
}
อย่างที่บอกในเว็บไซต์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 ของคุณ
อัปเดตสำหรับ Font Awesome 5 โดยใช้ SCSS
.icon {
@extend %fa-icon;
@extend .fas;
&:before {
content: fa-content($fa-var-user);
}
}
ต่อไปนี้เป็นโซลูชัน 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";
}