Questions to cover:
How to add an icon in a search box / form
How to add an icon in an input field
I had the following issue whereby I could't get the FontAwesome fa-search icon to sit to the right of the input field / search box.
Here is an image of the form:
A HTML search form on a website's header
Link to the form here (not evergreen):
https://www.themirrorman.co
Here is my original code:
@media screen and (min-width: 800px) {
#header-search-desktop-div {
position: absolute;
left: 180px;
width: 450px;
margin-top: 0;
margin-bottom: 0;
border: 1px solid #881d98;
border-radius: 24px;
}
#header-search-desktop-div #header-search-fa {
position: absolute;
color: #7E7E7E;
z-index: 100;
font-size: 27px;
}
#header-search-desktop-div .fa-search {
top: 5%;
left: 1.5%;
line-height: 0.8em;
}
}
<div id="header-search-desktop-div">
<form role="search" method="get" class="searchform" action="https://themirrorman.co/">
<span id="header-search-fa" class="fa fa-search">
<input id="header-search-desktop-input" name="product-search" type="text" value="" placeholder="Product Search…">
<input type="hidden" name="post_type" value="product" />
</span>
</form>
</div>
The following code I received answers on and changed, it now works like in the above image link:
#header-search-submit {
position: absolute;
z-index: 1;
padding: 0;
right: 15px;
top: 6px;
font-size: 24px;
font-family: FontAwesome;
color: #7B7B7B;
cursor: pointer;
background: 0;
border: 0;
}
<div id="header-search-desktop-div">
<form id="header-search-form" role="search" action="https://themirrorman.co/" method="get">
<fieldset>
<span class="text">
<input id="header-search-desktop-span" style="border-radius: 24px;" type="text" value="" name="s" class="s" placeholder="I am looking for..." />
<input id="header-search-submit" type="submit" value="" name="post_type" />
</span>
</fieldset>
</form>
</div>
To add icon inside the input element the <i> tag and <span> tag are used widely to add icons on the webpages. To add any icons on the webpages or in some specific area, it needs the fontawesome link inside the head tag. The fontawesome icon can be placed by using the fa prefix before the icon's name.
In HTML, icons are added with the <i> tag. For it to be added inside the input elements, it must be added between the closing and opening tags of the elements in which you want the icon to be displayed.
The <input type="image"> defines an image as a submit button. The path to the image is specified in the src attribute.
Technically you need to set your parent tag's position to relative, then set the image inside's position to absolute. Then you can overlay the image on your Input field. Also, one more thing to remember is you might want to set you z-index. Just in case, your image does not get behind of your input field.
Check the code below which is inspired by this link: How do I add a Font Awesome icon to input field?
input[type="search"] {
font-family: FontAwesome;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet"/>
<!-- Where fOO2 is the Unicode value for the fa-search icon -->
<input type="search" placeholder=" Search" >
Edit: 07/23/2020 I recently visited this question again and wanted to add an alternative solution. I basically copied the code for the Google search bar and added my own tweaks to it. From left to right the search bar consists of a label, an input and a button.
body {
height: 100%;
background-color: rgb(230, 230, 230);
}
/* -----search-container styles----- */
.search-container {
--searchbox-height: 44px;
margin: 0 auto 0 auto;
min-width: 410px;
width: var(--content-width);
}
/* -----searchbar styles----- */
.searchbar {
background: white;
cursor: text;
margin: 0 auto;
max-width: 584px;
box-shadow: 0 1px 6px 0 rgba(32, 33, 36, .28);
border-radius: 22px;
box-sizing: border-box;
font-size: 16px;
height: var(--searchbox-height);
position: relative;
}
/* -----search-input styles----- */
.search-input {
box-sizing: border-box;
margin: 0;
height: 100%;
width: calc(100% - 80px);
border-color: transparent;
color: rgb(117, 117, 117);
font-size: 16px;
line-height: 44px;
margin: auto 0;
overflow: hidden;
text-align: initial;
text-overflow: ellipsis;
user-select: none;
vertical-align: middle;
white-space: nowrap;
}
.search-input:focus {
outline: transparent;
}
.search-input:focus::placeholder {
color: transparent;
}
/* -----search-icon styles---- */
.search-icon-wrapper {
padding: 0 24px;
/* margin-right: 48px; */
}
.search-icon {
-webkit-mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0iIzVGNjM2OCI+PHBhdGggZD0iTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0eiIvPjwvc3ZnPg==);
-webkit-mask-position: center;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 20px;
background-color: rgb(117, 117, 117);
bottom: 0;
left: 16px;
margin: auto;
position: absolute;
top: 0;
width: 24px;
}
/* -----search-microphone styles----- */
.search-microphone {
background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik0xMiAxNWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2N2MwIDEuNjYgMS4zNCAzIDMgM3oiLz48cGF0aCBmaWxsPSIjMzRBODUzIiBkPSJNMTEgMTguOTJoMlYyMmgtMnoiLz48cGF0aCBmaWxsPSIjRjRCNDAwIiBkPSJNNyAxMkg1YzAgMS45My43OCAzLjY4IDIuMDUgNC45NWwxLjQxLTEuNDFDNy41NiAxNC42MyA3IDEzLjM4IDcgMTJ6Ii8+PHBhdGggZmlsbD0iI0VBNDMzNSIgZD0iTTEyIDE3Yy0xLjM4IDAtMi42My0uNTYtMy41NC0xLjQ3bC0xLjQxIDEuNDFBNi45OSA2Ljk5IDAgMCAwIDEyLjAxIDE5YzMuODcgMCA2Ljk4LTMuMTQgNi45OC03aC0yYzAgMi43Ni0yLjIzIDUtNC45OSA1eiIvPjwvc3ZnPg==) no-repeat center;
background-size: 21px 21px;
bottom: 0;
cursor: pointer;
margin-inline-end: 16px;
padding: 22px 12px 0;
position: absolute;
right: 0;
top: 0;
width: 21px;
border-color: transparent;
}
<div class="search-container">
<div class="searchbar">
<label for="search-input" class="search-icon-wrapper">
<div class="search-icon"></div>
</label>
<input type="text" class="search-input" id="search-input" placeholder="Search Google or type a URL">
<button class="search-microphone"></button>
</div>
</div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With