zach_21
zach_21

Reputation: 321

How to get the :before tag to show on top of ul element?

I am creating a dropdown box for the account at the top right corner of the window. I have added the code for the :before but does not seem to show above the element. The :before element is meant to be a triangle at the top of the ul container which points to where the dropdown has come from.

.DropDownContainer{
    color: rgba(0, 0, 0, 0.87);
    background-color: rgb(255, 255, 255);
    transition: transform 250ms cubic-bezier(0.23, 1, 0.32, 1) 0ms, opacity 250ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;
    box-sizing: border-box;
    font-family: Roboto, sans-serif;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 6px, rgba(0, 0, 0, 0.12) 0px 1px 4px;
    border-radius: 2px;
    position: fixed;
    z-index: 2100;
    opacity: 1;
    transform: scale(1, 1);
    transform-origin: left top;
    max-height: 670px;
    overflow-y: auto;
    float: left;
    text-align: left;
    top: 55px;
    right: 20px;
    padding: 26px 0;
    border-radius: 8px;
    position: absolute;
    top: calc(60px - 10px);
    width: 210px;
    list-style: none;
    background-clip: padding-box;
    padding-left:0;
  }
  .DropDownContainer:before{
    content: '';
    width: 0;
    height: 0;
    position: absolute;
    top: -20px;
    right: 120px;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-bottom: 6px solid #fff;
  }
   .DropDownButton{
      display: flex;
      justify-content: left;
      padding: 10px;
      padding-left: 28px;
      padding-right: 28px;
      letter-spacing: 1px;
      color: rgb(38, 38, 38);
  }

  .DropDownButton a{
      text-decoration: none;
  }

  .DropDownButton img{
      height: 20px;
      width: 20px;
      margin-right: 10px;
  }

  .DropDownButton:hover{
    background-color: rgba(36, 36, 36, 0.071);
      cursor: pointer;
  }
(<ul className={classes.DropDownContainer}>
               
                    <li className={classes.DropDownButton} onClick={() => setShowDropDown(false)}>Profile</li>
                <li className={classes.DropDownButton}>Edit Profile</li>
                <li className={classes.DropDownButton}>My Hub</li>
                <li className={classes.DropDownButton} >My Favourites</li>
                <li className={classes.DropDownButton} >My Must Reads</li>
                <li className={classes.DropDownButton}>Account Settings</li>
                <li className={classes.DropDownButton} >Sign Out</li>
            </ul>)

It is meant to be a triangle at the top of the ul container.

Upvotes: 1

Views: 79

Answers (1)

Matin B.
Matin B.

Reputation: 405

You should write two colons not only a colon for ' before '. I mean your code should be as such :

.DropDownContainer::before {
    content: '';
    width: 0;
    height: 0;
    position: absolute;
    top: -20px;
    right: 120px;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-bottom: 6px solid #fff;
}

Upvotes: 1

Related Questions