My pop-Up is overlapping with my button when opened

Viewed 28

I am having an issue with my website. I am making info cards and when you click the "more info" button a pop-up opens with more information. Once clicked the pop up should go above everything and darken the background. When I click the more info button the pop-up and darker background appear however it does not position before the original card. I will add a screenshot below showing what I mean. I have added my code to a snippet and will also add a link to my fiddle http://jsfiddle.net/yxmdp8a4/21/.

enter image description here

/*=============== SERVICES MODAL ===============*/
const modalViews = document.querySelectorAll('.services__modal'),
      modalBtns = document.querySelectorAll('.services__button'),
      modalClose = document.querySelectorAll('.services__modal-close')

let modal = function(modalClick){
    modalViews[modalClick].classList.add('active-modal')
}

modalBtns.forEach((mb, i) =>{
    mb.addEventListener('click', () =>{
        modal(i)
    })
})

modalClose.forEach((mc) =>{
    mc.addEventListener('click', () =>{
        modalViews.forEach((mv) =>{
            mv.classList.remove('active-modal')
        })
    })
})
/*=============== GOOGLE FONTS ===============*/
@import url("https://fonts.googleapis.com/css2?family=Lemon&family=Open+Sans:wght@400;600&display=swap");

/*=============== VARIABLES CSS ===============*/
:root {
  --header-height: 3.5rem;

  /*========== Colors ==========*/
  /*Color mode HSL(hue, saturation, lightness)*/
  --first-color: #38afff;
  --first-color-alt: hsl(204, 94%, 52%);
  --title-color: hsl(233, 32%, 15%);
  --text-color: hsl(233, 4%, 35%);
  --body-color: #daeef6;

  --first-hue: 250;
  --sat: 66%;
  --lig: 75%;
  --second-hue: 219;

  /*========== Font and typography ==========*/
  /*.5rem = 8px | 1rem = 16px ...*/
  --body-font: 'Open Sans', sans-serif;
  --second-font: 'Lemon', cursive;
  --biggest-font-size: 2.25rem;
  --normal-font-size: .938rem;

  /*========== z index ==========*/
  --z-tooltip: 10;
  --z-fixed: 100;
  --z-modal: 1000;
}




/* Responsive typography */
@media screen and (min-width: 1224px) {
  :root {
    --biggest-font-size: 3.5rem;
    --normal-font-size: 1rem;
  }
}

/*=============== BASE ===============*/
* {
  box-sizing: border-box;
  padding: 0;
  margin: 0;
}

body {
  font-family: var(--body-font);
  font-size: var(--normal-font-size);
  background: var(--body-color);
  color: var(--text-color);
  overflow-x: hidden;
  position: relative;
}

#page-background {
  background: url(https://st.depositphotos.com/1244201/3732/i/950/depositphotos_37326627-stock-photo-grey-grainy-plaster-background.jpg);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  mix-blend-mode: soft-light;
}



/*=============== REUSABLE CSS CLASSES ===============*/
.container {
  max-width: 1024px;
  margin-right: 1.5rem;
  margin-left: 1.5rem;
}



/*=============== SERVICES ===============*/
.section__services {
  padding: 4.5rem 0 1rem;
}

.section__title, 
.section__subtitle {
  text-align: center;
}

.section__title {
  font-size: 1.25rem;
  color: var(--first-color);
  margin-bottom: 2rem;
}

.section__subtitle {
  display: block;
  font-size: .813rem;
  color: black;
}

.container__services {
  max-width: 968px;
  margin-left: 1rem;
  margin-right: 1rem;
}

.grid__services {
  display: grid;
  gap: 1.25rem;
}


.services__container {
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5rem;
  padding-top: 1rem;
}

