简体   繁体   English

字体真棒图标没有显示?

[英]Font Awesome Icon doesnt get displayed?

I'm building an expanding search bar, unfortunately the search icon from Font Awesome is not showing. 我正在构建一个扩展的搜索栏,不幸的是, Font Awesome的搜索图标未显示。

Here is the code: 这是代码:

 ;(function(window) { 'use strict'; // EventListener | @jon_neal | //github.com/jonathantneal/EventListener !window.addEventListener && window.Element && (function() { function addToPrototype(name, method) { Window.prototype[name] = HTMLDocument.prototype[name] = Element.prototype[name] = method; } var registry = []; addToPrototype("addEventListener", function(type, listener) { var target = this; registry.unshift({ __listener: function(event) { event.currentTarget = target; event.pageX = event.clientX + document.documentElement.scrollLeft; event.pageY = event.clientY + document.documentElement.scrollTop; event.preventDefault = function() { event.returnValue = false }; event.relatedTarget = event.fromElement || null; event.stopPropagation = function() { event.cancelBubble = true }; event.relatedTarget = event.fromElement || null; event.target = event.srcElement || target; event.timeStamp = +new Date; listener.call(target, event); }, listener: listener, target: target, type: type }); this.attachEvent("on" + type, registry[0].__listener); }); addToPrototype("removeEventListener", function(type, listener) { for (var index = 0, length = registry.length; index < length; ++index) { if (registry[index].target == this && registry[index].type == type && registry[index].listener == listener) { return this.detachEvent("on" + type, registry.splice(index, 1)[0].__listener); } } }); addToPrototype("dispatchEvent", function(eventObject) { try { return this.fireEvent("on" + eventObject.type, eventObject); } catch (error) { for (var index = 0, length = registry.length; index < length; ++index) { if (registry[index].target == this && registry[index].type == eventObject.type) { registry[index].call(this, eventObject); } } } }); })(); // http://stackoverflow.com/a/11381730/989439 function mobilecheck() { var check = false; (function(a) { if (/(android|ipad|playbook|silk|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[aw])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true })(navigator.userAgent || navigator.vendor || window.opera); return check; } // http://www.jonathantneal.com/blog/polyfills-and-prototypes/ !String.prototype.trim && (String.prototype.trim = function() { return this.replace(/^\\s+|\\s+$/g, ''); }); function UISearch(el, options) { this.el = el; this.inputEl = el.querySelector('form > input.sb-search-input'); this._initEvents(); } UISearch.prototype = { _initEvents: function() { var self = this, initSearchFn = function(ev) { ev.stopPropagation(); // trim its value self.inputEl.value = self.inputEl.value.trim(); if (!classie.has(self.el, 'sb-search-open')) { // open it ev.preventDefault(); self.open(); } else if (classie.has(self.el, 'sb-search-open') && /^\\s*$/.test(self.inputEl.value)) { // close it ev.preventDefault(); self.close(); } } this.el.addEventListener('click', initSearchFn); this.el.addEventListener('touchstart', initSearchFn); this.inputEl.addEventListener('click', function(ev) { ev.stopPropagation(); }); this.inputEl.addEventListener('touchstart', function(ev) { ev.stopPropagation(); }); }, open: function() { var self = this; classie.add(this.el, 'sb-search-open'); // focus the input if (!mobilecheck()) { this.inputEl.focus(); } // close the search input if body is clicked var bodyFn = function(ev) { self.close(); this.removeEventListener('click', bodyFn); this.removeEventListener('touchstart', bodyFn); }; document.addEventListener('click', bodyFn); document.addEventListener('touchstart', bodyFn); }, close: function() { this.inputEl.blur(); classie.remove(this.el, 'sb-search-open'); } } // add to global namespace window.UISearch = UISearch; })(window); 
 .sb-search { float: right; position: relative; margin-top: 10px; width: 0%; min-width: 40px; height: 40px; overflow: hidden; -webkit-transition: width 0.3s; -moz-transition: width 0.3s; transition: width 0.3s; -webkit-backface-visibility: hidden; } .sb-search-input { position: absolute; top: 0; right: 0; border: none; outline: none; background: #fff; width: 100%; height: 40px; margin: 0; z-index: 10; padding: 20px 65px 20px 20px; font-family: inherit; font-size: 20px; color: #2c3e50; } .sb-search-input::-webkit-input-placeholder { color: #efb480; } .sb-search-input:-moz-placeholder { color: #efb480; } .sb-search-input::-moz-placeholder { color: #efb480; } .sb-search-input:-ms-input-placeholder { color: #efb480; } .fa.fa-search, .sb-search-submit { width: 40px; height: 40px; display: block; position: absolute; right: 0; top: 0; padding: 0; margin: 0; line-height: 60px; text-align: center; cursor: pointer; } .sb-search-submit { background: #fff; /* IE needs this */ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; /* IE 8 */ filter: alpha(opacity=0); /* IE 5-7 */ opacity: 0; color: transparent; border: none; outline: none; z-index: -1; } .fa.fa-search { border: none; font-size: 22px; background: #efb480; z-index: 90; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; -webkit-font-smoothing: antialiased; } .fa.fa-search:before { content: "\\e000"; } /* Open state */ .sb-search.sb-search-open, .no-js .sb-search { width: 100%; } .sb-search.sb-search-open .fa.fa-search, .no-js .sb-search .fa.fa-search { background: #da6d0d; color: #fff; z-index: 11; } .sb-search.sb-search-open .sb-search-submit, .no-js .sb-search .sb-search-submit { z-index: 90; } 
 <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet"/> <div class="nav-btn"> <div id="sb-search" class="sb-search"> <form> <input class="sb-search-input" placeholder="Enter your search term..." type="text" value="" name="search" id="search" /> <input class="sb-search-submit" type="submit" value="" /> <button class="sb-icon-search"><i class="fa fa-search"></i> </button> </form> </div> </div> 

I only started front-end development a few weeks ago and I'd appreciate some help! 我仅在几周前才开始前端开发,希望获得一些帮助! :) I included the font-awesome.min.css stylesheet. :)我包括了font-awesome.min.css样式表。 Its working in other lines. 它在其他方面的工作。

Here is the jsfiddle: https://jsfiddle.net/0wm440gn/4/ 这是jsfiddle: https ://jsfiddle.net/0wm440gn/4/

The JS works fine in my files, I don't understand why JSFiddle doesn't do it properly. JS在我的文件中运行良好,我不明白为什么JSFiddle无法正确执行。 But my problem must be somewhere in the Markup/CSS. 但是我的问题一定在标记/ CSS中。

Your problem is on line 88 of your CSS file, where it says: 您的问题出在CSS文件的第88行,显示为:

.fa.fa-search:before {
    content: "\e000";
}

That's not the correct unicode character, and if you're using fontawesome you don't need it anyway. 这不是正确的unicode字符,如果您使用的是fontawesome,则无论如何都不需要它。 Delete those lines and fontawesome will take care of you. 删除这些行,并且fontawesome会照顾您的。

Your problem is in your CSS. 您的问题出在CSS中。

You have the following rule: 您有以下规则:

.fa.fa-search:before {
    content: "\e000";
}

In the font-awesome.css file, .fa-search is defined as: font-awesome.css文件中, .fa-search定义为:

.fa-search:before {
    content: "\f002";
}

Since your selector, in your CSS, has a higher specificity , the default value of \\F002 is being replaced with \\E000 . 由于您的选择器在CSS中具有更高的特异性 ,因此\\F002的默认值将替换为\\E000

I removed this and the glyph appeared correctly. 我删除了此字形,并正确显示了它。


Broken 破碎

 .fa.fa-search:before { content: "\\e000"; } 
 <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet" /> <button class="sb-icon-search"><i class="fa fa-search"></i> 

Fixed 固定

 <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet"/> <button class="sb-icon-search"><i class="fa fa-search"></i> 

Just include the external reference to Fontawesome: 只需包括对Fontawesome的外部引用:

https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css

and remove the lines 并删除线

.fa.fa-search:before {
    content: "\e000";
}

JSFiddle demo JSFiddle演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM