powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (JS) Узнать реальный угол поворота дива
38 сообщений из 38, показаны все 2 страниц
(JS) Узнать реальный угол поворота дива
    #39431217
Приветствую, форумчане.

Про matrix(bla-bla) синусы и косинусы знаю.

Постулат: Браузер "знает" количество оборотов элемента если угол больше 360 градусов — очевидно из опыта.

Вопрос: Возможно-ли извлечь этот реальный угол поворота?
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431225
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да вроде поиском можно найти, например функция для определения угла наклона элемента
это не то, что нужно?
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431409
бухалтер фантоцци,

Нет, к сожалению.
На выходе расчётной функии угол от -180 до 180 градусов :(

Вышел из положения запоминанием полного угла поворота в переменной.
Неудобно, но деваться, похоже, некуда.
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431491
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)Постулат: Браузер "знает" количество оборотов элемента если угол больше 360 градусов — очевидно из опыта.
с фига ли это постулат и очевидно? с точки зрения здравого смысла число полных оборотов просто отбрасывается, и учитывается лишь оставшийся угол.
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431549
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)На выходе расчётной функии угол от -180 до 180 градусов :(Вы-же можете поменять функцию и вернуть другой угол, например от 0 до 360.

AntonariyДмитрий-(сколько-же-нас?)Постулат: Браузер "знает" количество оборотов элемента если угол больше 360 градусов — очевидно из опыта.
с фига ли это постулат и очевидно? с точки зрения здравого смысла число полных оборотов просто отбрасывается, и учитывается лишь оставшийся угол.+1
matrix не содержит сведений о 100500 оборотов, это явно лишнее :)
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431592
Antonariy,

Очевидно — в прямом смысле: "эксперименты доказывают".
Здравый смысл, у всех разный.

бухалтер фантоцци,

Я могу поменять что угодно, но мне нужно бы "добыть" это число из недр браузера — где-то же они там лежат?
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431607
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?),
https://learn.javascript.ru/styles-and-classes#полный-стиль-из-getcomputedstyle
тут смотрел?
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431631
вадя,

Да, конечно.
Проблема в том, что "rotate(...deg);" это значение свойства "transform", доступ к которому через:

getPropertyValue("transform")

возвращает целую матрицу всех, применённых трансформаций, где угол поворота в пределах одного оборота, а реальный угол поворота не известно где (но отрабатывается!) :(
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431673
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)возвращает целую матрицу всех, применённых трансформаций, где угол поворота в пределах одного оборота, а реальный угол поворота не известно где (но отрабатывается!) :(
в пределах оборота - это и есть реальный угол
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431679
ИзопропилДмитрий-(сколько-же-нас?)возвращает целую матрицу всех, применённых трансформаций, где угол поворота в пределах одного оборота, а реальный угол поворота не известно где (но отрабатывается!) :(
в пределах оборота - это и есть реальный угол

"В пределах оборота" — хорошее замечание :)
Реальный угол может быть гораздо больше одного оборота и он где-то в недрах браузера есть.
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431690
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?),
т.е. тебе надо число оборотов?
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431697
вадяДмитрий-(сколько-же-нас?),
т.е. тебе надо число оборотов?

По-хорошему, мне нужен реальный полный угол поворота элемента, а уж количество оборотов я бы нашёл.
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431718
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?),

Ещё раз :

AntonariyДмитрий-(сколько-же-нас?)Постулат: Браузер "знает" количество оборотов элемента если угол больше 360 градусов — очевидно из опыта.
с фига ли это постулат и очевидно? с точки зрения здравого смысла число полных оборотов просто отбрасывается, и учитывается лишь оставшийся угол.
Вам правильно ответил Antonariy
Зачем браузеру хранить угол более 360 град. , если для корректного отображения любого элемента хватает реального угла поворота (0-360 или от -180 до 180) ?

Дмитрий-(сколько-же-нас?)Очевидно — в прямом смысле: "эксперименты доказывают".

Здравый смысл, у всех разный.

