Индикатор выполнения внешнего круга

Я пытаюсь совместить внешний круг индикатора выполнения с темным кругом за ним. Я отрегулировал высоту и ширину нескольких элементов, но не повезло.

Я пытался:

  • Настройка ширины SVG
  • Регулировка высоты и ширины круга

Вот как я пытаюсь это сделать:

Вот как это выглядит в настоящее время:

Пожалуйста, помогите объяснить, что я должен настроить?

#progress-bar {
  position: absolute;
  left: 50%;
  top: 55%;
  transform: translate(-51%, -50%);
  width: 40%;
}

.container {
  position: relative;
  width: 100%;
  display: flex;
  justify-content: space-around;
}

.container .card {
  position: relative;
  width: 400px;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 400px;
  border-radius: 4px;
  text-align: center;
  overflow: hidden;
  transition: 0.5s;
}

.container .card:before {
  content: '';
  position: absolute;
  top: 0;
  left: -50%;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.03);
  pointer-events: none;
  z-index: 1;
}

.percent {
  position: relative;
  width: 300px;
  height: 300px;
  border-radius: 50%;
  box-shadow: inset 0 0 50px #000;
  background: #222;
  z-index: 1000;
}

.percent .number {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 50%;
}

.percent .number h2 {
  color: #777;
  font-weight: 700;
  font-size: 40px;
  transition: 0.5s;
}

.card:hover .percent .number h2 {
  color: #fff;
  font-size: 60px;
}

.percent .number h2 span {
  font-size: 24px;
  color: #777;
  transition: 0.5s;
}

.card:hover .percent .number h2 span {
  color: #fff;
}

.text {
  position: relative;
  color: #777;
  margin-top: 20px;
  font-weight: 700;
  font-size: 18px;
  letter-spacing: 1px;
  text-transform: uppercase;
  transition: 0.5s;
}

svg {
  position: relative;
  width: 150px;
  height: 150px;
  z-index: 1000;
}

svg circle {
  width: 100%;
  height: 100%;
  fill: none;
  stroke: #191919;
  stroke-width: 10;
  stroke-linecap: round;
  transform: translate(5px, 5px);
}

svg circle:nth-child(2) {
  stroke-dasharray: 440;
  stroke-dashoffset: 440;
}

.card:nth-child(1) svg circle:nth-child(2) {
  stroke-dashoffset: calc(
    440 - (440 * 90) / 100
  ); /* use to adjust progress bar */
  stroke: #00ff43;
}
  <div class = "container">
              <div class = "card">
                <div class = "box">
                  <div class = "percent">
                    <svg>
                      <circle cx = "70" cy = "70" r = "70"></circle>
                      <circle cx = "70" cy = "70" r = "70"></circle>
                    </svg>
                    <div class = "number">
                      <h2>90<span>%</span></h2>
                    </div>
                  </div>
                  <h2 class = "text">Html</h2>
                </div>
              </div>
            </div>

Спасибо за помощь, Ной, однако он центрировал только внешний круг (зеленый круг); Я пытаюсь масштабировать внешний круг (зеленый круг), чтобы он соответствовал размеру внутреннего темного круга (черный круг).

Odins Code 23.12.2020 22:09
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
1
208
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
<style>
    svg {
      position: relative;
      width: 200px;
      height: 200px;
      z-index: 1000;
    }
    svg circle{
        fill: none;
        stroke-width: 10;
        stroke-linecap: round;
        stroke-dasharray: 1000;
    }
    svg circle:nth-child(2){
        stroke: #f00;
        stroke-dashoffset: 1000;
        animation: dash 2s linear forwards;
    }
    svg circle:nth-child(1){
        stroke-dashoffset: 0;
        stroke: #000;
    }
    @keyframes dash {
      to {
        stroke-dashoffset: 0;
      }
    }
</style>
<body>
<svg>
    <circle cx = "50%" cy = "50%" r = "40%"></circle>
    <circle cx = "50%" cy = "50%" r = "40%"></circle>
</svg>
</body>

установите значения cx и cy на 50% и r на 40%
простая анимация выше должна показывать анимацию stroke-dashoffset между stroke-dashoffset: 0; и stroke-dashoffset: 1000;
Следует отметить, что значение между 0 и 1000 не является линейным. Это означает, что stroke-dashoffset: 100; не 10% круга.
Вы можете внедрить этот образец в свой код и изменить ширину и высоту SVG в %.

Другие вопросы по теме