Как создать загрузчик CSS с градиентной рамкой и прозрачностью? - PullRequest
2 голосов
/ 14 февраля 2020

Я пытаюсь сделать загрузчик с HTML и CSS У меня есть загрузчик, но есть проблема, когда у меня есть информация за центром загрузчика, информация не отображается, и причина в том, что я иметь фон: белый; что мне нужно избегать показа градиента, потому что если я уберу белый цвет и поставлю прозрачным, появится градиент.

Поэтому мне нужно решить проблему, когда у меня что-то позади загрузчика

.loader {
  display: flex;
  justify-content: center;
  position: fixed;
  top: 50%;
  left: 50%;
  z-index: 10;
}

.loader .circle {
  background-image:linear-gradient(90deg, #a03297, #e90b5a);
  width: 80px;
  height: 80px;
  border-style: solid;
  border-color: transparent;
  border-radius: 50%;
  border-width: 1px;
  animation: rot 2s linear infinite; 
  padding: 10px;
  box-sizing: content-box;
}

.circle > div {
  background:white;
  height: 100%;
  width: 100%;
  border-style: solid;
  border-color:transparent;
  border-radius: 50%;
  border-width: 1px;
}

@keyframes rot {
   0% { transform: rotate(0deg) }
   100% { transform: rotate(360deg); }
}
<div class="loader">
  <div class="circle">
    <div></div>
  </div>
</div>


<p style="text-align: center; margin-top: 140px;">aaaaaaasssssssssssssssssçççççççççççççççççççççççççççççççççççççççççssssssss</p>

1 Ответ

4 голосов
/ 14 февраля 2020

Используйте mask, чтобы сделать внутреннюю часть прозрачной:

.loader {
  background:linear-gradient(yellow, #e90b5a);
  /* Show only 10px from the border */
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 10px),#fff 0);
          mask:radial-gradient(farthest-side,transparent calc(100% - 10px),#fff 0);
  width: 100px;
  height: 100px;
  border-radius: 50%;  
  position: fixed;
  top: calc(50% - 50px);
  left: calc(50% - 50px);  
  animation: rot 2s linear infinite; 
}

@keyframes rot {
   100% { transform: rotate(360deg); }
}

body {
  background:linear-gradient(to right,grey,white)
}
<div class="loader"></div>
...