
CSS blend
CSS vlastnost background-blend-mode
slouží ke smíchání barvy s obrázkem.
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>
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
- Dev.Opera: Getting to Know CSS Blend Modes
- Adobe Web Platform: CSS Blend Modes
- Bennett Feely: CSS Blend Modes could be the next big thing in Web Design
- DevDocs: background-blend-mode
- MDN: background-blend-mode
- CSS-Tricks: Basics of CSS Blend Modes
- Demosthenes.info: Better Diagrams with SVG and Blend Modes CSS / BLEND MODES
Komentáře