Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Rotate Block in Cycle (https://javascript.ru/forum/dom-window/28186-rotate-block-cycle.html)

gJam 10.05.2012 18:56

Rotate Block in Cycle
 
Привет всем читателям!
У меня возник вопрос: как сделать поворот на N-градусов (от -40 до +40| соответственно рандомом), для n-блоков.. дабы блоки добавляются в цикле с помощью php(и количество мы их точное никогда не знаем), и все должны быть повернуты, и желательно "раскиданы" внутри бОльшего блока..
Всем спасибо заранее..
Принимаются: мысли, ссылки, идеи, ну и самым большим призом был бы код
P.s. просьба без сторонних фреймворков..

dmitriymar 10.05.2012 19:00

каким боком php+ html(xhtml)+css k javascript?

skymanrm 10.05.2012 20:06

Очень интересно ) может быть php + ajax + html + css + js, пропустить ajax тут никак не получится. А дальше зависит от того что за блоки, можно использовать либо css transform https://developer.mozilla.org/en/CSS/transform, либо canvas и его rotate http://habrahabr.ru/qa/4758/, либо что то другое...

dmitriymar 10.05.2012 20:37

Цитата:

Сообщение от skymanrm
либо canvas и его rotate

ну поверни мне div и его любое содержимое в канве

vadim5june 10.05.2012 21:03

Цитата:

Сообщение от dmitriymar (Сообщение 173627)
ну поверни мне div и его любое содержимое в канве

аналог div в канве Rect легко поорачиватся

skymanrm 10.05.2012 21:08

А вы видите слово div в тексте ТС? Он говорит про блоки, я могу еще раз написать - все зависит от содержимого блоков

dmitriymar 10.05.2012 21:14

Цитата:

Сообщение от vadim5june
аналог div в канве Rect легко поорачиватся

чего? как фигура стала аналогом элемента html div?
Цитата:

Сообщение от skymanrm
А вы видите слово div в тексте ТС? Он говорит про блоки, я могу еще раз написать - все зависит от содержимого блоков

что canvas и её rotate может повернуть из того что не может css transform?
ясно ведь сказано
Цитата:

Сообщение от gJam
дабы блоки добавляются в цикле с помощью php(и..

а аякс каким боком здесь ,даже к канве?
Цитата:

Сообщение от skymanrm
может быть php + ajax + html + css + js, пропустить ajax тут никак не получится....


gJam 10.05.2012 21:50

Дабы приунять холивар поясню: блок (div)
По поводу php он тут даже очень сильно связан с html/css/js так, что все блоки(ну вы поняли, что div'ы)) выводятся в цикле из ассоциативного массива..

Ajax тут не нужен, он лишняя нагрузка и трата ресурсов..

С ротэйтом я разобрался еле-еле вида:
style=”<?php $rotation=rand(1,10) – 5 ?>  /*тут только подправить диапазон и градус готов*/
-o-transform:rotate(<?php echo $rotation; ?>deg);
-webkit-transform:rotate<?php echo $rotation; ?>deg);
-moz-transform:rotate(<?php echo $rotation; ?>deg);”

Наглядный пример
Так вот в продолжении разговора: как все-таки "разбросать" блоки (div'ы, div'ы эти несчастные)) рандомно, вариант с включением php совсем не пройдёт..

dmitriymar 10.05.2012 21:56

var col=document.getElementsByTagName('div');// если в отдельном элементе,заменить document на него
for (var i=0, m=col.length;i<m;i++)
 {
   col[i].style.left=случ число+"px";
   col[i].style.top=случ число+"px"; 	 
 }

skymanrm 10.05.2012 22:02

То что вы хотите сделать из кода "спагетти" - не хорошо. Имхо, не стоит все складывать вместе. Получите отдельно все блоки через пхп, выведите в js переменную, а затем с помощью с js раскидайте их по странице как вам нужно - будет удобнее изменять в дальнейшем.

Раскидать рандомно: использовать margin, либо указать у родителя position: relative | absolute, и затем позиционировать элементы внутри с помощью left и top.

Цитата:

что canvas и её rotate может повернуть из того что не может css transform?
поверьте - многое, не холивара ради )

dmitriymar 10.05.2012 22:03

Цитата:

Сообщение от skymanrm
поверьте - многое, не холивара ради )

не соглашусь.
Цитата:

Сообщение от skymanrm
Получите отдельно все блоки через пхп, выведите в js переменную..

стесняюсь спросить,а это как?

skymanrm 10.05.2012 23:46

Цитата:

стесняюсь спросить,а это как?
var blocks = <?=$block?>;

  (function () {
    var block = document.createElement('DIV');
    // задаем необходимые свойства
    // left, top для позиционирования
    // transform для поворота
    document.getElementById('PARENT_ID').appendChild(block);
  }())

