Alexandroppolus, благодарю за подсказку!)
P.S. Пока такое высшая математика(( |
Борис К,
это весьма и весьма далеко от высшей математики. 0) открой консоль разработчика на странице своего приложения, лучше в Хроме 1) введи строку document.styleSheets , нажми энтер. 2) тебе вывалится здоровенный объект, и раскрывая ветви дерева, ты увидишь всю правду о таблицах стилей в твоем документе. Остается только с помощью js забрать из этого объекта всё нужное. |
Цитата:
Цитата:
|
Цитата:
https://developer.mozilla.org/en-US/...nt/styleSheets https://developer.mozilla.org/en-US/.../CSSStyleSheet https://developer.mozilla.org/en-US/...eb/API/CSSRule https://developer.mozilla.org/en-US/...I/CSSStyleRule и связанными темами. CSSom немного посложнеее, чем Dom на мой взгляд. + некоторые неточности по сравнению с тем, что реально есть в браузере. |
Voraa, спасибо за ссылки!))
/Но только не ругайтесь за следующий вопрос)/ Вообще возможно ли сделать так, чтобы в массиве обсуждаемого кода, например, вместо одного из изображений ("https://loremflickr.com/150/150/girl?random=1") был красный квадрат, созданный из следующего стиля: background-color: #ff0000; width: 150px; height: 150px;? P.S. У меня есть опасения, что я мог быть ранее неправильно понят.(( |
Многое чего можно сделать. Весь вопрос в сложности.
Зачем для каждого квадрата в css указывать width и height? Разве они могут отличаться? Достаточно создать одно правило для всех квадратов (через класс и атрибут) и там указать ширину и высоту [data-id] { width: 150px; height: 150px; } [data-id="girl"] { background-image:url(https://loremflickr.com/150/150/girl?random=1); } [data-id="dog"] { background-image:url(https://loremflickr.com/150/150/dog?random=2); } [data-id="boy"] { background-image:url(https://loremflickr.com/150/150/boy?random=3); } [data-id="kitten"] { background-image:url(https://loremflickr.com/150/150/kitten?random=4); } |
Цитата:
Цитата:
|
Я не вижу всей задачи.
Как вариант, если это то, о чем я думаю, то в массиве надо указывать не только значение, но и свойство стиля. const images = [ ['backgroundImage',"url(https://loremflickr.com/150/150/girl?random=1)"], ['backgroundImage',"url(https://loremflickr.com/150/150/dog?random=2)"], ['bacgroundColor', "red"], ['backgroundImage',"url(https://loremflickr.com/150/150/kitten?random=4)"] ]; и задавать стиль elem.style[Images[k][0]] = Images[k][1]; |
Как вариант, оставить, как у вас, но проверять, что в строке. Скажем если строка содержит "/", то это url и тогда устанавливать картинку. А если нет, то это - цвет.
Если надо установить только один раз и не менять потом, то можно строку задания картинки указывать c url(...) и просто elem.style.background = Image[k] При задании обобщенного свойства background браузер сам разбирается, что там цвет или картинка |
Цитата:
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> <style type="text/css"> [data-id="red"] { height: 100px; width: 100px; border-top: 30px solid #ff0000; border-right: 30px solid #ff0000; border-bottom: 30px solid #ff0000; border-left: 30px solid #ff0000; } [data-id="blue"] { height: 100px; width: 100px; border-top: 30px solid #0000ff; border-right: 30px solid #0000ff; border-bottom: 30px solid #0000ff; border-left: 30px solid #0000ff; } </style> </head> <body> <script> function shuffle(array) { return array; } const x = 150; const y = 150; const w = 2; const images = [ "https://loremflickr.com/150/150/girl?random=1", "https://loremflickr.com/150/150/dog?random=1", "https://loremflickr.com/150/150/car?random=1", "https://loremflickr.com/150/150/kitten?random=1" ]; const h = Math.ceil(images.length / w); const canvas = Object.assign(document.createElement('canvas'), { width: w * x, height: h * y }); document.body.prepend(canvas); const ctx = canvas.getContext('2d') const createImg = () => Promise.all( shuffle(images).map((src, i) => new Promise( (onload) => Object.assign(new Image(), { src, onload }) ).then(({ target }) => { const hPos = Math.floor(i / w); const wPos = i - (hPos * w); ctx.drawImage( target, wPos * x, hPos * y, x, y ) })) ); createImg() </script> </body> </html> Теперь, например хотелось бы, чтобы в массиве скрипта вместо двух изображений были две рамочки ([data-id="red"] и [data-id="blue"] , которые прописаны в стилях. |
Часовой пояс GMT +3, время: 06:35. |