Home > Software engineering >  how to a custom icon to my show less button
how to a custom icon to my show less button

Time:01-26

function toggleText() {
  var showMoreText = document.getElementById("more");  
  var buttonText = document.querySelector("#moreButton p");
  
  if (startpoint.style.display === "none") {
    showMoreText.style.display = "none";
    startpoint.style.display = "table-cell";
    buttonText.innerHTML = "Show More";    
    buttonText.classList.remove('less')
  } else {
    showMoreText.style.display = "table-cell";
    startpoint.style.display = "none";
    buttonText.innerHTML = "Show Less";
    buttonText.classList.add('less')
  }
}
 .pink{
    color: #FF7B5F;
  }

  #more {
    display: none;
}

  #moreButton{
    background-color:transparent;
    border-color: transparent; 
   }


   .less{
       color: #FF7B5F;
   }
   
   .more{max-width:20px;
   
   }
 <div id="startpoint"></div>
          <div id="more">
          <div >
            <div >
              <img  width="250" src="./images/clients/RIZEK.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Sabahoo.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Securite.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/SIP.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Spectar.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/stake.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Standard Chartered.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Step.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Switzgroup.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Tarjama.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/WTTC.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Z&V.jpg" alt="">
            </div>
          </div>
        </div>
        <button onclick="toggleText()" id="moreButton">
         <p >Show More</p> 
         <img  src="https://e7.pngegg.com/pngimages/325/32/png-clipart-arrow-down-android-down-arrow-hand-desktop-wallpaper-thumbnail.png" alt="">
        </button>
        </div>

I've been struggling with java script lately because I'm a noob developer, but I finally got it working by creating a functional java script show more show less button with a custom down arrow logo for show more, but I couldn't figure out how to have an up arrow for show less, which is annoying. Any help would be greatly appreciated.

CodePudding user response:

Hope that helps:

Select your icon

var moreIcon = document.querySelector("#moreButton img");

Toggle less class in icon.

moreIcon.classList.add('less');
moreIcon.classList.remove('less');

When less class is added, rotate the icon using CSS

img.more.less {
  transform: rotate(180deg);
}

function toggleText() {
  var showMoreText = document.getElementById("more");  
  var buttonText = document.querySelector("#moreButton p");
  var moreIcon = document.querySelector("#moreButton img");
  
  if (startpoint.style.display === "none") {
    showMoreText.style.display = "none";
    startpoint.style.display = "table-cell";
    buttonText.innerHTML = "Show More";    
    buttonText.classList.remove('less');
    moreIcon.classList.remove('less');
  } else {
    showMoreText.style.display = "table-cell";
    startpoint.style.display = "none";
    buttonText.innerHTML = "Show Less";
    buttonText.classList.add('less');
    moreIcon.classList.add('less');
  }
}
.pink{
    color: #FF7B5F;
  }

  #more {
    display: none;
}

  #moreButton{
    background-color:transparent;
    border-color: transparent; 
   }


   .less{
       color: #FF7B5F;
   }
   
   .more{max-width:20px;
   
   }
   
   img.more.less {
     transform: rotate(180deg);
   }
<div id="startpoint"></div>
          <div id="more">
          <div >
            <div >
              <img  width="250" src="./images/clients/RIZEK.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Sabahoo.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Securite.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/SIP.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Spectar.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/stake.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Standard Chartered.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Step.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Switzgroup.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Tarjama.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/WTTC.jpg" alt="">
            </div>
            <div >
              <img  width="250" src="./images/clients/Z&V.jpg" alt="">
            </div>
          </div>
        </div>
        <button onclick="toggleText()" id="moreButton">
         <p >Show More</p> 
         <img  src="https://e7.pngegg.com/pngimages/325/32/png-clipart-arrow-down-android-down-arrow-hand-desktop-wallpaper-thumbnail.png" alt="">
        </button>
        </div>

  •  Tags:  
  • Related