Центрирования divа в контейнере при использовании в css transform scale 
		
		
		
		Всем привет.  
	Дано: div#view контейнер (на нем весят все события), в котором находится еще один div#map с огромной матрицей divиков.cells внутри. Задача: сделать #map перетаскиваемым и зумящимся с колесика мышки. Проблема: я очень долго тупил над вопросом, что делать после применения к #map css trasform scale. Куда, насколько и что конкретно двигать. Решение: Главная проблема была тут: 
checkborders: function(){
 		this.border.left = 200 - (( window.innerWidth - (window.innerWidth * this.zoomdelta) ) / 2) / this.zoomdelta;
 		this.border.top = 200 - (( window.innerHeight - (window.innerHeight * this.zoomdelta) ) / 2) / this.zoomdelta;
 		this.border.right =  -200-30*114+window.innerWidth + (( window.innerWidth - (window.innerWidth * this.zoomdelta) ) / 2) / this.zoomdelta;
 		this.border.bottom= -200-20*66+window.innerHeight + (( window.innerHeight - (window.innerHeight * this.zoomdelta) ) / 2) / this.zoomdelta;
 	}
200 - реальный желаемый отступ по краям. 30*114 дивы в одной строчке на их ширину 20*66 строчки на высоту дивов Рабочий пример для Firefox, Opera, Chrome: _http://mogame.org/test2.php js, css, scale, transform, zoom, zooming, scaling, position div, mapping  | 
	
		
 morg4n, 
	у вас вопрос или презентация? и почему бы недоделать для ie  | 
	
		
 У меня был вопрос, но перед отправкой решил слегка упростить код и решение нашлось само собой. Я пытался найти информацию по этому вопросу в сети - у меня не вышло, поэтому решил поделиться, может кому пригодится.  
	В принципе вопрос совместимости с последними IE не так уж и плох, когда я допилю, выложу обновленный код. Но на текущем этапе разработки поддержка IE не является главной целью.  | 
	
		
 morg4n, 
	:write: :) для ie и нетолько ... http://learn.javascript.ru/play/vEZYec  | 
	
		
 Эта часть, я так понимаю: 
	
view.element.style.transform = "scale("+this.zoomdelta+","+this.zoomdelta+")";
        view.element.style.webkitTransform = "scale("+this.zoomdelta+","+this.zoomdelta+")";
        view.element.style.msTransform = "scale("+this.zoomdelta+","+this.zoomdelta+")";
        view.element.style.mozTransform = "scale("+this.zoomdelta+","+this.zoomdelta+")";
        view.element.style.oTransform = "scale("+this.zoomdelta+","+this.zoomdelta+")";
У меня на деле отрисовка карты, тоже идет через js. IE ее вообще не рисует. 
element: document.createElement("div"),
.....
build: function(){
//map cells json с координатами, айди, и прочей лабудой (далее нужны координаты)
a = map.cells;
		for(key in a){
			 if (a.hasOwnProperty(key)  && /^0$|^[1-9]\d*$/.test(key) && key <= 4294967294){
			 	var row;
			 	if(a[key][3] == 1){
			 		row = document.createElement("div");
			 		row.className = "row";
			 		map.element.appendChild(row);
			 	}
       			element = document.createElement("div");
//watter grass mountain из массива с вариантами текстур
       			element.className = map.terrain[a[key][8]][2];
       			element.className += " cell";
       			element.setAttribute("data-row",a[key][2]);
       			element.setAttribute("data-col",a[key][3]);
       			row.appendChild(element);
       			map.cells[key].element = element;
    			}
		}
		}
 | 
	
		
 morg4n, 
	а консоль в ie что шепчет?  | 
	
		
 ie11. win81.  
	Ничего в консоли нет. было б че в консоли :)  | 
	
		
 Вложений: 1 
		
		
		Я что-то очень сильно туплю с зум эффектом. Сейчас при наведение на ячейку прямоугольную 128*64 пикселя (но так как они у меня накладываются друг на друга, рабочая область 128х32 обведена черной линией), я проверяю попадаю ли я в изометрическую часть ячейки, или на ее соседей (если левее или правее белых линий). 
	Вся магия в функции getBoundingClientRect(). Я, чесслово, не понимаю, по видимому, как работает гугл. Потому, что 'js element screen position' далеко не сразу привел меня к этой чудесной функции. Они мне все твердили про: scrollLeft, clientLeft, offsetLeft! Идиоты. 
cellmouseover: function(e){
		if(!e) e = event || window.event;
		var cell = e.target;
		
		//чудо функция! положение ячейки, "начало координат"
		var pos = cell.getBoundingClientRect();
		var cellx=parseInt(cell.getAttribute("data-x")), 
			celly=parseInt(cell.getAttribute("data-y"));
		this.currentdiv = cell.id;
		zd = view.zoomdelta;
		
		posx = pos.left + e.pageX;
		posy = pos.top + e.pageY;
		
		posx = posleft + e.pageX;
		posy = postop + e.pageY;
		//левее первой белой линии
		if(posy < (64*zd - posx) / 2){
			celly--;
			}
		//правее второй белой линии
		else if(posy < (1/2)*(posx - 64*zd)){
			cellx++;
			}
		
		//предыдущая и текущая ячейки
		beforecell = this.currentcell;
		this.currentcell = cellx+"-"+celly;
		//снять выделение с прошлой и одеть на новую ячейки
		if(beforecell != this.currentcell && beforecell != 0)
			$(beforecell).classList.remove('selected');
		$(this.currentcell).classList.add('selected');
	}
 | 
| Часовой пояс GMT +3, время: 09:03. |