How can we override one specific value and preserve all other values in box-shadow list like this:
div{
    box-shadow: 0 0 0 5px #00ff00 ,  0 0 0 10px #ff0000 ,  0 0 0 15px #0000ff ; 
}
Let's say we want to override only the second value without losing others:
div.with-another-shadow{
    box-shadow:       ???         ,  0 0 0 5px #abcdef ,       ???           ;  
}
Seems like it is possible only when we are copy-pasting the first and the third values too. It is not working not with auto and not with inherit. 
Is it possible to achieve this only with css or we need to use jQuery or JavaScript' getComputedStyle method or something ? 
Here is the playground: http://jsfiddle.net/cherniv/uspTj/5/
P.S. Seems like it is relevant to multiple  background images list too..
This is not a real solution to the general case, but a trick to solve the particular case of your fiddle:
div{
    box-shadow: 0 0 0 5px green,  0 0 0 10px #ff0000 ,  0 0 0 15px blue;    
    position: relative;
}
div:nth-of-type(2):after {
    content: '';
    position: absolute;
    left: 0px;
    right: 0px;
    top: 0px;
    bottom: 0px;
    margin: -5px;
    box-shadow: 0 0 0 5px yellow;    
}
I am creating a pseudo element to hold the second shadow, and set a margin (negative) to get it past the first shadow, so that I won't draw on it.
Here is another demo, changing the value thru JavaScript
demo2
The script is the following
function change () {
    var elem = document.getElementById("test");
    var style = window.getComputedStyle(elem);
    var boxShadow = style.boxShadow;
    var arrayBoxShadows = parseFirstComma (boxShadow);
    var newData = elem.dataset.boxshadow;
    var arrayNewData = parseFirstComma (newData);
    boxShadow = "";
    var nmax = Math.min (arrayBoxShadows.length, arrayNewData.length)
    for (var n = 0, lenR = nmax; n < lenR; n++) {
        if (n > 0) {
            boxShadow = boxShadow + ", ";
        }
        if (arrayNewData[n] == "inherit") {
            boxShadow = boxShadow + arrayBoxShadows[n];
        } else {
            boxShadow = boxShadow + arrayNewData[n];
        }
    }
    if (arrayNewData.length > nmax) {
        for (var n = nmax, lenR = arrayNewData.length; n < lenR; n++) {
            if (n > 0) {
                boxShadow = boxShadow + ", ";
            }
            boxShadow = boxShadow + arrayNewData[n];
        }
    }
    if (arrayBoxShadows.length > nmax) {
        for (var n = nmax, lenR = arrayBoxShadows.length; n < lenR; n++) {
            if (n > 0) {
                boxShadow = boxShadow + ", ";
            }
            boxShadow = boxShadow + arrayBoxShadows[n];
        }
    }
    elem.style.boxShadow = boxShadow;
}
function parseFirstComma (property) {
    var properties = new Array();
    var curr = "";
    var chr;
    var nested = "";
    for (inx = 0, len = property.length; inx < len; inx++) {
        chr = property[inx];
        if (chr == "(") nested += 1;
        if (chr == ")") nested -= 1;
        if (nested == 0 && chr == ",") {
            properties.push (curr);
            curr = "";
        } else {
            curr = curr + chr;
        }
    }
    if (curr.length > 0) {
        properties.push (curr);
    }
    return properties;
};
document.onkeydown = function (e) {
    e = e || window.event;
    switch(e.which || e.keyCode) {
        case 37:
            change ();
            break;
    }
}
I am retrieving the box-shadow applied to the element, and retrieve the desired override from a data value. And then, recalculate the result (using inherit as a posible value). The demo is activated pressing the left arrow.
Under the current CSS specification, it is not possible to override one of the values of a multiple-value attribute.
You will need to repeat the definition of the 1st and 3rd shadows in the second rule, i.e.
div{
    box-shadow: 0 0 0 5px #00ff00 ,  0 0 0 10px #ff0000 ,  0 0 0 15px #0000ff ; 
}
div:nth-of-type(2){
    box-shadow: 0 0 0 5px #00ff00 ,  0 0 0 10px #abcdef ,  0 0 0 15px #0000ff ; 
}
This message in the W3 mailing list suggests that it's something that's being considered http://lists.w3.org/Archives/Public/www-style/2013Apr/0711.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With