'Can you chain backgroundImage and backgroundPosition?
Having trouble figuring out how to use backgroundImage and backgroundPosition with the DOm method. Looking to use the background image and adjust the positioning
window.onload = function() {
var slime = "url(https://www.dropbox.com/s/scdx0a0ck16abtv/slime.jpg?raw=1)";
document.getElementsByTagName('main').style.backgroundImage = "url(https://www.dropbox.com/s/scdx0a0ck16abtv/slime.jpg?raw=1)";
slime.style.backgroundPosition = '25% 75%';
};
Solution 1:[1]
I'm breaking this up and adding comments for clarity (what @A Haworth said above is spot on, however).
window.onload = function() {
// define and store image url with proper formatting
var slime = "url('https://www.dropbox.com/s/scdx0a0ck16abtv/slime.jpg?raw=1')";
// get the main element from the DOM (there are multiple ways of accomplishing this)
let main = document.querySelector('main');
// set background image of main element
main.style.backgroundImage = slime;
// set position of background image
main.style.backgroundPosition = '25% 75%';
)};
Solution 2:[2]
The "chaining" CSS properties is called shorthand which can apply to some CSS properties. Fortunately backgound property does, here's the list:
background:
- background-color
- background-image
- background-repeat
- background-attachment
- background-position
It has to be in that order delimitted with a space, and any value can be omitted (but at least one is needed). So OP would be:
background: url(https://www.dropbox.com/s/scdx0a0ck16abtv/slime.jpg?raw=1) 25% 75%
/* You should add "no-repeat" betwwen -image and -position if the image dimensions
are smaller than the element's dimension, unless you want a wallpaper effect */
That property: value is referred to as a CSS ruleset. In order to actually apply any CSS ruleset to an element inline with the .style property, is to use .setProperty() method along with it.
node.style.setProperty(property, value);
const main = document.querySelector('main');
const property = 'background';
const value = `url(https://www.dropbox.com/s/scdx0a0ck16abtv/slime.jpg?raw=1) 25% 75%`;
main.style.setProperty(property, value);
html,
body {
width: 100%;
height: 100%
}
main {
min-height: 100%;
}
<main></main>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Ryan O'D |
| Solution 2 |
