jQuery lets you a way to write down your own custom CSS methods. CSS Hooks directly into jQuery to override custom properties.
I think you have written so many time in your website for different location. Isn’t it?
$(“div”).css(“margin”, “0px 1px 2px 3px”);
But using CSS Hooks, you can easily add the above code to jQuery.
Warning: CSS Hooks were added in jQuery 1.4.3 so prior that version jQuery will not work.
Lets do one thing, split the user’s input into 4 values into array.
var directions = [“Top”, “Right”, “Bottom”, “Left”];
Now define our new “margin” hook with two methods, get and set:
$.cssHooks.margin = { get: function(elem, value) { var res = []; $.each(directions, function(i, dir) { res.push($.css(elem, "margin" + dir)); }); return res.join(" "); }, set: function(elem, value) { $.each(value.split(" "), function(i, val) { elem.style["margin + directions[i]"] = val; }); } };
set method takes two arguments: the element to set the CSS properties on, and the value the user passed.
So in our case this will be a string of values, eg “0px 1px 2px 3px”. So we split the values at a space, and loop over them.
And get method will do the reverse i.e. getting each of the individual values and joining them into a string.
Here we use $.css which pulls out a CSS setting. So all this methods collects the four individual values and add them to an array, which I then join at the end to return a string.