Я могу поменять что угодно, но мне нужно бы "добыть" это число из недр браузера — где-то же они там лежат?
Эксперименты доказывают, что браузер корректно отображает элемент, если угол оказывается более 360 или менее -360,
но это не значит, что он где-то запоминает 100500 оборотов (в ту или иную сторону).

А если Вам завтра понадобится добыть из "недр" количество оборотов против часовой и по часовой отдельно?
Это тоже по Вашей логике должен хранить браузер?
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431739
бухалтер фантоцци,

Я не знаю, как задать браузеру вопрос, поэтому зачем ему хранить угол более 360 градусов он мне ответить не может :(

Я знаю, что он эту информацию хранит, причём с учётом направления вращения.
Я знаю, что мне эта информация нужна.

Вопрос к тем, кто в курсе, или может чем-то помочь.
Остальным, просьба не беспокоиться.
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431753
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?),
тогда воспользуйся консолью там всё, что есть отображается
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39431797
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)Я знаю, что он эту информацию хранит, причём с учётом направления вращения.
исходники браузера смотрел?
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432135
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)бухалтер фантоцци,

Я знаю, что он эту информацию хранит, причём с учётом направления вращения.

Ok, давайте возьмём угол 30 град. и будем прибавлять 360, чтобы посмотреть, как работает браузер:

cos(30) == cos(390) == cos(750) == cos(1110) == 0.8660254037844
sin(30) == sin(390) == sin(750) == sin(1110) == 0.5

Теперь будем отнимать 360:

cos(-330) == cos(-690) == cos(-1050) == 0.8660254037844
sin(-330) == sin(-690) == sin(-1050) == -0.5

----------------------------------- Теперь поиграемся с углом 120 град.

cos(120) == cos(480) == cos(840) == cos(1200) == -0.5
sin(120) == sin(480) == sin(840) == sin(1200) == 0.8660254037844

Теперь будем отнимать 360:

cos(-240) == cos(-600) == cos(-960) == -0.5
sin(-240) == sin(-600) == sin(-960) == 0.8660254037844


---------- ИТОГО:
Как мы видим, вполне достаточно хранить не угол, а его косинус и синус, чтобы всегда корректно отображать элемент, и не только...
Зачем хранить углол? Почему Вы уверены, что браузер хранит именно угол?
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432141
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бухалтер фантоцциЗачем хранить углол? Почему Вы уверены, что браузер хранит именно угол?
тут тс несколько путает , ему надо не угол, а обороты, но говорит, что зная угол - вычислит обороты. с точки зрения геометрии - он прав. но вот с точки зрения браузера.....
а обороты необходимо знать в тех же играх.
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432148
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, поправочка, знак - не написал:
sin(-240) == sin(-600) == sin(-960) == -0.8660254037844

вадябухалтер фантоцциЗачем хранить углол? Почему Вы уверены, что браузер хранит именно угол?
тут тс несколько путает , ему надо не угол, а обороты, но говорит, что зная угол - вычислит обороты. с точки зрения геометрии - он прав. но вот с точки зрения браузера.....
а обороты необходимо знать в тех же играх.
Так браузер только отображает элемент, ему для отображения вполне хватает синуса-клсинуса и координат точки, вокруг которой делать оборот.
А программист (ТС) может делать что угодно, мало-ли что он захочет, только причём тут браузер ? :)
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432200
бухалтер фантоцци,

Для чего эти рассуждения?

Забейте в css
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432202
бухалтер фантоцци,

Для чего эти рассуждения?

Забейте в css:

transition: all 0.75s ease;

И выставьте тому же диву, сначала угол 30 градусов, а затем 390 (можно по клику).
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432216
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?),

Ok, смотрим, что происходит.

В CSS-коде указано 390, значит надо при :hover крутить на 390 по часовой,
а при снятии указателя опять на 390, но в другую сторону.

И ЧТО?

390 указано в правилах CSS , то-есть уже запомнено, зачем браузеру где-то хранить в другом месте?

