Mikael
Mikael

Reputation: 805

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 ?

Upvotes: 42

Views: 226852

Answers (6)

JosephGarrone
JosephGarrone

Reputation: 4161

I've modified your code a bit:

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

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

#search-icon {
  fill: black;
}

#search-button {
  width: 40px;
}
<div>
  <input type="text" 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 d="M0 0h24v24H0z" fill="none"/>
    </svg>
    </button>
</div>

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)

Upvotes: 10

Abdelbasset Belaid
Abdelbasset Belaid

Reputation: 139

**

this answer dont solve your problem, it's other way to add icon.svg to button

**

you can use embed include button tag:

<button><embed src="icon.svg" /></button>

Upvotes: 4

Peyman Mohamadpour
Peyman Mohamadpour

Reputation: 17944

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>

Upvotes: 7

shadeed9
shadeed9

Reputation: 1826

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>

Upvotes: 62

Bijal
Bijal

Reputation: 132

<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"/>

Upvotes: -8

iyyappan
iyyappan

Reputation: 777

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="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">

<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></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>

Upvotes: 3

Related Questions