Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.05.2015, 18:37
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

Пытаюсь подцепить одну и ту же картинку к нескольким span
Здравствуйте,

Я пытаюсь подцепить одну и ту же картинку к разным областям так:
<style>
span { padding:10; margin:10; display:inline-block;  border:1px dotted red;}
span img {position:absolute; left:0; top:0;}
</style>

<script>
window.onload = function () {
    var base_image = new Image();
    base_image.src = 'images/pic7.jpg';
    base_image.width=30;
    var spans = document.getElementsByTagName('span');
    for(var i=0; i<spans.length; i++){
	   alert(i+':'+spans[i].style.height);
	   spans[i].appendChild(base_image);
    }
}

</script>
</head><body>
<span></span>
<span></span>
<span></span>
<span></span>

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

Последний раз редактировалось Григорий Данилович, 28.05.2015 в 18:50.
Ответить с цитированием
  #2 (permalink)  
Старый 28.05.2015, 18:57
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

Уже решил сам. )
position: absolute; ставит картинку в абсолютные координаты (0,0)
и картинку нужно создавать новую - в цикле. Иначе она открывается в одном "окне", затем во втором и удаляется в первом.
Спасибо, всем кто пытался помочь
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2015, 19:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,125

Григорий Данилович,
spans[i].appendChild(base_image.cloneNode());
Ответить с цитированием
  #4 (permalink)  
Старый 28.05.2015, 19:35
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

Спасибо. Это - быстрее, конечно и лучше.
И можно сразу второй вопрос?
Я хочу поместить несколько картинок внутри каждой области друг на друга (пока в картинках установлена альфа, но как изменять её динамически - это будет третья проблема ). Никакая position не выглядит для этого подходящей...
Я дажн пробовал помещать внутри картинку по умолчанию, но брать её координаты или размеры, что-то не выходит... ;(
Ответить с цитированием
  #5 (permalink)  
Старый 28.05.2015, 19:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,125

Григорий Данилович,
непонял ничего
Ответить с цитированием
  #6 (permalink)  
Старый 28.05.2015, 19:45
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

Рони, я хочу помещать одну картинку поверх другой.
Как сделать, чтобы внутри одной области было несколько картинок покрывающих друг друга?
Ответить с цитированием
  #7 (permalink)  
Старый 28.05.2015, 19:47
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

как при position:absolut; top:0; left:0; только относительно не всего экрана, а родителя?
Ответить с цитированием
  #8 (permalink)  
Старый 28.05.2015, 19:50
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

zIndex поможет?
Ответить с цитированием
  #9 (permalink)  
Старый 28.05.2015, 20:04
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

<style>
span { padding:10; margin:10; display:inline-block;  border:1px dotted red;}
span img {position:static; left:0; top:0;}
</style>

<script>
window.onload = function () {

var spans = document.getElementsByTagName('span');
var imgs = ['images/pic1-40x40.png','images/pic5-40x40.png'];
for (var imi=0; imi<imgs.length; imi++)
	var base_image = new Image();
	base_image.src = imgs[imi];
	base_image.width=30; 
	for(var i=0; i<spans.length; i++){
		
     	var imar=spans[i].getElementsByTagName('img');

	if (imar.length>0){
		alert(imar[0].src+'--'+
		      imar[0].style.width+'@'+imar[0].style.top);
		base_image.style.top = imar[0].style.top;
		base_image.style.left = imar[0].style.left;
		base_image.style.width = imar[0].style.width;
	}	
	else {
		alert('no picture found!');
	}
	spans[i].appendChild(base_image.cloneNode());
    }
}
</script>
</head><body>
<span id=1><img src='images/pic9.jpg' width=30></img></span>
<span id=2><img src='images/pic8.jpg' width=40></img></span>
<span id=3><img src='images/pic7.jpg' width=50></img></span>

Помещает знак неудавшейся загрузки картинки рядом с базовой  - не поверх её
Ответить с цитированием
  #10 (permalink)  
Старый 28.05.2015, 20:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,125

Григорий Данилович,
родителю position: relative; картинкам position:absolut;
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция для перевода размера из байтов в понятный для человека формат Антон Крамолов Ваши сайты и скрипты 4 05.04.2013 16:42