Браузер тупо выполняет CSS-правило, но использует матрицу для текущего отображения - этого вполне достаточно.

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<!DOCTYPE html>
<html>
<title>test</title>
<head>
<style>
#div1 { position:relative; width:100px; height:50px; background:#808080; transition: all 0.75s ease; }
#div1:hover { transform: rotate(390deg); }
</style>
</head>
<body>
<div id="div1">1111111111111</div>
</body>
</html>
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432263
бухалтер фантоцци,

Прибавьте к 390 ещё 30 скриптом и попробуйте прочесть это значение.
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432265
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)бухалтер фантоцци,

Прибавьте к 390 ещё 30 скриптом и попробуйте прочесть это значение.Покажите тестовый пример, за Вас что-ли делать?
Уже всё разжёвано.
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432267
Я задал конкретный вопрос:
как в процессе работы страницы, скриптом извлечь полное значение угла поворота дива.

Те же 390 градусов, заданных в css.
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432320
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)Прибавьте к 390 ещё 30 скриптом и попробуйте прочесть это значение.
Если свойство стиля определено (установлено), то правило CSS для данного свойства уже не применяется.
В данном примере, при установке значения стиля из JS, элемент таки анимируется, но от текущего значения до значения, жёстко прописанного в стиле (иначе будут неприятные "дёрганья").

Дмитрий-(сколько-же-нас?)Я задал конкретный вопрос:
как в процессе работы страницы, скриптом извлечь полное значение угла поворота дива.

Те же 390 градусов, заданных в css.
Кроме угла поворота, могут быть заданы другие трансформации, поэтому браузеру приходится работать с матрицами.

Попробуйте использовать document.styleSheets... свойства cssRules, cssText, selectorText, style

---------------------------------------------------------------

Ниже тестовый код, и как можно увидеть - текущее значение угла всегда получаем через matrix
При этом CSS-значение угла 390 никак не относится к текущему положению элемента :)

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<!DOCTYPE html>
<html>
<title>test</title>
<head>
<style>
#div1 { position:relative; width:100px; height:50px; background:#808080; transition: all 5s ease; }
#div1:hover { transform: rotate(390deg); }
</style>
<script>
function myFunc(d) {
  var styles = document.getElementsByTagName('style'); // все стили
  var sheet = styles[0].sheet; // первая таблица стилей
  var rules = sheet.cssRules; // правила первой таблицы
  var style0 = rules[0].style // набор свойств первого правила первой таблицы
  var style1 = rules[1].style // набор свойств второго правила первой таблицы
  //var property = style[0]; // первое свойство первого правила первой таблицы
  var value0 = style0['transition']; // значение
  var value1 = style1['transform']; // CSS-значение "rotate(390deg)"

  console.log( value0 + ' , ' + value1 );
  console.log( document.defaultView.getComputedStyle(d,"").getPropertyValue('transform') );
  console.log( document.defaultView.getComputedStyle(d,"hover").getPropertyValue('transform') );

  d.style.transform = 'rotate(30deg)';

  console.log( document.defaultView.getComputedStyle(d,"").getPropertyValue('transform') );
  console.log( document.defaultView.getComputedStyle(d,"hover").getPropertyValue('transform') );
}
</script>
</head>
<body>
<div id="div1" onclick="myFunc(this)">1111111111111</div>
</body>
</html>
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432322
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
браузер запоминает значение стиля, какое бы оно ни было. но это не значит, что он хранит "количество оборотов".

получай значение угла из стиля, дели на 360 - вот тебе и количество оборотов.
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432329
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyбраузер запоминает значение стиля, какое бы оно ни было. но это не значит, что он хранит "количество оборотов".

получай значение угла из стиля, дели на 360 - вот тебе и количество оборотов.
при этом не факт, что DIV успел повернуться до указанного в CSS значения
(в примере скорость анимации намеренно уменьшена - общее время увеличено до 5s)
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432336
бухалтер фантоцциAntonariyбраузер запоминает значение стиля, какое бы оно ни было. но это не значит, что он хранит "количество оборотов".

