Пожалуйста, а можно еще спросить на схожую тему...
Хочу поместить в виде фоновой картинки (background-image) такую картинку, которая лежит в JS переменной. В виде ссылки получается: document.getElementById("canvas1").style.backgroundImage="url('imgs/m3.png')"; а с переменной - нет: document.getElementById("canvas2").style.backgroundImage="${pic_m3}"; Обратные кавычки вместо двойных тоже пробовал - не помогает. Пример лежит по адресу: http://www.elegant-nmr.com/iii/m.html Пожалуйста, подскажите, какие теперь я кавычки и где забыл? Спасибо! |
Was-Ja,
document.getElementById("canvas2").style.backgroundImage=`url('${pic_m3}')`; |
Ой!!! Как просто-то!!!
СПАСИБО ОГРОМНОЕ!!! |
И еще на эту тему, пожалуйста, посоветуйте:
в html у меня куча простых групп полей: короткое название - подсказка - input для ввода, я обычно их помещаю в элемент таблицы, получается так: <td>Experiment Name:</td><td><img width=15 length=15 id="h3" title="It is good idea to provide a name of an experiment here, it will simplify your further search"/></td> <td><input type="text" class="css_mf" style="width:260px" id="experiment_name" placeholder="My first experiment today"></td> мне хочется все тексты вынести в какую-то структуру, то есть например var H = {}; H.DS = {}; // DS - аббревиатура секции H.DS.EN = {}; // EN - аббревиатура конкретного поля H.DS.EN.L = "Experiment Name"; H.DS.EN.H = "It is good idea to provide a name of an experiment here, it will simplify your further search"; H.DS.EN.PH = "My first experiment today"; Мне это хочется сделать, чтобы меняя H можно было бы изменить язык. Я понимаю как в JS заполнить эти поля после того, как все объекты уже появились в html, но тогда код будет нечитаемый. Скажите, пожалуйста, а можно ли как-то так написать, чтобы встроить каждый такой текстовый элемент (лежащий в JS объекте) в httml, то есть хочется чего-то похожего на: <td>${H.DS.EN.L}</td><td><img width=15 length=15 id="h3" title=${H.DS.EN.H}/></td> <td><input type="text" class="css_mf" style="width:260px" id="experiment_name" placeholder=${H.DS.EN.PH}></td> Спасибо! |
Цитата:
|
Спасибо большое!!! Пока забил, и реализовал через innerHTML и аналогичное
|
Вопрос вдогонку...
Скажите, пожалуйста, а как поместить картинку, которая есть в JS переменной внутрь css? То есть у меня есть <script> var pic_b = []; pic_b[0]="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAB6CAYAAAClS5OpAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAGpJREFUaN7t2rENwDAIAEFIw8heHolMYKqku5foELcAOTNxq7uju2MrM6Oq7gszc51zTkTEbFNVs9144ucAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODfcnvs/qIXQqxBMul12GcAAAAASUVORK5CYII="; </script> и есть CSS: </style> .css_l { border-radius: 14px; border: 2px solid black; color: black; padding: 2px 2px; text-align: center; vertical-align: center; font-size: 14px; margin: 5px 5px; cursor: pointer; } /* .css_l:focus { outline: none; } */ .css_l::before { content: attr(name); } .css_l[value='0']::after { content: `url('${pic_p[0]}')`; margin: 1px; } /* мне хочется сюда нарисовать картинку, что я выше сохранил в JS переменной */ .css_l[value='1']::after { margin: 2px; } .css_l[value='2']::after { margin: 6px; } </style> Поправьте, пожалуйста, что я тут делаю не так! Спасибо! |
Как то так
<style id='ist'> .css_l { border-radius: 14px; border: 2px solid black; color: black; padding: 2px 2px; text-align: center; vertical-align: center; font-size: 14px; margin: 5px 5px; cursor: pointer; } /* .css_l:focus { outline: none; } */ .css_l::before { content: attr(name); } .css_l[value='0']::after { content: `url('${pic_p[0]}')`; margin: 1px; } /* мне хочется сюда нарисовать картинку, что я выше сохранил в JS переменной */ .css_l[value='1']::after { margin: 2px; } .css_l[value='2']::after { margin: 6px; } </style> var pic_b = []; pic_b[0]="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAB6CAYAAAClS5OpAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAGpJREFUaN7t2rENwDAIAEFIw8heHolMYKqku5foELcAOTNxq7uju2MrM6Oq7gszc51zTkTEbFNVs9144ucAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODfcnvs/qIXQqxBMul12GcAAAAASUVORK5CYII="; let est = document.getElementById('ist'); // Элемент style let rules = est.sheet.cssRules; // Список правил let rule; for (let i = 0; i<rules.length; i++) { // Ищем правило с нужным селектором if (rules[i].selectorText == ".css_l[value='0']::after") { rule = rules[i]; break; } } rule.style.setProperty('content', `url('${pic_p[0]}')`); // Задаем нужное свойство |
Огромное спасибо, voraa за классное решение!!!
Не думал, что придется так заумно в css заехать, заодно теперь я понимаю, что с css можно делать все, что и с обычными элементами. Дополнительно обнаружил, что if (rules[i].selectorText == ".css_l[value='0']::after") не во всех браузерах работает, но if (rules[i].selectorText == ".css_l[value=\"0\"]::after") работает вроде везде. Еще есть одна хотелка, думал сам осилю, но так пока и не смог... Теперь хочется эту картинку уменьшить - отскалировать. Пробовал добавить rule.style.setProperty('width', "20%"); но ничего не изменилось. Пожалуйста, посоветуйте, можно ли как-то встраиваемую картинку отскалировать (она у меня 122 пикселей в высоту, а хочется, например, 24 пикселя или 20%). Спасибо! |
Цитата:
function findRuleBySel (rules, selectorText) { if (!rules || !selectorText) return; for (let i = 0; i<rules.length; i++) const rule = findRuleBySel(rules[i].cssRules, selectorText) || ((rules[i].selectorText === selectorText) && rules[i]); if (rule) { return rule; } } } |
Часовой пояс GMT +3, время: 04:41. |