Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.03.2017, 17:43
Интересующийся
Отправить личное сообщение для Dimasick Посмотреть профиль Найти все сообщения от Dimasick
 
Регистрация: 15.04.2011
Сообщений: 26

SVG + CSS = разный тайминг
Подскажите, что не так? Линия должна прорисовываться 10 секунд и круг смещаться должен вдоль этой же линии 10 секунд, но на практике все не так ((
<html><body><head>
	<style> 
		.my_path {
			stroke-dasharray: 100%;
			stroke-dashoffset: 100%;
			animation: dash 10s linear forwards;
		}
		@keyframes dash {
		  from {
		    stroke-dashoffset: 100%;
		  }
		  to {
		    stroke-dashoffset: 0%;
		  }
		}
	</style>
</head>
<svg width="400" height="300">
        <path class="my_path" d="M 50,100 L 100,100 L 200,100 L 250,100"
          fill="rgb(100, 100, 100)" stroke="#888" stroke-width="2"/>	
	 <circle cx="0" cy="0" r="10" fill="rgb(99,199,99)">
		<animateMotion begin="0s" dur="10s" 
		  path="M 50,100 L 100,100 L 200,100 L 250,100" />
	</circle>

</svg>
</body></html>
Ответить с цитированием
  #2 (permalink)  
Старый 22.03.2017, 09:35
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от Dimasick
Линия должна прорисовываться 10 секунд и круг смещаться должен вдоль этой же линии 10 секунд
Что-то подсказывает мне, что ты не так интерпретировал значения атрибутов...
Так вроде синхронно получается.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.my_path {
	stroke-dasharray: 100%;
	stroke-dashoffset: 100%;
	animation: dash 10s linear forwards;
}
@keyframes dash {
  from {
	stroke-dashoffset: 100%;
  }
  to {
	stroke-dashoffset: 0%;
  }
}
</style>
<script type='text/javascript'>
</script>
</head>
<body>
<svg width="400" height="300">
        <path class="my_path" d="M 50,100 L 100,100 L 200,100 L 250,100"
          fill="rgb(100, 100, 100)" stroke="#888" stroke-width="2"/>	
	 <circle cx="0" cy="0" r="10" fill="rgb(99,199,99)">
		<animateMotion begin="0s" dur="6s" 
		  path="M 50,100 L 100,100 L 200,100 L 250,100" />
	</circle>
</svg>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 23.03.2017, 11:16
Интересующийся
Отправить личное сообщение для Dimasick Посмотреть профиль Найти все сообщения от Dimasick
 
Регистрация: 15.04.2011
Сообщений: 26

И какие же значения атрибутов я не так интерпретировал? ksa, написать 6s вместо 10s - это не выход, мне нужно понимать, как правильно согласовывать эти значения.
Ответить с цитированием
  #4 (permalink)  
Старый 23.03.2017, 11:48
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от Dimasick
И какие же значения атрибутов я не так интерпретировал?
Того же dur у animateMotion...
Он вроде как и описан
Цитата:
Определяет продолжительность анимации
http://webix.pro/svg/spravochnik/atr...ml#dur-animate

Но ведь JS не является ЯП реального времени.
Сообщение от Dimasick
написать 6s вместо 10s - это не выход, мне нужно понимать, как правильно согласовывать эти значения
К сожалению - никак этого не сделать.
Все эти временные "задержки", "отсечки" в JS весьма условны. Сильно зависят от загруженности браузера и быстродействия железа, на котором все происходит...
Кроме как "подбор" мало что подойдет тебе для решения такой, казалось бы простенькой, задачки...
Ответить с цитированием
  #5 (permalink)  
Старый 23.03.2017, 12:19
Интересующийся
Отправить личное сообщение для Dimasick Посмотреть профиль Найти все сообщения от Dimasick
 
Регистрация: 15.04.2011
Сообщений: 26

ок, сформулирую вопрос иначе: можно ли методами svg организовать прорисовку линии (path) так, чтобы она равномерно (!) увеличивала свою длинну? при этом желательно, чтобы растущий конец линии имел какой-нибудть маркер в виде кружка? я кодга смотрю на свою исходную реализацию, то вижу, что JS работает равномерно, а вот именно SVG - нет. удивляет еще то, что если stroke-dasharray и stroke-dashoffset задавать в пикселях, то все работает нормально, НО если в процентах - то ненормально а мне нужны именно проценты, т.к. я заранее не знаю, какая линия у меня будет (она будет генериться при создании страницы).
Ответить с цитированием
  #6 (permalink)  
Старый 23.03.2017, 14:37
Интересующийся
Отправить личное сообщение для Dimasick Посмотреть профиль Найти все сообщения от Dimasick
 
Регистрация: 15.04.2011
Сообщений: 26

задача решена с помощью
len = path.getTotalLength();
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как лучше подключать SVG объект Black_Star (X)HTML/CSS 0 02.12.2016 00:09
Плагин на Gulp который склеивает все svg файлы в css спрайт ТОТ_САМЫЙ Оффтопик 12 14.09.2015 18:59
SVG CSS, SVG to WOFF kobezzza Firefox/Mozilla 2 29.03.2013 15:59
JQuery CSS анализатор javascript jQuery 2 15.08.2010 21:27
Подскажите по CSS меню Александр_1988 Элементы интерфейса 1 17.05.2010 11:58