I am trying to put the svg icon inside the faq button. Can i use only flex box to align the icon inside the button?
And this what i want to achieve:
This is some of my css:
.section-custom{
margin: 50px;
display: flex;
flex-direction: column;
align-items: center; /*cross axis for column */
}
.div-faq{
padding-top: 40px;
padding-bottom: 40px;
}
.div-faq-list-item{
display: flex;
align-items: center; /*cross axis for row */
}
.faq-btn{
background-color: #333;
font-size: 25px;
border: 0;
width: 800px;
padding: 22px;
margin: 4px;
text-align: left;
}
And this is the HTML:
<section class="section-custom">
<h1>Frequently Asked Questions</h1>
<ul class="div-faq">
<li class="div-faq-list-item">
<button class="faq-btn">What is Netflix?
</button>
<svg style="height: 50px; width: 50px; color: rgb(255, 255, 255);" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"><rect width="100%" height="100%" fill="#333333"></rect>
<path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z" fill="#ffffff"></path>
</svg>
</li>
<li class="div-faq-list-item"><button class="faq-btn">How much does Netflix cost?</button>
</li>
<li class="div-faq-list-item"><button class="faq-btn">Where can I watch?</button></li>
<li><button class="faq-btn">How do i cancel?</button></li>
<li><button class="faq-btn">What can I watch on Netflix?</button></li>
<li><button class="faq-btn">is Netflix good for kids?</button></li>
</ul>
</section>
Remove the fill property from the SVG icon and also make the button and SVG background transparent. In-display flex you can achieve this result by justify-content:space-between;
ul{ list-style:none; display:flex; flex-direction:column; gap:0.6rem; background-color:black; padding:1rem; } ul li{ display:flex; padding:1rem; background-color:#2e2e2e; color:white; justify-content:space-between; align-items:center } li svg{ fill:transparent; } button{ font-size:1.6rem; background-color:transparent; color:white; border:none; }
<ul class="div-faq"> <li class="div-faq-list-item"> <button class="faq-btn">What is Netflix?</button> <svg style="height: 50px; width: 50px; color: rgb(255, 255, 255);" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"><rect width="100%" height="100%" ></rect> <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z" fill="#ffffff"></path> </svg> </li> <li class="div-faq-list-item"> <button>How much does Netflix cost?</button> <svg style="height: 50px; width: 50px; color: rgb(255, 255, 255);" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"><rect width="100%" height="100%" ></rect> <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z" fill="#ffffff"></path> </svg> </li> </ul>
.main{ margin: 50px; } .button-box{ display: flex; justify-content: space-between; background-color: #aaa; height: 50px; line-height: 50px; } .title{ padding: 0px 20px; } .icon{ align-self: center; background-color: #bbb; width: 40px; display: flex; justify-content: center; } .icon img{ width: 24px; height: 16px; }
<div class="main"> <div class="button-box"> <div class="title">Title</div> <div class="icon"><img src="https://cdnjs.cloudflare.com/ajax/libs/ionicons/1.2.3/src/icon-ios7-plus.svg" /></div> </div> </div>
In order to add the svg icon to the button, you must include it inside the tags as shown:
<button class="faq-btn">
What is Netflix?
<svg style="height: 50px; width: 50px; color: rgb(255, 255, 255);" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16">
<rect width="100%" height="100%" fill="#333333"></rect>
<path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z" fill="#ffffff"></path>
</svg>
</button>
In the css styling, make use of flexbox to help position elements. In your case, flexbox should be applied to the button class to allow for the use of space-between and center item alignment. The css styling should look like this:
.faq-btn {
display: flex;
justify-content: space-between;
align-items: center;
background-color: #333;
font-size: 25px;
border: 0;
width: 800px;
padding: 22px;
margin: 4px;
text-align: left;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.