Jump to content

Radial Menu using HTML, CSS, and Javascript - Codepen implementation

Recommended Posts

Site URL: https://pte.squarespace.com/


I've got quite an ambitious task as a beginner in CSS, HTML, & Javascript. I would love to implement this Radial codepen design in a 3 x 2 grid to showcase all of the different software that my team uses.


I've tried copying & pasting the codepen into a code block, but I couldn't get it to work. I've attached the design we are shooting for. The software logos do not need to be clickable. So, if you can help me implement the codepen six times in this grid, I think I'd be able to take it from there be replacing all the logos. 



Link to comment
  • Replies 3
  • Views 1.6k
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images


In order to try and get it working in Squarespace, I just added all the code using a codeblock and <script> and <style> tags.  The screenshots that I initially sent were just mockup designs in photoshop. I couldn't get it to work on my end so I removed my attempts. Feel free to test it out on a new page if that helps.

Edited by pbueno24
Link to comment

Try adding this code to Code Block

<nav class="circular-menu">

  <div class="circle">
    <a href="" class="fa fa-home fa-2x"></a>
    <a href="" class="fa fa-facebook fa-2x"></a>
    <a href="" class="fa fa-twitter fa-2x"></a>
    <a href="" class="fa fa-linkedin fa-2x"></a>
    <a href="" class="fa fa-github fa-2x"></a>
    <a href="" class="fa fa-rss fa-2x"></a>
    <a href="" class="fa fa-pinterest fa-2x"></a>
    <a href="" class="fa fa-asterisk fa-2x"></a>
  <a href="" class="menu-button fa fa-bars fa-2x"></a>

  .circular-menu {
  width: 250px;
  height: 250px;
  margin: 0 auto;
  position: relative;

.circle {
  width: 250px;
  height: 250px;
  opacity: 0;
  -webkit-transform: scale(0);
  -moz-transform: scale(0);
  transform: scale(0);

  -webkit-transition: all 0.4s ease-out;
  -moz-transition: all 0.4s ease-out;
  transition: all 0.4s ease-out;

.open.circle {
  opacity: 1;

  -webkit-transform: scale(1);
  -moz-transform: scale(1);
  transform: scale(1);

.circle a {
  text-decoration: none;
  color: white;
  display: block;
  height: 40px;
  width: 40px;
  line-height: 40px;
  margin-left: -20px;
  margin-top: -20px;
  position: absolute;
  text-align: center;


.circle a:hover {
  color: #eef;

.menu-button {
  position: absolute;
  top: calc(50% - 30px);
  left: calc(50% - 30px);
  text-decoration: none;
  text-align: center;
  color: #444;
  border-radius: 50%;
  display: block;
  height: 40px;
  width: 40px;
  line-height: 40px;
  padding: 10px;
  background: #dde;

.menu-button:hover {
  background-color: #eef;
  // Demo by http://creative-punch.net

var items = document.querySelectorAll('.circle a');

for(var i = 0, l = items.length; i < l; i++) {
  items[i].style.left = (50 - 35*Math.cos(-0.5 * Math.PI - 2*(1/l)*i*Math.PI)).toFixed(4) + "%";
  items[i].style.top = (50 + 35*Math.sin(-0.5 * Math.PI - 2*(1/l)*i*Math.PI)).toFixed(4) + "%";

document.querySelector('.menu-button').onclick = function(e) {
   e.preventDefault(); document.querySelector('.circle').classList.toggle('open');



Email me if you have need any help (free, of course.). Answer within 24 hours. 
Or send to forum message

Contact Customer Care - Learn CSS - Buy me a coffee (thank you!)

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

  • Create New...

Squarespace Webinars

Free online sessions where you’ll learn the basics and refine your Squarespace skills.

Hire a Designer

Stand out online with the help of an experienced designer or developer.