анимация открытия окна

как сделать плавное появления окна? (простите за костыли, я только учусь)

.my_modal {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1050;
  display: none;
  margin: 0;
  padding: 0;
}

.my_modal:target {
  display: block;
  overflow-y: auto;
}

.my_modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}

@media (min-width:576px) {
  .my_modal-dialog {
    max-width: 460px;
    margin: 30px auto;
  }
}

.my_modal-content {
  position: relative;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  background-color: #fff;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  border: 1px solid rgba(0, 0, 0, .2);
  border-radius: 6px;
  outline: 0;
}

@media (min-width:768px) {
  .my_modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
    box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
  }
}

.my_modal-header {
  display: block;
  padding: 14px 14px 4px;
}

.my_modal-title {
  color: black;
  margin-top: 0;
  margin-bottom: 0;
  line-height: 1.5;
  font-size: 1.25rem;
  font-weight: 500;
  border-bottom: 1px solid #d4d4d4;
}

.close {
  padding: 1px 5px 0;
  border: 1px solid #000;
  border-radius: 50%;
  font-family: sans-serif;
  font-size: 24px;
  font-weight: 700;
  line-height: 1;
  color: #000;
  text-shadow: 0 1px 0 #fff;
  opacity: .5;
  text-decoration: none;
  top: 4px;
  right: 4px;
  position: absolute;
}

.close:focus,
.close:hover {
  color: #000;
  text-decoration: none;
  cursor: pointer;
  opacity: .75;
}

.my_modal-body {
  position: relative;
  -webkit-box-flex: 1;
  -webkit-flex: 1 1 auto;
  -ms-flex: 1 1 auto;
  flex: 1 1 auto;
  padding: 15px;
  overflow: auto;
}

div.knopka a {
  text-decoration: none;
  color: white;
  padding: 20px 30px;
  border-radius: 30px;
  text-transform: uppercase;
  letter-spacing: 2px;
  background-image: linear-gradient(to right, #512DA8 0%, #6F3DE6 51%, #512DA8 100%);
  background-size: 200% auto;
  box-shadow: 0 0 20px rgba(0, 0, 0, .1);
  transition: .5s;
}

div.knopka a:hover {
  background-position: right center;
}
<div class="knopka" style="text-align: center">
  <a class="kupitknopka" href="#modal_open">Купить</a>
</div>
<div id="modal_open" class="my_modal">
  <div class="my_modal-dialog">
    <div class="my_modal-content">
      <div class="my_modal-header">
        <p class="my_modal-title">Как купить вип:</p>
        <a href="#" title="Закрыть модальное окно" class="close">×</a>
      </div>
      <div class="my_modal-body">
        Стоимость - 50р месяц.
        <br> Тинькофф - 2200700431974418
        <br> Киви - qiwi.com/n/vkurianov
        <br>
        <span style="color:red">В комментариях обязательно укажите свой стим профиль!!!</span>
      </div>
    </div>
  </div>
</div>


Ответы (1 шт):

Автор решения: Prog

.my_modal {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1050;
  display: none;
  margin: 0;
  padding: 0;
}

.my_modal:target {
  display: block;
  overflow-y: auto;
}

.my_modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}

@media (min-width:576px) {
  .my_modal-dialog {
    max-width: 460px;
    margin: 30px auto;
  }
}

.my_modal-content {
  position: relative;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  background-color: #fff;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  border: 1px solid rgba(0, 0, 0, .2);
  border-radius: 6px;
  outline: 0;
}

@media (min-width:768px) {
  .my_modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
    box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
  }
}

.my_modal-header {
  display: block;
  padding: 14px 14px 4px;
}

.my_modal-title {
  color: black;
  margin-top: 0;
  margin-bottom: 0;
  line-height: 1.5;
  font-size: 1.25rem;
  font-weight: 500;
  border-bottom: 1px solid #d4d4d4;
}

.close {
  padding: 1px 5px 0;
  border: 1px solid #000;
  border-radius: 50%;
  font-family: sans-serif;
  font-size: 24px;
  font-weight: 700;
  line-height: 1;
  color: #000;
  text-shadow: 0 1px 0 #fff;
  opacity: .5;
  text-decoration: none;
  top: 4px;
  right: 4px;
  position: absolute;
}

.close:focus,
.close:hover {
  color: #000;
  text-decoration: none;
  cursor: pointer;
  opacity: .75;
}

.my_modal-body {
  position: relative;
  -webkit-box-flex: 1;
  -webkit-flex: 1 1 auto;
  -ms-flex: 1 1 auto;
  flex: 1 1 auto;
  padding: 15px;
  overflow: auto;
}

div.knopka a {
  text-decoration: none;
  color: white;
  padding: 20px 30px;
  border-radius: 30px;
  text-transform: uppercase;
  letter-spacing: 2px;
  background-image: linear-gradient(to right, #512DA8 0%, #6F3DE6 51%, #512DA8 100%);
  background-size: 200% auto;
  box-shadow: 0 0 20px rgba(0, 0, 0, .1);
  transition: .5s;
}

div.knopka a:hover {
  background-position: right center;
}
#modal_open {
opacity: 0; animation: ani 1s forwards; }

@keyframes ani {
  0% {opacity: 0;}
  100% {opacity: 1;}
}
<div class="knopka" style="text-align: center">
  <a class="kupitknopka" href="#modal_open">Купить</a>
</div>
<div id="modal_open" class="my_modal">
  <div class="my_modal-dialog">
    <div class="my_modal-content">
      <div class="my_modal-header">
        <p class="my_modal-title">Как купить вип:</p>
        <a href="#" title="Закрыть модальное окно" class="close">×</a>
      </div>
      <div class="my_modal-body">
        Стоимость - 50р месяц.
        <br> Тинькофф - 2200700431974418
        <br> Киви - qiwi.com/n/vkurianov
        <br>
        <span style="color:red">В комментариях обязательно укажите свой стим профиль!!!</span>
      </div>
    </div>
  </div>
</div>

→ Ссылка