Add Svg Icon into Button with Css/Html?

Add Svg Icon into Button with Css/Html?

I want to have the icon displayed inside the button tag, see code below:

#header-search {
  width: 200px;
  background: @header-color;
  color: white;
  font-size: 12pt;
  border: 0px solid;
  outline: 0;
  vertical-align: -50%;
}

#header-search::-webkit-input-placeholder {
  color: white;
}

#search-button {
  background: #FFFFFF;
  vertical-align: -50%;
}

.header-view-logo {
  vertical-align: middle;
}

#search-icon {
  fill: white;
}
<button id="search-button" />
<svg id="search-icon" class="search-icon" viewBox="0 0 24 24">
    <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>
    <path d="M0 0h24v24H0z" fill="none"/>
</svg>

But the icon is just displayed all over the place really big one, how can i get it to fit inside the button ?

3

5 Answers

Not sure if the button is not closed or just you copied it here and forgot to close it.

#search-button {
  width: 100px;
  height: 50px;
}
    
#search-button svg {
  width: 25px;
  height: 25px;
}
<button id="search-button">
    <svg id="search-icon" class="search-icon" viewBox="0 0 24 24">
        <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>
        <path d="M0 0h24v24H0z" fill="none"/>
    </svg>
 </button>
2

I've modified your code a bit an put it up at this fiddle.

The two problems were:

  1. You didn't close your button properly, it needs to end after the SVG
  2. You needed to specify a width for the button (As you can see I left off some of your other CSS)

I suggest you, doing it this way:

#header-search, #search-button {
    display: inline-block;
    vertical-align: top;
    line-height: 0;
    font-size: 1.1rem;
    height: 1.7rem;
    padding: 0;
}

#header-search {
    margin: 0;
    line-height: 0;
    padding: 0.8rem 0.7rem
}

#search-button {
    width: 2.4rem;
    height: 1.9rem;
}

#search-icon {
  width: 1.3rem;
  height: 1.3rem;
}
<div class="search">
    <input id="header-search" type="search" placeholder="Search..." />
    <button id="search-button">
        <svg id="search-icon" class="search-icon" viewBox="0 0 24 24">
            <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>
            <path d="M0 0h24v24H0z" fill="none"/>
        </svg>
    </button>
</div>

I have checked your code,Plz try to do this.

box-model(Depending on height,weight,margin,padding) only reason.

<!DOCTYPE html>
<html>
<head>


<link rel="stylesheet" type="text/css" href="">

<script type="text/javascript" src=""></script>
    <style type="text/css">

  #header-search {
    border: 1px solid #eee;
    color: black;
    float: left;
    font-size: 12pt;
    height: 40px;
    margin: 0;
    outline: 0 none;
    padding: 0 10px;
    vertical-align: top;
    width: 200px;
}

#header-search::-webkit-input-placeholder {
    color: white;
}

#search-button {
    background-color: red !important;
    height: 40px;
    margin: 0 auto !important;
    padding: 0;
    width: 40px;
}
.header-view-logo {
    vertical-align: middle;
}

#search-icon {
    fill:white;
}
    </style>

</head>
<body>
    <div>
<input type="search" id="header-search" placeholder="Search..." />
<button id="search-button">
<svg id="search-icon" class="search-icon" viewBox="0 0 24 24">
<path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z">
<path fill="none" d="M0 0h24v24H0z">
</svg>
</button>

</body>

</html>
<svg height="20" width="40" >
<path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5  3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Alexander Ross
Author

Alexander Ross

Alexander Ross has covered the video game industry for a decade, writing deep dives on game design, esports tournaments, VR developments, and gaming culture.