получай значение угла из стиля, дели на 360 - вот тебе и количество оборотов.
при этом не факт, что DIV успел повернуться до указанного в CSS значения
(в примере скорость анимации намеренно уменьшена - общее время увеличено до 5s)

Совершенно верно!

"Получай значение из стиля" — как???
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432342
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)"Получай значение из стиля" — как???
в примере прописано как, только это ничего не даст - там тупое CSS-правило "rotate(390deg);".

бухалтер фантоцци В данном примере, при установке значения стиля из JS, элемент таки анимируется, но от текущего значения до значения, жёстко прописанного в стиле (иначе будут неприятные "дёрганья").
Логично, что такие нюансы работы и внутренней реализации, браузер никак не показывает, если это не прописано в стандарте,
иначе будет кто во что горазд - куча несовместимостей между браузерами.
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432344
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Другими словами - или пусть крутит браузер, или нужно крутить самому и считать обороты.
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432348
бухалтер фантоцци,

Я, по-любому, кручу.
Да, сейчас добавил переменную для запоминания угла, однако, в случае плавного поворота, проблему это решает не до конца.
Мне кажется, что "добыть" этот угол, таки можно, но не стоит потраченного времени.

Спасибо!
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432356
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?),

Ещё подумалось про CSS-variables (последние версии браузеров их поддерживают).

Возможно, в Вашем случае через CSS-переменные будет менее накладно по ресурсам.

Вот тестовый пример, как можно их заюзать
Использование CSS-переменных
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>CSS-variables test</title>
<style>
* {
  color: black;
}
:root { /* CSS-variables */
  --color-1: red;
  --color-2: green;
}
.class1 {
  color: var(--color-1);
}
</style>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function(){setTimeout(init,100)}, false);

function init() { /* Выполняется при готовности web-страницы */
  var d = document.defaultView,
      de = document.documentElement,
      div = document.querySelector('.class1');

  /* Сравниваем результаты для объекта class1  и  глобального объекта */
  alert('class1:' + getStyle(div, '--color-1') + '\nroot:' + getStyle(de, '--color-1'));

  /* Меняем значение CSS-переменной, наследуемой в объекте класса class1 */
  div.style.setProperty('--color-1', 'var(--color-2)');

  /* Сравниваем результаты для объекта class1  и  глобального объекта */
  alert('class1:' + getStyle(div, '--color-1') + '\nroot:' + getStyle(de, '--color-1'));
};

function getStyle(obj, style) {
   return document.defaultView.getComputedStyle(obj).getPropertyValue(style);
}
</script>
</head>
<body>
  <div class="class1">div_class1_text</div>
  body_text
</body>
</html>

...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432361
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?) Мне кажется , что "добыть" этот угол, таки можнопрогресс. было-то "постулат и очевидно".
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432364
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432366
бухалтер фантоцци,

Спасибо.
Пока, пробую без переменных.


Antonariy,

Что смущает?
И "постулат" и "очевидность" остались без изменений, как и возможность "добыть" этот угол из "недр" (ищу возможность уже пол-года, как).
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432368
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя http://frontender.info/css-variables-why-should-you-care/
меня кстати удивляет, что до сих пор мало внимания к CSS-переменным (или мне так кажется),
это-же очень сильное и удобное средство, которое делает из CSS-препроцессоров (SASS, LESS) древних мамонтов...
...
Рейтинг: 0 / 0
(JS) Узнать реальный угол поворота дива
    #39432378
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бухалтер фантоццивадя http://frontender.info/css-variables-why-should-you-care/
меня кстати удивляет, что до сих пор мало внимания к CSS-переменным (или мне так кажется),
это-же очень сильное и удобное средство, которое делает из CSS-препроцессоров (SASS, LESS) древних мамонтов...
еслиб не ты я б не знал....
счас буду учится использовать
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (JS) Узнать реальный угол поворота дива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]