Что то типа этого, где $blocks = [block1, block2, .., blockN];

Цитата:

не соглашусь.
вот как пример: http://libcanvas.github.com/shapes/polygon.html рекомендую попробовать сделать такое с использованием div. Я понимаю, что это вполне реально, но это будет гораздо труднее, имхо. Да и если вы используете canvas, то гарантируете что во всех браузерах с его поддержкой это будет выглядеть одинаково, а вот с transform придется помучаться.

melky 11.05.2012 00:59

Цитата:

Сообщение от skymanrm (Сообщение 173677)
Да и если вы используете canvas, то гарантируете что во всех браузерах с его поддержкой это будет выглядеть одинаково

ну да ... и этого красавца?

как раз своиство transform легко переносится в фильтры (IE 5.5+) - только присутствует маленкии баг при перевороте, но его можно убрать вычетом смещения


PS dolbanya local , prostite za krivuyi rech :)

skymanrm 11.05.2012 01:03

Если говорить про кол-во совместимых браузеров то canvas тут явно проигрывает, не спорю )

dmitriymar 11.05.2012 09:57

Цитата:

Сообщение от skymanrm
вот как пример: http://libcanvas.github.com/shapes/polygon.html рекомендую попробовать сделать такое с использованием div. Я понимаю, что это вполне реально, но это будет гораздо труднее, имхо.

это почему? эрии никто не отменял.
а c использованием svg -это натуральнее и проще реализуется
при использовании div код будет гораздо проще и короче

dmitriymar 11.05.2012 10:02

Цитата:

Сообщение от skymanrm
var blocks = <?=$block?>;

(function () {
var block = document.createElement('DIV');
// задаем необходимые свойства
// left, top для позиционирования
// transform для поворота
document.getElementById('PARENT_ID').appendChild(b lock);
}())

т.е зачем индексировать содержимое сайта поисковикам?)

skymanrm 11.05.2012 11:39

К примеру, мне нужно загрузить картинку на сайт, повернуть на 45%, обрезать её как мне захочется и сохранить все это дело к себе на компьютер. Сделать все это без использования сервера. На canvas такая задача решается довольно просто, с использованием одних div что то не могу придумать решения. Но мы далеко отошли от темы, выбор технологии реализации определяется требованиями.

Цитата:

т.е зачем индексировать содержимое сайта поисковикам?)
я вас наверное удивлю, но и yandex и google умеет обрабатывать и выполнять javascript

dmitriymar 11.05.2012 12:36

Цитата:

Сообщение от skymanrm
я вас наверное удивлю, но и yandex и google умеет обрабатывать и выполнять javascript

расстрою,говорите бред.
проводятся эксперименты-да
на их вебмастерах есть надпись что не выполняет js-да
отслеживает всего клоакинг и редирект частично -да
гугл !-для аякс в адресе-да
Ну и где обработка выполнение js кроме частично редиректов и клоакинга ?
Цитата:

Сообщение от skymanrm
обрезать её как мне захочется и сохранить все это дело к себе на компьютер.

а это то каким боком к поворотам?
аргумент в ваших рассуждениях только один-потому что вам так хочется. это не аргумент

skymanrm 11.05.2012 12:55

Цитата:

расстрою,говорите бред.
проводятся эксперименты-да
на их вебмастерах есть надпись что не выполняет js-да
отслеживает всего клоакинг и редирект частично -да
гугл !-для аякс в адресе-да
Ну и где обработка выполнение js кроме частично редиректов и клоакинга ?
ок, уговорили, поторопился. Но делать стилизацию через php это бред.

Цитата:

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

Цитата:

а c использованием svg -это натуральнее и проще реализуется
при использовании div код будет гораздо проще и короче
с использованием svg при достаточном кол-ве элементов это будет тормозить и оптимизировать вы это не сможете, canvas позволит это оптимизировать, вплоть до того что отрисовывать можно только видимые части. Ну а как вы сделаете неправильный многоугольник на чистых div мне было бы интересно посмотреть, насколько это будет проще чем на canvas.

dmitriymar 11.05.2012 13:00

Цитата:

Сообщение от skymanrm
с использованием svg при достаточном кол-ве элементов это будет тормозить и оптимизировать вы это не сможете, canvas позволит это оптимизировать, вплоть до того что отрисовывать можно только видимые части. Ну а как вы сделаете неправильный многоугольник на чистых div мне было бы интересно посмотреть, насколько это будет проще чем на canvas.

хоть думаете о чём говорите ? речь о поворотах,ну ладно приплели динамические трансформации через драг анд дроп какие проще делаются с использованием дивов ,эрий,свг-сами трансформации. канва -визуальный интерфейс
И всё равно продолжаете херню нести не относящуюся к теме абсолютно
Цитата:

Сообщение от skymanrm
Но делать стилизацию через php это бред.

говорит явное не знание возможностей и способов

