Реализуйте процентную точку с помощью CSS - PullRequest
0 голосов
/ 30 ноября 2018

Я должен реализовать вертикальную линию с процентной меткой, которая должна быть расположена относительно процентного бара, как показано на скриншоте:

enter image description here

Я пыталсясделать базовую реализацию, но не к успеху https://stackblitz.com/edit/js-74f8sl?file=index.html Как реализовать разметку и стиль для такого случая?Должен ли я использовать относительное позиционирование или может хватить чего-нибудь из flexbox?

1 Ответ

0 голосов
/ 30 ноября 2018

Я бы, наверное, выбрал сочетание гибкого и относительного / абсолютного позиционирования.В зависимости от того, что вы используете в отношении процессора (sass), вы можете автоматически префиксировать его, чтобы сделать его совместимым и с более старыми версиями браузеров.

Вот пример:

body {
  background-color: lightgray;
}

.track-bar {
  width: 600px;
  height: 30px;
  margin-top: 30px;
  background-color: white;
  display: flex;
  align-items: center;
  align-content: center;
  flex-wrap: no-wrap;
  position: relative;
  z-index: 1030;
}

.rating {
  height: 100%;
  color: white;
  opacity: 0;
  position: relative;
  text-align: center;
  text-transform: uppercase;
  display: flex;
  align-items: center;
  align-content: center;
  justify-content: center;
}

#zero-thirty {
  flex: 0 0 30%;
  background-color: red;
}

#thirty-seventy {
  flex: 0 0 40%;
  background-color: green;
}

#seventy-hundred {
  flex: 0 0 30%;
  background-color: green;
}

.active {
  opacity: 1;
}

.marker {
  height: 40px;
  width: 1px;
  background-color: black;
  position: absolute;
  bottom: 0;
  z-index: 1050;
}

.marker span {
  position: absolute;
  left: 50%;
  transform: translateX(-50%) translateY(-100%);
}

.label-track {
  margin-top: 10px;
  position: relative;
  color: rgba(0,0,0,.6);
  width: 600px;
}

.label-track span {
  position: absolute;
}
<div class="track-bar">

    <div class="rating" id="zero-thirty">
    </div>

    <div class="rating active" id="thirty-seventy">
      <span>Good</span>
    </div>

    <div class="rating" id="seventy-hundred">
    </div>

    <div class="marker" style="left: 25.07%;">
      <span>25.07%</span>
    </div>

  </div>

  <div class="label-track">

    <span style="left: 0%;">0%</span>
    <span style="left: 30%;">30%</span>
    <span style="left: 70%;">70%</span>
    <span style="right: 0%;">100%</span>

  </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...