javascript - 如何为处于事件(按下)状态的新创建的 html 按钮添加背景图像?

标签 javascript html css

我的脚本动态创建按钮:

let foo (obj) {
     let button = document.createElement('button');
     ...
}

这些按钮从 obj 获得了它的 CSS 样式

button.style.cssText = obj.cssText

现在我需要处于事件(按下)状态的按钮更改其背景。

背景图像也来自对象。

let backgroundImage = obj.background

如果我已经有了元素,我可以在 CSS 样式中使用它:

#mybutton1:active {background-image: url(mybutton1back.svg)}

...但是我该如何动态设置它呢?

最佳答案

伪 css 选择器样式最好由 css 处理。因此,与其尝试通过 js 事件模仿 :active css 规则,我决定最好通过 js 将 CSS 样式附加到样式表。

HTML:

<button id="btn">
something
</button>

CSS:

button {
  width: 50%;
  height: 50%;
  padding: 2em;
  display: block;
  margin: 0 auto;
  background: blue;
}

JS:

const button = document.getElementById('btn')
const imageUrl = 'https://www.goldenglobes.com/sites/default/files/styles/portrait_medium/public/people/cover_images/rami_malek_0601_mr._robot_13.jpg?itok=Q4NBBHxh';


const bgImageRule = `url(${imageUrl})`

const css = document.createElement("style");
css.type = "text/css";
css.innerHTML = `button#btn:active { background: ${bgImageRule}  }`;
document.head.appendChild(css);

PS:我在 HTML 中对按钮进行了硬编码,但这也适用于动态创建的元素。

这是 jsfiddle

关于javascript - 如何为处于事件(按下)状态的新创建的 html 按钮添加背景图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55205970/

相关文章:

javascript - reducer 更新了 apposArrayProp 但 Redux 没有更新我的 View

javascript - 如何从 WKWebView Swift 调用这个 javascript 函数?

javascript - 是否可以控制 HTML Razor 组件呈现的顺序?

html - 当浏览器达到一定宽度时背景图像消失的问题

javascript - 借助前三个字符在 Javascript 中查找字符串的索引

javascript - 创建 Jquery 更新函数?

html - 在 DIV 样式菜单中跨行跨行文本

php - 将最新的 WordPress 帖子的特色图片作为背景图片拉入 css

jquery - div 在 Internet Explorer 中的位置

php - 语法错误 : Adding div class to php variable that will be outputted