skymanrm 11.05.2012 14:07

Цитата:

с использованием svg при достаточном кол-ве элементов это будет тормозить и оптимизировать вы это не сможете, canvas позволит это оптимизировать, вплоть до того что отрисовывать можно только видимые части.
что тут непонятно или вы с чем то несогласны?

Цитата:

ну ладно приплели динамические трансформации через драг анд дроп
я кидал пример того что на div сделать будет гораздо проблематичнее, а именно такие фигуры, которые могут быть повернуты - драгндроп тут побочен, как и динамические трансформации.

Цитата:

говорит явное не знание возможностей и способов
все таки посоветую вам разделять отображение и данные, в дальнейшем будет проще ;) а насчет моих знаний можете не переживать, их достаточно.

dmitriymar 11.05.2012 14:46

Цитата:

Сообщение от skymanrm
а именно такие фигуры, которые могут быть повернуты -

фууу бред... фигура по любому содержится в каком либо контейнере -что мешает повернуть контейнер, туже канву средствами css?
Цитата:

Сообщение от skymanrm
с использованием svg при достаточном кол-ве элементов это будет тормозить и оптимизировать вы это не сможете, canvas позволит это оптимизировать, вплоть до того что отрисовывать можно только видимые части.
что тут непонятно или вы с чем то несогласны?

не факт, что так будет лучше
Цитата:

Сообщение от skymanrm
все таки посоветую вам разделять отображение и данные, в дальнейшем будет проще а насчет моих знаний можете не переживать, их достаточно.

по вашей логике серверные языки не должны участвовать при создании вью вообще
может задуматься об mvc и подобном и не гнать туфту ? а шаблонизаторы как по вашему действуют?

skymanrm 11.05.2012 14:53

Цитата:

фууу бред... фигура по любому содержится в каком либо контейнере -что мешает повернуть контейнер, туже канву средствами css?
говорите как ребенок, видимо я начинаю догадываться что спорить начал не с тем ) а если в контейнере 10 фигур и каждая из них будет повернута по разному - 10 canvas? а если 100?

Цитата:

не факт, что так будет лучше
факт.

Цитата:

по вашей логике серверные языки не должны участвовать при создании вью вообще
может задуматься об mvc и подобном и не гнать туфту ? а шаблонизаторы как по вашему действуют?
как раз про mvc и идет речь, о том чтобы как можно сильнее отделить логику и данные от внешнего представления.

dmitriymar 11.05.2012 15:01

Цитата:

Сообщение от gJam
У меня возник вопрос: как сделать поворот на N-градусов (от -40 до +40| соответственно рандомом), для n-блоков.. дабы блоки добавляются в цикле с помощью php(и количество мы их точное никогда не знаем), и все должны быть повернуты, и желательно "раскиданы" внутри бОльшего блока..

Цитата:

Сообщение от skymanrm
а если в контейнере 10 фигур и каждая из них...


если бы у бабушки были яйца-она была бы дедушкой


ясно с вами всё,классика -нарцисс окрылённый врождённой тупостью,подстраивающий ситуацию под свои желания
больше сюда отвечать не буду чтоб не разводить холивар и не кормить троля

skymanrm 11.05.2012 15:17

вы видимо совсем не читаете, написано что все зависит от требований, где то лучше использовать DIV где то CANVAS. Странно что до вас это до сих пор не дошло.

dmitriymar 11.05.2012 15:19

какое отношение ваши ответы имеют к тому что спрашивал создатель темы? за исключением того, что вы решили похвастаться знанием слов :
canvas,ajax...?:-/
специально дублирую ещё раз его вопрос,надеюсь читать что написано умеете?
в том что умеете читать написанное как вам хочется,не сомневаюсь,неоднократно доказали
Цитата:

Сообщение от dmitriymar
Сообщение от gJam
У меня возник вопрос: как сделать поворот на N-градусов (от -40 до +40| соответственно рандомом), для n-блоков.. дабы блоки добавляются в цикле с помощью php(и количество мы их точное никогда не знаем), и все должны быть повернуты, и желательно "раскиданы" внутри бОльшего блока..


skymanrm 11.05.2012 15:38

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

gJam 11.05.2012 16:33

Дамы и господа (дабы никого не обидеть), прошу, давайте жить дружно..
Поддержка в IE не обязательна (дабы "пинает" с сайта ослоюзеров..), за примерные коды благодарю, но хотелось бы конечно попросить привести полный, а то с "лёгким" холиваром подзапутался..

skymanrm 11.05.2012 17:06

http://jsfiddle.net/TVQvx/9/ думаю что то в этом роде, если индексирование не принципиально. Иначе цикл нужно делать средствами пхп.

Проверял в хроме и в лисе, дальше сами.

gJam 11.05.2012 17:20

благодарю


Часовой пояс GMT +3, время: 20:24.