Setting top and left CSS attributes

JavascriptCoding Style

Javascript Problem Overview


For some reason I'm unable to set the "top" and "left" CSS attributes using the following JavaScript.

var div = document.createElement('div');
div.style.position = 'absolute';
div.style.top = 200;
div.style.left = 200;
document.body.appendChild(div);

Using Firebug I can see that the div gets the position set to "absolute" but the top and left attributes are not set!

This is for Firefox 3.6.

Javascript Solutions


Solution 1 - Javascript

Your problem is that the top and left properties require a unit of measure, not just a bare number:

div.style.top = "200px";
div.style.left = "200px";

Solution 2 - Javascript

You can also use the setProperty method like below

document.getElementById('divName').style.setProperty("top", "100px");

Solution 3 - Javascript

div.style yields an object (CSSStyleDeclaration). Since it's an object, you can alternatively use the following:

div.style["top"] = "200px";
div.style["left"] = "200px";

This is useful, for example, if you need to access a "variable" property:

div.style[prop] = "200px";

Solution 4 - Javascript

We can create a new CSS class for div.

 .div {
      position: absolute;
      left: 150px;
      width: 200px;
      height: 120px;
    }

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDeniz DoganView Question on Stackoverflow
Solution 1 - JavascriptLyubomyr ShaydarivView Answer on Stackoverflow
Solution 2 - JavascriptEralperView Answer on Stackoverflow
Solution 3 - JavascriptrinogoView Answer on Stackoverflow
Solution 4 - JavascriptserkanbasdagView Answer on Stackoverflow