.services__card {
  padding: 5rem 1.5rem 1.5rem;
  border-radius: 1rem;
  background: linear-gradient(to top, #bdbcbfba, #c1cbe2c7), url(../img/pinkflower-removebg-preview.png) no-repeat top center;
}
.services__card2 {
  padding: 5rem 1.5rem 1.5rem;
  border-radius: 1rem;
  background: linear-gradient(to top, #bdbcbfba, #c1cbe2c7), url(../img/yellowflower-removebg-preview.png) no-repeat top center;
}
.services__card3 {
  padding: 5rem 1.5rem 1.5rem;
  border-radius: 1rem;
  background: linear-gradient(to top, #bdbcbfba, #c1cbe2c7), url(../img/blueflower-removebg-preview.png) no-repeat top center;
}
.services__card4 {
  padding: 5rem 1.5rem 1.5rem;
  border-radius: 1rem;
  background: linear-gradient(to top, #bdbcbfba, #c1cbe2c7), url(../img/salmonflower-removebg-preview.png) no-repeat top center;
}

.section__services .services__container .services__card,
.section__services .services__container .services__card2,
.section__services .services__container .services__card3,
.section__services .services__container .services__card4{
z-index: 1;
}


.services__title {
  font-size: 1.35rem;
  margin-bottom: 2.5rem;
  color: var(--text-color);
  text-align: center;
}

.services__button {
  color: var(--text-color);
  font-size: .9rem;
  display: flex;
  align-items: center;
  column-gap: .25rem;
  cursor: pointer;
  margin-left: 55%;
}

.services__button:hover .services__icon {
  transform: translateX(.25rem);
}

.services__icon {
  font-size: 1rem;
  transition: .4s;
}

.services__modal {
  position: fixed;
  inset: 0;
  background-color: hsla(var(--second-hue), 28%, 16%, 0.7);
  padding: 2rem 1rem;
  display: grid;
  place-items: center;
  visibility: hidden;
  opacity: 0;
  transition: .4s;
  z-index: 15;
}

.services__modal-content {
  position: relative;
  background-color: var(--body-color);
  padding: 4.5rem 1.5rem 2.5rem;
  border-radius: 1.5rem;
  z-index: 15;
}

.services__modal-title, 
.services__modal-description {
  text-align: center;
}

.services__modal-title {
  font-size: 1rem;
  color: var(--first-color);
  margin-bottom: 1rem;
}

.services__modal-description {
  font-size: .813rem;
  margin-bottom: 2rem;
}

.services__modal-list {
  display: grid;
  row-gap: .75rem;
}

.services__modal-item {
  display: flex;
  align-items: flex-start;
  column-gap: .5rem;
}

.services__modal-icon {
  font-size: 1.5rem;
  color: var(--first-color);
}

.services__modal-info {
  font-size:  .813rem;
}

.services__modal-close {
  position: absolute;
  top: 1.5rem;
  right: 1.5rem;
  font-size: 1.5rem;
  color: var(--title-color);
  cursor: pointer;
}


/* Active modal */
.active-modal {
  opacity: 1;
  visibility: visible;
}
<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
       
        <!--=============== REMIXICONS ===============-->
        <link href="https://cdn.jsdelivr.net/npm/remixicon@2.5.0/fonts/remixicon.css" rel="stylesheet">

        <!--=============== BOXICONS ===============-->
        <link href='https://unpkg.com/boxicons@2.1.1/css/boxicons.min.css' rel='stylesheet'>
        
        <!--=============== CSS ===============-->
        <link rel="stylesheet" href="assets/css/styles.css">
        <link rel="stylesheet" href="assets/css/scroll_nav.css">

        <title>Safe</title>

        <link rel="apple-touch-icon" href="assets/img/SafeChoice.png">
        

        <meta name="theme-color" content="hsl(196, 60%, 91%)">
        
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="yes">
        
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js"></script>
    



    </head>
    <body>
  <div id="page-background" class="home__shape-bg"></div>


        <!--==================== HEADER ====================-->
       

        <!--==================== MAIN ====================-->
        <main class="main">

            <!--==================== HOME ====================-->
                  


<!--=============== SERVICES ===============-->
<section class="services section__services">
               
                
    <span class="section__subtitle">lipso insdf</span>
    <h2 class="section__title">What We Do</h2>

    <div class="services__container container__services grid__services">
        <div class="services__card">
            <h3 class="services__title">Test 1 </h3>

            <span class="services__button">
                More Info <i class='bx bx-right-arrow-alt services__icon'></i>
            </span>

            <div class="services__modal">
                <div class="services__modal-content">
                    <i class='bx bx-x services__modal-close'></i>

                    <h3 class="services__modal-title">Test</h3>
                    <p class="services__modal-description">
                        um dolor sit amet, consectetur adipiscing elit. 
                    </p>

                    <ul class="services__modal-list">
                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                um dolor sit amet
                            </p>
                        </li>

                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                um dolor sit amet
                            </p>
                        </li>

                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                Prevents the spread of human papillomavirus (HPV).
                            </p>
                        </li>

                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                um dolor sit amet
                            </p>
                        </li>

                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                um dolor sit amet
                            </p>
                        </li>

                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                um dolor sit amet
                            </p>
                        </li>
                       
                    </ul>
                </div>
            </div>
        </div>

        <div class="services__card2">
            <h3 class="services__title">Test 2</h3>

            <span class="services__button">
                More Info <i class='bx bx-right-arrow-alt services__icon'></i>
            </span>

            <div class="services__modal">
                <div class="services__modal-content">
                    <i class='bx bx-x services__modal-close'></i>

                    <h3 class="services__modal-title">Test 2</h3>
                    <p class="services__modal-description">
                        um dolor sit amet derfg er. er  
                    </p>

                    <ul class="services__modal-list">
                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                um dolor sit amet
                            </p>
                        </li>

                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                um dolor sit amet
                            </p>
                        </li>

                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                um dolor sit amet
                            </p>
                        </li>
                       
                    </ul>
                </div>
            </div>
        </div>

        <div class="services__card3">
            <h3 class="services__title">Test 3</h3>

            <span class="services__button">
                More Info <i class='bx bx-right-arrow-alt services__icon'></i>
            </span>

            <div class="services__modal">
                <div class="services__modal-content">
                    <i class='bx bx-x services__modal-close'></i>

                    <h3 class="services__modal-title">Test 4</h3>
                    <p class="services__modal-description">
                        um dolor sit amet rdsg eg ert  
                    </p>

                    <ul class="services__modal-list">
                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                um dolor sit amet
                            </p>
                        </li>

                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                um dolor sit amet
                            </p>
                        </li>

                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                um dolor sit amet
                            </p>
                        </li>
                        
                    </ul>
                </div>
            </div>
        </div>


        <div class="services__card4">
            <h3 class="services__title">Test 4</h3>

            <span class="services__button">
                More Info <i class='bx bx-right-arrow-alt services__icon'></i>
            </span>

            <div class="services__modal">
                <div class="services__modal-content">
                    <i class='bx bx-x services__modal-close'></i>

                    <h3 class="services__modal-title">Coming Soon...</h3>
                    <p class="services__modal-description">
                        um dolor sit amet rtu rtu rtu
                    </p>

                    <ul class="services__modal-list">
                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                um dolor sit amet
                            </p>
                        </li>

                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                               um dolor sit amet
                            </p>
                        </li>

                        <li class="services__modal-item">
                            <i class='bx bx-check services__modal-icon' ></i>
                            <p class="services__modal-info">
                                um dolor sit amet
                            </p>
                        </li>
                        
                    </ul>
                </div>
            </div>
        </div>
    </div>
</section>
<!--=============== End of SERVICES ===============-->

<br/><br/><br/><br/><br/>


        </main>


    </body>
</html>

1 Answers

The problem is the order of your modal. Every modal is inside some div wrapper and it blocks his z-index. I suggest rearranging the order and also try to use just one modal popup and change the content in it.

You can check this:

--> http://jsfiddle.net/s765feLr/15/

There I just take out the first modal popup and put some z-index higher than everything else and it working now. You can do that for all other modal div, but again it isn't an optimal solution.

Related