Страницы

Поиск по вопросам

вторник, 24 декабря 2019 г.

svg mask для лоадера

#html #css #css3 #svg #анимация


Есть такой интересный лоадер:



Как я понимаю, должна быть картинка, svg лоадер, маска. Принцип как тут - пример
(использование mask).

Пока есть набросок:



html,
body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}

* {
  box-sizing: border-box;
}

.box {
  width: 100%;
  height: 100%;
  background: url(http://farm4.staticflickr.com/3137/2698866948_f273755a09_z.jpg?zz=1)
center no-repeat;
  -webkit-background-size: cover;
  background-size: cover;
  display: flex;
  align-items: center;
  justify-content: center;
}

.loader {
  max-width: 200px;
  width: 100%;
}
Вариант с маской: html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizelegibility; } html, body { height: 100%; } body { font-family: 'Open Sans', sans-serif; } .text { position: fixed; top: 0; left: 0; width: 100%; height: 250px; z-index: 10; } svg { width: 100%; height: inherit; } svg text { text-anchor: middle; } svg #alpha { fill: #666666; } svg #title { letter-spacing: -2px; font-size: 6em; font-weight: 800; } svg #base { fill: black; -webkit-mask: url(#mask); mask: url(#mask); } section.intro { background: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/953/mision.jpg) no-repeat top center; background-size: cover; position: relative; width: 100%; min-height: 100%; }
На codepen. Но проблема, что svg внутри svg (думаю это совсем не валидно), и анимация не совсем такая, когда активная секция появляется предыдущая должна быть на половину видимой. Вопрос: как можно реализовать такой лоадер (как на картинке), можно ли правильно применить к существующему svg маску?


Ответы

Ответ 1



Загрузчик сделал в два раза больше, чем было в вопросе. Иначе смысла нет от прозрачности,- ничего не было видно. В случае необходимости можно поменять на max-width: 200px; Позиционирование ещё нужно доработать. Вся соль анимации - использование stroke-dasharray совместно с stroke-dashoffset. Один круг- шаблон. Второй круг- бегунок по шаблону. .box { width: 100%; height: 100%; background: url(https://i.stack.imgur.com/hopXQ.jpg) center no-repeat; -webkit-background-size: cover; background-size: cover; display: flex; align-items: center; justify-content: center; } .loader { max-width: 400px; width: 100%; }


Комментариев нет:

Отправить комментарий