Можно ли сделать анимацию идеального круга, начинающегося со строки SVG

Можно ли сделать анимацию идеального круга, начинающегося с линии SVG, которая будет расширяться от центра линии и становиться кругом?

Я просматривал об этом, но это не соответствует моим ожиданиям. Либо потому, что я использую неправильные ключевые слова, либо что-то еще.

У меня есть это для моей линии:

<svg height = "210" width = "500">
  <line x1 = "150" y1 = "150" x2 = "50" y2 = "150" style = "stroke:rgb(255,0,0); stroke-width:2" />
</svg>

… и процесс, который я ищу, будет таким:

Можно ли сделать анимацию идеального круга, начинающегося со строки SVG

Как вы хотите, чтобы анимация происходила? При наведении мыши? При загрузке страницы? Нам нужно немного больше информации.

disinfor 19.06.2019 16:30

Начните с круга, обрежьте его прямоугольником, анимируйте высоту прямоугольника и y, чтобы расширить клип и открыть круг.

Robert Longson 19.06.2019 16:31

@disinfor при загрузке страницы непрозрачность линии изменится с 0 на 1, и линия станет кругом

BunchOfPaper 19.06.2019 16:34

@RobertLongson, я не очень хорошо разбираюсь в css, но я попробую .... ваш совет совершенно ясен

BunchOfPaper 19.06.2019 16:37
Улучшение производительности загрузки с помощью 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
4
100
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете сделать это с помощью чистого CSS:

.box {
  width:200px;
  height:4px;
  background:radial-gradient(circle,#000 99px,transparent 100px);
    
  animation:toCircle 5s linear 1s forwards;
}
@keyframes toCircle{
  to{
    height:200px;
  }
}


body {
  margin:0;
  height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
}
<div class = "box">

</div>

я должен добавить высоту на мои divs ?? Я только что попытался добавить ширину в свой div без высоты.

BunchOfPaper 19.06.2019 16:41

@BunchOfPaper да, вам нужно добавить высоту, так как вся хитрость заключается в анимации высоты

Temani Afif 19.06.2019 16:42

это правильно, когда я не добавляю свою собственную высоту div, у div есть автоматическая высота?

BunchOfPaper 19.06.2019 16:47

@BunchOfPaper Я не думаю, потому что вы не сможете анимировать высоту, если не учтете другой трюк, с помощью которого вы можете анимировать высоту обертки вашего div

Temani Afif 19.06.2019 16:51

у меня есть несколько вопросов .... почему я не могу использовать высоту менее 4 пикселей ?? это просто выглядит как коробка, и я хочу, чтобы это было похоже на линию, и как увеличить размер круга ?? я пытаюсь поставить 500 пикселей в ширину, но размер всегда такой же, как 200 пикселей

BunchOfPaper 19.06.2019 17:27

@BunchOfPaper вам также нужно настроить значение градиента. Я определил круг с радиусом 100 пикселей, поэтому, если вы увеличите ширину, вам также нужно увеличить радиус.

Temani Afif 19.06.2019 17:33

да, но это как бы полукруг от центра

BunchOfPaper 19.06.2019 17:38

@BunchOfPaper вам также нужно увеличить высоту: jsfiddle.net/0o7nb8xr для круга с радиусом 200 пикселей нам нужна высота не менее 400 пикселей.

Temani Afif 19.06.2019 18:03

о, хорошо, еще кое-что .... в jsfiddle div начинается с одной строки ..... но в моем возвышенном тексте ... тот же код, тот же div, но начинается как прямоугольник ... я хотя не знаю, ты понял мой вопрос :D

BunchOfPaper 19.06.2019 18:11

Вы можете элегантно преобразовать эллипс SVG из линии в круг:

svg {
  background-color: #fff;
}

ellipse {
  background:radial-gradient(circle,#000 99px,transparent 100px);
  animation:toCircle 1s linear 1s forwards;
}

@keyframes toCircle{
  to {
    ry:50;
  }
}
<svg width = "700" height = "500">
	<ellipse cx = "100" cy = "100" rx = "50" ry = "0.1"/>
</svg>

это круто, но процесс отличается от того, что я ожидал.

BunchOfPaper 20.06.2019 14:09

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