
04.02.2022, 08:06
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,136
|
|
Сообщение от Борис К
|
отображается аж три раза...
|
долго думать над строкой 58 и в частности строками 59 - 60 в блоке js, можно конечно и пораньше задуматься со строки 46 например.)))
Последний раз редактировалось рони, 04.02.2022 в 13:34.
|
|

04.02.2022, 08:15
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,136
|
|
Aetae,

|
|

04.02.2022, 08:18
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,136
|
|
Сообщение от Борис К
|
src="http:
|
ссылки без S лучше не использовать в примерах на форуме, картинки не отобразятся, скрипты не загрузятся с такими url.
|
|

04.02.2022, 13:01
|
 |
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
Борис К, поправил shuffle, там был баг - он не трогал последнюю картинку.)
__________________
29375, 35
|
|

04.02.2022, 13:41
|
Кандидат Javascript-наук
|
|
Регистрация: 22.02.2017
Сообщений: 145
|
|
Спасибо, Рони!
Сообщение от рони
|
долго думать над строкой 58 и в частности строками 59 - 60
|
Тут уже вроде сообразил... после бессонной ночи)
Сообщение от рони
|
можно конечно и пораньше задуматься со строки 46 например.)))
|
Видимо, с этим будет посложнее... но я непременно последую вашему совету!))
Сообщение от рони
|
ссылки без S лучше не использовать в примерах на форуме
|
Спасибо за подсказку!
Сообщение от рони
|
картинки не отобразятся, скрипты не загрузятся с такими url
|
Но у меня всё отлично отображается, загружаясь... честное слово!))
Видимо, у меня ещё старый браузер... такое может быть?
|
|

04.02.2022, 14:08
|
Кандидат Javascript-наук
|
|
Регистрация: 22.02.2017
Сообщений: 145
|
|
Сообщение от Aetae
|
поправил shuffle, там был баг
|
Ничего, бывает в спешке... Вы и так мгновенно реализовали мою фантазию)))
Сообщение от Aetae
|
он не трогал последнюю картинку.)
|
Да, я заметил такое дело))
Спасибо, Aetae!
P.S. Но ещё вопрос родился: возможно ли сделать ещё кнопку перемешивания для генерации нового изображения, чтобы не перезагружать страницу, или это слишком трудоёмко?
<button onclick="...">Shuffle</button>
Самостоятельно разобраться пока не смог((
Последний раз редактировалось Борис К, 04.02.2022 в 14:34.
|
|

04.02.2022, 14:47
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,136
|
|
canvas create img
Борис К,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<img id="pic"></img>
<button id="btn">Shuffle</button>
<script>
// функция перемешивающая массив
function shuffle(array) {
let i = array.length;
while (i--) {
let j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
// функция добавляющая картинку на страницу
function toImage(canvas, type) {
pic.src = canvas.toDataURL(type)
}
const x = 150; // ширина одного
const y = 150; // высота одного
const w = 2; // сколько в ряду
// картинки, должны быть на том же домене или иметь Access-Control-Allow-Origin
const images = [
"https://picsum.photos/seed/aaa/150",
"https://picsum.photos/seed/bbb/150",
"https://picsum.photos/seed/ccc/150",
"https://picsum.photos/seed/ddd/150"
];
const h = Math.ceil(images.length / w); // сколько в столбце
const canvas = Object.assign(document.createElement('canvas'), {
width: w * x,
height: h * y
});
const ctx = canvas.getContext('2d');
const createImg = () => Promise.all(
shuffle(images).map((src, i) => new Promise(
(onload, onerror) => Object.assign(new Image(), {
crossOrigin: 'anonymous',
src,
onerror,
onload
})
).then(({target}) => {
const hPos = Math.floor(i / w);
const wPos = i - (hPos * w);
ctx.drawImage(
target,
wPos * x,
hPos * y,
x,
y
)
}))
).then(() => {
toImage(canvas, 'image/jpeg');
});
btn.addEventListener('click', createImg);
createImg()
</script>
</body>
</html>
|
|

04.02.2022, 15:12
|
Кандидат Javascript-наук
|
|
Регистрация: 22.02.2017
Сообщений: 145
|
|
Рони... так ничесна!))
Я не поспеваю за Вами... учица новому!
Огромная благодарность Богам Java Script!

|
|

06.02.2022, 03:51
|
Кандидат Javascript-наук
|
|
Регистрация: 22.02.2017
Сообщений: 145
|
|
Aetae, Рони, тока не кидайте в меня тэгами тапками в это морозное воскресное утро!
Но возможно ли в принципе сделать так, чтобы в последнем коде на этой страничке 10-я строка (<img id="pic"></img>) была заменена следующей таблицей с отправкой к стилям?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
[data-id="1"] {
background-image:url(...);
width:150px;
height:150px;
background-position:0px 0px
}
[data-id="2"] {
background-image:url(...);
width:150px;
height:150px;
background-position:150px 300px
}
[data-id="3"] {
background-image:url(...);
width:150px;
height:150px;
background-position:0px 150px
}
[data-id="4"] {
background-image:url(...);
width:150px;
height:150px;
background-position:150px 150px
}
</style>
</head>
<body>
<table align="center" cellspacing="0" cellpadding="0">
<tr>
<td data-id="1"></td>
<td data-id="2"></td>
</tr>
<tr>
<td data-id="3"></td>
<td data-id="4"></td>
</tr>
</table>
</body>
</html>

|
|

06.02.2022, 08:12
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,136
|
|
Борис К,
вопрос не понимаю, нафига тогда огород с канвас городили, если вернулись к тому что было?
|
|
|
|