How to add filter with Portfolio Gallery using HTML CSS and JavaScript? Last Updated : 18 Jun, 2024 Summarize Comments Improve Suggest changes Share Like Article Like Report A portfolio gallery is ideal for websites with diverse or extensive content. It allows you to showcase all content on the front page in an organized manner. By adding filters, users can easily find specific content they are interested in. Portfolio GalleryApproachThe HTML defines the structure, including a container for the title, buttons for filtering different categories, and a gallery grid for portfolio items grouped by categories like Markup, Style, and Scripting.The CSS styles the page elements, setting dimensions, colors, and layout properties. It includes responsive design adjustments to ensure the gallery adapts to various screen sizes, with columns changing width at different breakpoints. Buttons are assigned classes and click events to filter portfolio items. The geeksportal function shows or hides items based on the category selected.The geeksportal function filters items by adding or removing the "show" class to elements based on their category. JavaScript adds an event listener to each button to highlight the currently active filter button by adding the "active" class. Example: The example shows how to add filter with Portfolio Gallery using HTML, CSS and JavaScript. html <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <!-- Title and tag --> <div class="container"> <h1>GeeksforGeeks</h1> <h3>A Computer Science Portal for Geeks</h3> <hr> <!-- Content of the body--> <h2>Portfolio of Languages</h2> <!-- Button foreach group --> <div id="filtering"> <button class="bttn active" onclick="geeksportal('all')"> Show all </button> <button class="bttn" onclick="geeksportal('Markup')"> Markup </button> <button class="bttn" onclick="geeksportal('Style')"> Style </button> <button class="bttn" onclick="geeksportal('Scripting')"> Scripting </button> </div> <!-- Portfolio Gallery Grid --> <div class="row"> <div class="column Markup"> <div class="content"> <img src= "https://www.geeksforgeeks.org/wp-content/uploads/html.png" alt="HTML" style="width:100%"> <h3><a href="#"> HTML Tutorials </a> </h3> <p> HTML stands for Hyper Text Markup Language. It is used to design web pages using markup language. HTML is the combination of Hypertext and Markup language. Hypertext defines the link between the web pages. </p> </div> </div> <div class="column Styleshit"> <div class="content"> <img src= "https://www.geeksforgeeks.org/wp-content/uploads/CSS.png" alt="CSS" style="width:100%"> <h3><a href="#"> CSS Tutorials </a> </h3> <p> Cascading Style Sheets, fondly referred to as CSS, is a simply designed language intended to simplify the process of making web pages presentable. CSS allows you to apply styles to web pages. </p> </div> </div> <div class="column Scripting"> <div class="content"> <img src= "https://www.geeksforgeeks.org/wp-content/uploads/php-1.png" alt="" style="width:100%"> <h3><a href="#"> PHP Tutorials </a> </h3> <p> The term PHP is an acronym for PHP: Hypertext Preprocessor. PHP is a server-side scripting language designed specifically for web development. PHP can be easily embedded in HTML files. </p> </div> </div> <div class="column Scripting"> <div class="content"> <img src= "https://www.geeksforgeeks.org/wp-content/uploads/javascript.png" alt="" style="width:100%"> <h3><a href="#"> JavaScript Tutorials </a> </h3> <p> Javascript was developed by Brendan Eich in 1995. At first, it was called LiveScript but was later name to JavaScript. JavaScript is the muscle of the structure </p> </div> </div> </div> </div> </body> </html> CSS /* Wildcard styling */ * { box-sizing: border-box; } /* Padding for whole body */ body { padding: 15px; } .container { max-width: 1200px; margin: auto; } /* Styling h2 tag */ h1 { Color: green; word-break: break-all; } /* Anchor tag decoration */ a { text-decoration: none; color: #5673C8; } a:hover { color: lightblue; } .row { margin: 0px -14px; padding: 8px; } .row>.column { padding: 6px; } .column { float: left; width: 25%; display: none; } /* Content decoration */ .content { background-color: white; padding: 10px; border: 1px solid gray; } /* Paragraph decoration */ p { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden; } .row:after { content: ""; display: table; clear: both; } .content { background-color: white; padding: 10px; border: 1px solid gray; } .show { display: block; } /* Style the filter buttons */ .bttn { border: none; padding: 8px 14px; background-color: gray; } .bttn:hover { background-color: #007EE5; opacity: 0.8; } .bttn.active { background-color: #007EE5; color: white; } /* Window size 850 width set */ @media screen and (max-width: 850px) { .column { width: 50%; } } /* Window size 400 width set */ @media screen and (max-width: 400px) { .column { width: 100%; } } JavaScript geeksportal("all") function geeksportal(c) { let x, i; x = document.getElementsByClassName("column"); if (c == "all") c = ""; for (i = 0; i < x.length; i++) { w3RemoveClass(x[i], "show"); if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show"); } } function w3AddClass(element, name) { let i, arr1, arr2; arr1 = element.className.split(" "); arr2 = name.split(" "); for (i = 0; i < arr2.length; i++) { if (arr1.indexOf(arr2[i]) == -1) { element.className += " " + arr2[i]; } } } function w3RemoveClass(element, name) { let i, arr1, arr2; arr1 = element.className.split(" "); arr2 = name.split(" "); for (i = 0; i < arr2.length; i++) { while (arr1.indexOf(arr2[i]) > -1) { arr1.splice(arr1.indexOf(arr2[i]), 1); } } element.className = arr1.join(" "); } // Add active class to the current // button (highlight it) let btnContainer = document.getElementById("filtering"); let btns = btnContainer.getElementsByClassName("bttn"); for (let i = 0; i < btns.length; i++) { btns[i].addEventListener("click", function () { let current = document.getElementsByClassName("active"); current[0].className = current[0].className.replace(" active", ""); this.className += " active"; }); } Output: Portfolio Gallery Comment More infoAdvertise with us Next Article How to add filter with Portfolio Gallery using HTML CSS and JavaScript? S Sabya_Samadder Follow Improve Article Tags : JavaScript Web Technologies CSS-Misc HTML-Misc JavaScript-Misc HTML-Questions CSS-Questions JavaScript-Questions +4 More Similar Reads How to Create a Portfolio Website using HTML CSS and JavaScript ? A portfolio website is a website that represents you online on the web pages. It contains different sections like Introduction to Yourself, About You, Your Services, Your Contact Details, and Your Portfolio. We are going to build all of the sections with an interactive and attractive web design that 15+ min read How to create a Portfolio Gallery using HTML and CSS ? The portfolio gallery is useful when your website contains different types of content or so much content. With the help of a portfolio gallery, you can easily display all the content on your front page to the user. To create a portfolio gallery we will need only HTML and CSS. We can use JavaScript a 4 min read How to Create Image Lightbox Gallery using HTML CSS and JavaScript ? A lightbox gallery is basically used to view the gallery images in detail specifically. You can code the JavaScript to do so but also we can use some downloaded JS and CSS. In this article, we will download the lightbox and attach the JS and CSS files into our code. For our own design satisfaction, 3 min read How to preview Image on click in Gallery View using HTML, CSS and JavaScript ? In this article, we see how easily we can create an Image Gallery with a preview feature using HTML, CSS, and some JavaScript.ApproachCreate a div with a class container.Create two more div inside the first div one for the main view and the other for the side view with classes main_view and side_vie 2 min read How to Create Image Gallery using JavaScript? An Image Gallery is a collection of images displayed in a grid or slideshow format on a webpage. To create an Image Gallery using JavaScript, you can dynamically load images, create HTML elements, and use CSS for styling. JavaScript can add interactivity, like transitions and navigation controls.Pro 3 min read Like