Как я могу выровнять SVG круг в середине div? - PullRequest
1 голос
/ 29 марта 2019

Мне нужно сделать круг, имитирующий кнопку закрытия окна в Mac OS. Но когда я пытаюсь переместить его ниже, граница svg обрезает его. Как я могу переместить границу, чтобы поместить круг непосредственно в середине панели (по вертикали)?

JSFiddle: https://jsfiddle.net/sm6r0kvn/2/

<div class="panel">
  <svg viewbox="0 0 20 17" width="20" heigth="50"><circle r="7" cx="14" cy="9.5" fill="#fc615e"/></svg>
</div>

Ответы [ 2 ]

3 голосов
/ 29 марта 2019

Вы можете установить viewbox как <svg viewbox="0 0 20 20" width="20" heigth="20">, а затем установить cx и cy 50%.Если вы хотите расположить его по центру panel по вертикали, просто сделайте его flexbox и добавьте align-items: center - см. Демонстрацию ниже:

.block {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  max-width: 550px;
  min-width: 480px;
  width: 80vw;
  height: 200px;
  background: black;
  border-radius: 10px 10px 5px 5px;
}

.panel {
  background-color: #e0e0e0;
  border-radius: 5px 5px 0 0;
  display: flex; /* added */
  align-items: center; /* added */
}

.text {
  color: white;
  padding: 5px;
}
<div class="block">
  <div class="panel">
    <svg viewbox="0 0 20 20" width="20" heigth="20">
      <circle r="7" cx="50%" cy="50%" fill="#fc615e"/>
    </svg>
  </div>
  <div class="text">
    Text here
  </div>
</div>
1 голос
/ 29 марта 2019

Это потому, что вы рисуете свой круг за пределами окна просмотра SVG. Вы можете использовать CSS для перемещения всего поля SVG или увеличить его

svg {
  border: 1px blue solid;
}
.panel.moved {
  margin-left: 100px;
}
<div class="panel">
  <svg viewbox="0 0 20 20" width="200" heigth="200">
    <circle r="10" cx="10" cy="10" fill="#fc615e"/>
  </svg>
</div>
<div class="panel">
  <svg viewbox="0 0 20 20" width="200" heigth="200">
    <circle r="10" cx="20" cy="10" fill="#fc615e"/>
  </svg>
</div>
<div class="panel">
  <svg viewbox="0 0 30 20" width="300" heigth="200">
    <circle r="10" cx="20" cy="10" fill="#fc615e"/>
  </svg>
</div>
<div class="panel moved">
  <svg viewbox="0 0 20 20" width="200" heigth="200">
    <circle r="10" cx="10" cy="10" fill="#fc615e"/>
  </svg>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...