CSS blend

V případě, že nastavíme nějakému elementu obrázek na pozadí a zároveň barvu, background-blend-mode umožní tyto dvě složky smíchat (anglicky blend). Obrázek tedy nemusí být průhledný, aby se za ním barva projevila.

Míchání popdporuje Chrome 35, Firefox 30, Safari 7.1 i Opera 22. IE zatím nikoliv.

Symbolický zápis vypadá následovně.

element {
  background-image: url(url obrázku);
  background-color: barva pozadí;
  background-blend-mode: typ;
}

Za typ se potom zadává něco z mnoha hodnot: normal, multiply, screen, overlay, darken, lighten, color-dodge, color-burn, hard-light, soft-light, difference, exclusion, hue, saturation, color, luminosit.

Nejlepší bude si to vyzkoušet (typů je možné zadávat i několik zároveň – při zápisu CSS se oddělí čárkou).

Typ background-blend-mode:

<style>
.blend {
    background-image: url(http://jecas.cz./files/blend/1.jpg);
    width: 100%;
    height: 0;
    padding-top: 50%;
    background-color: #0D6AB7;
    background-size: cover;
}

.blend-obal ul {list-style: none; padding: 0;}
.blend-obal li {display: inline}
.blend-obal label {white-space: nowrap;}
</style>

<p><label>Obrázek
    <select onchange="blendTest.style.backgroundImage = 'url(http://jecas.cz./files/blend/' + this.value + '.jpg)'">
        <option value="1">krajina</option>
        <option value="2">káva</option>
        <option value="3">moře</option>
        <option value="4">koncert</option>
        <option value="5">louka</option>
    </select>
</label></p>
<p><label>Barva na pozadí <input type="color" value="#0D6AB7" onchange="blendTest.style.backgroundColor = this.value"></label></p>

<p>Typ <code>background-blend-mode</code>:</p>
<div class="blend-obal" id="blend-obal">
<ul>
<li id="normal"><label><input type="checkbox" name="normal"> <code>normal</code></label></li>
<li id="multiply"><label><input type="checkbox" name="multiply"> <code>multiply</code></label></li>
<li id="screen"><label><input type="checkbox" name="screen"> <code>screen</code></label></li>
<li id="overlay"><label><input type="checkbox" name="overlay"> <code>overlay</code></label></li>
<li id="darken"><label><input type="checkbox" name="darken"> <code>darken</code></label></li>
<li id="lighten"><label><input type="checkbox" name="lighten"> <code>lighten</code></label></li>
<li id="color-dodge"><label><input type="checkbox" name="color-dodge"> <code>color-dodge</code></label></li>
<li id="color-burn"><label><input type="checkbox" name="color-burn"> <code>color-burn</code></label></li>
<li id="hard-light"><label><input type="checkbox" name="hard-light"> <code>hard-light</code></label></li>
<li id="soft-light"><label><input type="checkbox" name="soft-light"> <code>soft-light</code></label></li>
<li id="difference"><label><input type="checkbox" name="difference"> <code>difference</code></label></li>
<li id="exclusion"><label><input type="checkbox" name="exclusion"> <code>exclusion</code></label></li>
<li id="hue"><label><input type="checkbox" name="hue"> <code>hue</code></label></li>
<li id="saturation"><label><input type="checkbox" name="saturation"> <code>saturation</code></label></li>
<li id="color"><label><input type="checkbox" name="color"> <code>color</code></label></li>
<li id="luminosity"><label><input type="checkbox" name="luminosity"> <code>luminosity</code></label></li>
</ul>
</div>

<div class="blend" id="blend-test">
</div>
<script>
var blendTest = document.getElementById('blend-test');
(function() {
var policka = document.getElementById('blend-obal').getElementsByTagName("input");

for (var i = policka.length; i--; ) {
    policka[i].onchange = namichat;
}

function namichat() {
    var blendMode = [];
    for (var i = policka.length; i--; ) {
        if (policka[i].checked) {
            blendMode.push(policka[i].name);
        }
    }
    blendTest.style.backgroundBlendMode = blendMode.join(",");
}
    
})();
</script>  

Test na samostatné stránce

Vlastnost mix-blend-mode

Pro míchání libovolných elementů (ne jen obrázku a barevného pozadí) existuje vlastnost mix-blend-mode. Podpora v prohlížečí je ale zatím nedostatečná. V Chrome a Opeře se musí zapnout v chrome://flags, resp. opera://flags.

Odkazy jinam

To je všechno. Líbil se vám článek a chcete se dozvědět, až vyjde další?

Sledujte:

 

Připomínky mi pište do komentářů ↓

Image-rendering

Image-rendering

CSS vlastnost image-rendering ovlivňuje způsob, kterým se v prohlížeči zvětšují/zmenšují obrázky.

CSS mask

CSS vlastnost mask

Vlastnost mask dokáže vytvářet elementy s texturou nebo nepravidelnými tvary.

Background-clip

Background-clip

CSS vlastností background-clip jde omezit místo, kde zobrazí obrázek na pozadí.

Border-image

Border-image

CSS vlastnost border-image slouží k vytváření obrázkových rámečků.

Object-fit

Object-fit

CSS vlastnost object-fit umí přizpůsobit obrázek pevné velikosti.

Komentáře