Maak een verloopachtergrond. Een blik op CSS3-verloop (lineaire en radiale verlopen)

Met CSS-gradiënten kunt u een achtergrond van twee of meer kleuren maken die vloeiend van de ene naar de andere kleur overgaan. Ze zijn al een hele tijd bij ons en hebben redelijk goede browserondersteuning. De meeste moderne browsers begrijpen ze zonder voorvoegsels, voor IE9 en ouder is er een verloopfilter en voor IE9 kun je SVG gebruiken.

Verlopen kunnen overal worden gebruikt waar afbeeldingen worden gebruikt: in achtergronden kunnen ze als opsommingstekens in de lijst worden gespecificeerd in content of border-image .

Lineair verloop

Lineaire gradiënten zijn vrij eenvoudig te gebruiken. Voor het meest eenvoudige verloop stelt u gewoon de begin- en eindkleuren in:

Achtergrond: lineair verloop (oranje, goud);

Er kunnen een willekeurig aantal kleuren meer dan twee zijn. U kunt ook de richting van het verloop en de grenzen (stoppunten) van de kleuren bepalen.

De richting kan worden opgegeven in graden of trefwoorden.

Trefwoorden: naar boven = 0 graden; naar rechts = 90 graden; naar beneden = 180 graden - standaardwaarde; naar links = 270 graden.

Trefwoorden kan worden gecombineerd om een ​​diagonaal verloop te creëren, bijvoorbeeld naar linksboven.

Hieronder kun je zien hoe verschillende richtingen werken bij het uitrekken van lila naar geel:

Hier is bijvoorbeeld de code voor het allereerste vierkant:

Linksboven ( achtergrond: lineair verloop (linksboven, paars, karmozijnrood, oranjerood, goud); )

Eén ding om te onthouden is dat naar rechtsboven niet hetzelfde is als 45 graden. De verloopkleuren staan ​​loodrecht op de verlooprichtingslijn. Met rechtsboven loopt de lijn van de linkerbenedenhoek naar de rechterbovenhoek, met 45 graden - deze bevindt zich strikt onder deze hoek, ongeacht de grootte van de figuur.

Het verschil is duidelijk zichtbaar in rechthoekige figuren:

U kunt ook stoppunten instellen voor verloopkleuren; waarden worden gespecificeerd in eenheden of percentages en kunnen groter zijn dan 100% en kleiner dan 0%.

Voorbeelden van het instellen van waarden in %, in em en waarden die de grenzen van het element overschrijden:

Hoe dichter de stoppunten van aangrenzende kleuren zijn, hoe duidelijker de grens ertussen zal zijn. Zo maak je eenvoudig gestreepte achtergronden:

Zo kunt u bijvoorbeeld een achtergrond voor een zijkolom maken, uitgerekt over de gehele hoogte van het bovenliggende element:

De strepen op de achtergrond van de zijbalk zijn een ander verloop dat bestaat uit afwisselend volledige transparantie en wit met transparantie 30%. Verlopen met doorschijnende kleuren zijn handig omdat ze op een achtergrond van elke kleur kunnen worden toegepast.

De gradiënt in het voorbeeld is ingesteld op complex lange code, omdat de strepen alleen boven de achtergrond van de zijbalk mogen worden geplaatst. Als je niet probeert om alles als achtergrond voor één blok te maken, kun je het probleem oplossen met een pseudo-element.

Als er geen beperkingen zijn, kan de code veel korter zijn:

Licht (achtergrond: perzikpuff lineair verloop (90 graden, rgba (255, 255, 255, 0) 50%, rgba (255, 255, 255, .4) 50%) midden midden / 2em; ). donker ( achtergrond: staalblauw lineaire gradiënt(rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, .2) 50%) midden midden / 100% 1em )

In de eerste regel stellen we in Achtergrond kleur element, type en richting (kleur en richting kunnen worden weggelaten), in de tweede bepalen we de kleuren van het verloop en de grens ertussen, in de derde bepalen we de positie en grootte van de resulterende afbeelding. Het belangrijkste onderdeel is de maat. Standaard wordt de achtergrond herhaald, zodat het resulterende patroon de achtergrond van het element vult. Heel gemakkelijk en begrijpelijk :)

De volledige invoer kan op één regel worden gemaakt, maar voor de leesbaarheid is het handiger om in meerdere regels te schrijven, vooral bij complexe gradiënten.

Het is ook belangrijk om te weten dat het trefwoord transparant transparant zwart betekent, en niet transparant wit, dus als u het in Firefox gebruikt, kunt u zoiets als dit krijgen:

Om dit te voorkomen, gebruik volledig transparante kleuren de gewenste tint, bijvoorbeeld wit: rgba(255, 255, 255, 0) of zwart rgba(0, 0, 0, 0) . Over verschillende manieren Je kunt de kleuren aflezen die je moet instellen.

RGB-notatie leren specifieke kleur, je kunt gebruiken CSS.coloratum, een instrument van Lea Verou.

Naast het gebruikelijke lineaire verloop kun je een herhalend lineair verloop maken: een zich herhalend verloop

Voorbeeldcode:

Achtergrond: herhalend lineair verloop (groen, groen .5em, transparant .5em, transparant 1em);

Helaas gedragen zich herhalende gradiënten lukraak en zijn ze alleen geschikt voor patronen die niet om precisie geven. Als je precisie nodig hebt, gebruik dan lineair verloop in combinatie met background-size en background-repeat.

Verlopen hebben dezelfde beperking als doosschaduw: er kunnen geen individuele kleuren of richtingen aan worden gegeven. Dit leidt tot duplicatie van code en een dringende noodzaak om preprocessors te gebruiken bij het creëren van complexe gradiënten.

Een andere beperking is dat verlopen niet geanimeerd zijn, maar daar kan tot op zekere hoogte omheen worden gewerkt.

Voor snelle creatie er zijn veel cross-browser gradiënten handig hulpmiddel: colorzilla.com/gradient-editor/. Naast code voor moderne browsers biedt het code voor oudere IE en SVG voor 9th.

In combinatie met basismogelijkheden beheer achtergrondafbeeldingen gradiënten geven de breedste mogelijkheden om achtergronden te creëren verschillende graden complexiteit volledig zonder het gebruik van afbeeldingen. Je kunt verlopen gebruiken om complexe en interessante patronen te creëren, maar dat is een heel ander onderwerp.

A! Het verloop is een uitstekend hulpmiddel voor het manipuleren van kleuren CSS3. In plaats van een afbeelding te gebruiken om een ​​verloopeffect op een webpagina te creëren, zou het nuttiger zijn om deze te gebruiken CSS3-gradiënt en daarmee de site “verlichten”. Omdat de gebruiker geen tijd en verkeer hoeft te verspillen met het laden van de achtergrondafbeelding. Er zijn twee hoofdtypen gradiënten: radiaal en lineair. Het bericht van vandaag zal over hen gaan.

Lineair verloop

Zoals de classificatie zegt, verlopen in CSS3 zijn afbeeldingen. Er zijn geen speciale eigenschappen voor hen. En de advertentie gebruikt de eigenschap achtergrondafbeelding.

Over het algemeen ziet de syntaxis van de gradiënt (lineair) er als volgt uit:

1
2
3
4
5
6
7

div(
achtergrondafbeelding: -webkit-lineair-gradiënt(top, #FF5A00 0%, #FFAE00 100%);
achtergrondafbeelding: -moz-linear-gradient(top , #FF5A00 0% , #FFAE00 100% );
achtergrondafbeelding: -ms-lineair-gradiënt(top, #FF5A00 0%, #FFAE00 100%);
achtergrondafbeelding: -o-lineair verloop(boven, #FF5A00 0%, #FFAE00 100%);

}

Laten we dus alles in volgorde bespreken.

Allereerst wordt een lineaire gradiënt gedeclareerd door de functie linear-gradient(). De functie heeft drie hoofdbetekenissen. De eerste waarde definieert startpositie. Het voorbeeld geeft bovenaan aan, d.w.z. uitgangspositie van bovenaf. Je kunt ook onder, links en rechts gebruiken;

Als de hoek negatief is, verandert de positie van de linkerbenedenhoek naar de linkerbovenhoek.

De tweede waarde van de functie is de startkleur en de stoppositie, die wordt aangegeven als een percentage. Het aangeven van deze positie is niet nodig; de browser zal standaard 0% gebruiken voor de eerste kleur.

De laatste waarde is de tweede kleur en de stoppositie ervan. Standaard ingesteld op 100%. Deze extreme waarden betekenen dat de eerste kleur onmiddellijk overgaat in de tweede. Als we de eerste kleur echter op 50% instellen, begint deze pas vanaf het midden van de beschikbare hoogte over te gaan naar de tweede. Zo ziet de code eruit:

We krijgen stroken van gelijke hoogte. Met een duidelijke rand zal er geen kleurovergang zijn. Experimenteer met de waarden om beter te begrijpen hoe dit werkt.

Een radiale gradiënt wordt, net als een lineaire, gedeclareerd als een functie, alleen radial-gradient() . Er zijn ook basiswaarden: dit is de vorm van de radiale gradiënt (cirkel - cirkel of ellips - ellips), de begin- en eindkleur. De syntaxis is als volgt:

div(
achtergrond: radiaal verloop (cirkel, #F9E497, #FFAE00);
}

Als u geen vorm opgeeft, is de standaard een ellips.

Ook is de middenpositie van het verloop standaard ingesteld; deze kan worden gewijzigd. De positie kan worden gespecificeerd met behulp van opdrachten (boven, onder, links, rechts en midden), evenals hun combinaties, of gespecificeerd in percentages of pixels.

Commandocombinaties:

  • Midden bovenaan - bovenaan - 50% 0%;
  • In de linkerbovenhoek - linksboven - 0% 0%;
  • In de rechterbovenhoek - rechtsboven - 100% 0%;
  • In het centrum - centrum - 50% 50%;
  • Links midden - links midden - 0% 50%;
  • Rechts midden - rechts midden - 100% 50%;
  • Midden onder - onder - 50% 100%;
  • In de linker benedenhoek - linksonder - 0% 100%;
  • In de rechter benedenhoek - rechtsonder - 100% 100%.

Hier is een voorbeeld met percentages:

div(
achtergrondafbeelding: radiaal verloop (70% 20% , cirkel , #F9E497 , #FFAE00 );
}

Eerste aswaarde X tweede binnen U.

U kunt ook de grootte van de radiale gradiënt instellen. De grootte wordt aangegeven met een spatie na de verloopvorm. Standaard toepassen verste hoek(naar de verre hoek). De berekening wordt uitgevoerd vanaf het centrale punt van de helling naar:

Laten we een voorbeeld bekijken om dit beter te begrijpen. Een elliptisch verloop met een witte begin- en blauwe eindkleur:

div(
achtergrondafbeelding: radiaal verloop (230px 50px, ellips dichtstbijzijnde zijde, wit, blauw);
}

De grootte wordt berekend op basis van de afstand tot de dichtstbijzijnde zijden, het is duidelijk dat de bovenkant dichter langs de as ligt Y en links langs de as X.

En nu naar de andere kanten:

div(
achtergrondafbeelding: radiaal verloop (230px 50px, ellips verste kant, wit, blauw);
}

Het resultaat is, zoals ze zeggen, duidelijk. De grootte wordt berekend op basis van de afstand tot de verste zijden.

Zowel bij radiale als lineaire gradiënten kunnen stopposities voor kleur worden gebruikt. Ik zou ook willen opmerken dat als je kleurtransparantie wilt bereiken, je rgba moet gebruiken.

div(
achtergrondafbeelding: lineair verloop (top, rgba (255, 90, 0, 0,2), rgba (255, 174, 0, 0,2));
}

Het alfakanaal, het laatste en gelijk aan 0,2, geeft aan dat slechts 20% van 100% van de kleur wordt gebruikt.

In beide soorten CSS3-gradiënt Je kunt niet twee, maar meerdere kleuren gebruiken.

div(
achtergrondafbeelding: lineair verloop (boven, rood, oranje, geel, groen, blauw, indigo, violet);
}

Voor beide typen kunnen herhalende kleuren worden gebruikt. Dat wil zeggen dat uit deze waarden een cyclus wordt gevormd. Herhalende gradiëntfuncties, repeating-linear-gradient() voor lineair en repeating-radial-gradient() voor radiaal.

div(
achtergrondafbeelding: herhalend radiaal verloop (rood, blauw 20px, rood 40px);
}

0% , #FFAE00 100% ); /* voor Firefox */
achtergrondafbeelding: -ms-lineair-gradiënt(top, #FF5A00 0%, #FFAE00 100%); /* voor IE 10+ */
achtergrondafbeelding: -o-lineair verloop(top , #FF5A00 0% , #FFAE00 100% ); /* voor Opera */
achtergrondafbeelding: lineair verloop (top , #FF5A00 0% , #FFAE00 100% ) ; /* standaardsyntaxis */
}

div(
filter: progid: DXImageTransform.Microsoft .gradient(startColorstr= #33FF5A00 , endColorstr= #33FFAE00 ) ;
}

Waar 33 direct na de hash het percentage kleurverzadiging is.

Ik hoop dat het artikel nuttig voor u was en dat het besproken onderwerp volledig aan bod kwam.

Wilt u op de hoogte blijven van de nieuwste artikelen en lessen, abonneer u dan op

Binnenkort zullen websites gemakkelijker laden en kunnen ze helemaal zonder afbeeldingen worden gemaakt.

Nu al kun je in moderne browsers een verloopachtergrond van elke complexiteit creëren CSS-hulp, en tegelijkertijd geheel zonder afbeeldingen.

CSS-verlopen maken zonder afbeeldingen

Stel dat we op de achtergrond een verloopovergang willen maken van grijs naar zwart. Om dit te bereiken stelde W3 Corporation voor om in CSS3 een speciale lineaire gradiëntrichtlijn te gebruiken.

Dus, volgens versie W3, om een ​​verloopachtergrond te maken, schrijft u gewoon in de blokkiezer:

Achtergrond: lineair verloop (start, kleur1 positie1, kleur2 positie2,...,kleurN positieN);

En de browser tekent automatisch een verloopachtergrond in het blok.

Uiteraard, bloemen en controle punten er kan veel in het verloop zitten. Parameter begin specificeert in welke richting de gradiënt zich moet voortplanten - het kan beide zijn bovenkant voor een verticaal richtingsverloop of links voor horizontaal gericht.

Niet alle browsers ondersteunen deze functie, dus voorlopig zijn er een aantal trucjes. Voor zeer oude browsers moet u een gemiddelde achtergrondkleur opgeven (er zal helemaal geen verloop zijn, maar de achtergrond zal niet wit zijn), of een afbeelding met een verloop opgeven (als het doel van het gebruik van een lineair verloop echter in CSS is om het aantal geladen afbeeldingen te verminderen, dan is dit nutteloos, omdat in alle browsers de afbeelding nog steeds wordt geladen, hoewel deze later zal worden vervangen door lineair verloop).
Voor IE-achtige browsers kunt u op filters gebaseerde verlopen gebruiken, en voor webkit (Safari, Chrome) en gecko (Mozilla) browsers is er zoals altijd een alternatief: -webkit-gradient en -moz-linear-gradient, die accepteer vergelijkbare parameters. Zie het volgende codeblok voor hoe dit allemaal zou moeten werken:

Achtergrond: #999; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#cccccc", endColorstr="#000000"); achtergrond: -webkit-gradient(lineair, linksboven, linksonder, van(#ccc), tot(#000)); achtergrond: -moz-lineair-gradiënt(top, #ccc, #000);

Na het renderen ziet het er zo uit.

Het kleurverloop is soepele overgang van één opgegeven kleur naar de andere via tussenliggende kleuren. Bij een lineaire gradiënt vindt de overgang plaats in een rechte lijn, vanaf het punt A ter zake B. Het verloop kan meer dan twee referentiepunten hebben - dan wordt de overgang vanaf dat punt gemaakt A ter zake B, dan vanaf punt B ter zake C enzovoort.

Hoe u een lineair verloop op de achtergrond maakt in CSS

In CSS3 kun je via het al bekende een verloopachtergrond aan elementen toevoegen achtergrond eigendom-afbeelding. De waarde is het trefwoord linear-gradient(), waarbij u tussen haakjes het beginpunt van het verloop, de beginkleur en de eindkleur moet opgeven.

Laten we bijvoorbeeld een lineair verloop op de achtergrond maken dat van paars naar rood gaat. In dit geval willen we dat het startpunt is paars was met rechter zijde en de gradiëntvector was naar links gericht. Laten we de code schrijven:

Achtergrondafbeelding: lineair verloop (naar links, violet, rood); Achtergrondverloop op blok

400x400px

Verlooppuntkleuren kunnen worden geschreven in elk formaat dat beschikbaar is in CSS, zij het hexadecimale code, RGB-formaat of andere. De richting van de helling wordt gespecificeerd met het voorvoegsel to en vervolgens de trefwoorden left , right , top en bottom , die kunnen worden gecombineerd om de helling te veranderen. Bijvoorbeeld:

Achtergrondafbeelding: lineair verloop (naar rechtsonder, #ee82ee, #ff0000);

Bovendien kunt u de hellingshoek direct aangeven door een positief of negatief getal te gebruiken met het voorvoegsel deg (zonder spatie). Bij een gegeven hoek van 0° of 360° loopt de gradiëntlijn van onder naar boven. Naarmate de kantelhoek groter wordt, beweegt de vector met de klok mee (bij gebruik van een negatieve waarde wordt de beweging omgedraaid). Voorbeeld code-invoer:

Achtergrondafbeelding: lineair verloop (-110deg, #ee82ee, #ff0000);

Meerdere ankerpunten

Zoals we al zeiden, kan een verloop meer dan twee ankerpunten hebben. In dit geval zal de achtergrond vloeiend overgaan van de eerste kleur naar de tweede, van de tweede naar de derde, van de derde naar de vierde, enzovoort totdat het uiteindelijke referentiepunt wordt bereikt. Als u het aantal van deze punten in het verloop wilt vergroten, voegt u ze gewoon toe, gescheiden door komma's. Bijvoorbeeld:

Achtergrondafbeelding: lineair verloop (145 graden, #ee82ee, leiblauw, #ffd86a, paars);

In ons voorbeeld zijn vier referentiekleurpunten aangegeven, maar u kunt er zoveel toevoegen als u wilt en in alle beschikbare kleurformaten.

Overgangslengte

Standaard plaatst de browser de stippen op gelijke afstanden, zodat de gradatie uniform is. Maar deze afstand kan worden gecontroleerd met behulp van eenheden CSS-afmetingen. Laten we eens kijken naar het volgende voorbeeld:

Achtergrondafbeelding: lineair verloop (#92009b 20%, #f5e944 90%, #00ffa2);

In onze code wordt na de kleur #92009b de waarde 20% aangegeven. Omdat dit zich dichtbij het eerste ankerpunt bevindt, betekent dit dat 20% van de lengte van het element in de opgegeven kleur wordt geverfd. Daarna begint het verloop: een waarde van 90% vertelt de browser dat hij de kleur #f5e944 moet bereiken met 90% van de lengte van het element (beginnend bij 20%). Daarna begint de overgang naar de derde kleur in de resterende ruimte - #00ffa2.

Dit onderwerp vereist ook oefening. Probeer een verloopachtergrond te maken met meerdere ankerpunten (meer dan twee), speel met de afstandswaarden en bekijk de verloopverandering in de browser.

Voorvoegsels van leveranciers

Om cross-browser compatibiliteit te garanderen, moeten sommige late CSS-eigenschappen worden toegevoegd met leveranciersvoorvoegsels - speciale voorvoegsels toegevoegd door browserontwikkelaars:

  • -webkit- - voorvoegsel voor Chrome, Safari, Android;
  • -moz- is een voorvoegsel voor Firefox;
  • -o- is het voorvoegsel voor Opera.

Achtergrondverloop vereist ook het gebruik van deze voorvoegsels als er behoefte is aan ondersteuning maximale hoeveelheid browsers. Pas hiervoor de code als volgt aan:

Achtergrondafbeelding: -webkit-lineair-gradiënt(links, violet, rood); achtergrondafbeelding: -moz-lineair-gradiënt (links, violet, rood); achtergrondafbeelding: -o-lineair verloop (links, violet, rood); achtergrondafbeelding: lineair verloop (naar links, violet, rood);

Als u een voorvoegsel wilt toevoegen, moet er een afzonderlijke advertentie worden gemaakt. Ook, zoals u wellicht heeft gemerkt, eigendommen met leveranciersvoorvoegsels Niet vereisen het gebruik van het voorvoegsel om de richting van de helling aan te geven.

Ondersteuning voor Internet Explorer

Helaas werkt de verloopachtergrond alleen in IE10+. Vorige versies begrijp het niet en zal het negeren. Om er tenminste voor te zorgen normale achtergrond in oudere browsers kunt u een zogenaamde. "stub": selecteer een geschikte tint en schrijf de eigenschap achtergrondkleur boven eigenschap met een verloop. Dus, oude browser zal een “back-up” achtergrondkleur toepassen en onbekende eigenschappen overslaan, terwijl dat bij meer het geval is moderne browser de verloopachtergrond overlapt en bedekt de effen achtergrond.

Als u een doorschijnende verloopset hebt (bijvoorbeeld door gebruik te maken van een kleur RGBA-formaat) en u wilt niet dat de fallback-achtergrond zichtbaar is, stelt u het verloop in met behulp van de shorthand background-eigenschap in plaats van background-image . Vervolgens wordt de achtergrondkleurwaarde overschreven naar transparant .

Verder in de tutorial: repeating-linear-gradient() - herhalende lineaire gradiënt.

  • Vertaling

Toen ik aan een vertaling over het singlediv.com-project werkte, bleek dat sommige CSS-tools een bredere toepassing hebben dan ik altijd dacht. Maar om deze toepassing te kunnen vinden, is het noodzakelijk om de kenmerken van het onroerend goed duidelijk te begrijpen. Een sprekend voorbeeld werd een lineair verloop, dat Lynn Fisher op meesterlijke wijze in haar werken gebruikte.

Wilt u een schattige verloopachtergrond op uw website maken? achtergrondafbeelding: lineair verloop (rood, blauw); klaar! Ja, het is een beetje saai. Dus als je iets meer wilt, raad ik deze pagina met css- en MDN-tips aan. Ben je hier nu? Laten we dan eens kijken naar enkele dingen over hoe lineaire gradiënten eigenlijk werken. Laten we eerst eens kijken naar de syntaxis die kan worden gebruikt in de lineaire gradiëntfunctie:

lineair verloop ([van<угла>| voor<стороны-или-угла>]?, );
De functie gebruikt een optioneel eerste argument dat de hoek van de helling specificeert, die kan worden uitgedrukt met behulp van een maateenheid (graad, straal, graden, omwenteling) of als trefwoord (zijde of hoek).

De functie accepteert vervolgens een lijst met kleuren.

Verloopveld

De verloopafbeelding heeft geen afmetingen, deze is oneindig in tegenstelling tot andere achtergrondafbeeldingen. De zichtbare afmetingen worden eraan gegeven door het gradiëntveld, d.w.z. het gebied waarin het wordt weergegeven.

Meestal wanneer u gebruikt achtergrond afbeelding als een lineaire gradiënt naar DOM-element, is dit gebied het grenskader van het element (dat is precies het gebied waarin de achtergrondkleur wordt weergegeven).

Als u echter ook de CSS-eigenschap achtergrondgrootte gebruikt en deze instelt op bijvoorbeeld 200px * 200px, dan heeft het verloopveld deze grootte en wordt het standaard in de linkerbovenhoek van het DOM-element geplaatst, tenzij je stelt ook de achtergrondpositie in.

Houd er bij het lezen van de volgende paragrafen rekening mee dat het verloopvak niet altijd even groot of hetzelfde formaat heeft als het DOM-element waarop u het verloop toepast.

Verlooplijn

In een verloopveld wordt de lijn die door het midden loopt en waarlangs de kleuren worden verdeeld de verlooplijn genoemd. Deze lijn kan eenvoudiger worden beschreven door de gradiënthoek uit te leggen, dus dit zal in de volgende sectie gedetailleerder worden besproken.

Gradiënthoek

Het is duidelijk dat de hoek van een lineaire gradiënt wordt gebruikt om te bepalen in welke richting de gradiënt zal gaan. Maar laten we dit aspect in meer detail bekijken.

Als C dat is middelpunt gradiëntvelden, dan is A de hoek tussen de verticale lijn die door C gaat en de gradiëntlijn, die ook door C gaat, en waarlangs de stopkleuren van het verloop worden verdeeld.

Deze hoek kan op twee manieren worden bepaald:

Met behulp van een van de trefwoorden: naar boven (omhoog), naar beneden (omlaag), naar links (links), naar rechts (rechts), naar rechtsboven (rechtsboven), naar linksboven (linksboven), naar rechtsonder ( rechtsonder), linksonder (linksonder);
Of door een hoek te definiëren met een getal en een maateenheid, bijvoorbeeld 45 graden (45 graden), 1 draai (1 draai);

Als de hoek niet is opgegeven, is deze standaard naar beneden gericht (dat wil zeggen: 180 graden of 0,5 draaiingen):


In deze en de volgende afbeeldingen wordt het verloopvak begrensd door een rechthoek en is de verlooplijn de dikke grijze lijn die door het midden loopt waarlangs de kleuren verschijnen.

In het bovenstaande voorbeeld is geen hoek gespecificeerd, dus het verloop van wit naar rood beweegt van boven naar beneden, wat overeenkomt met het trefwoord naar beneden, zoals hieronder weergegeven:

En, zoals te zien is in de volgende 2 afbeeldingen, komt de bovenkant overeen met een hoek van nul graden:

Een andere belangrijk punt Iets dat de moeite waard is om te overwegen bij het gebruik van hoekzoekwoorden: dat naar rechtsboven bijvoorbeeld (of een ander hoekzoekwoord) afhankelijk is van de afmetingen van het verloopvak.

De logica is dat als je een verloop van rood naar blauw naar de rechterbovenhoek van een element zou willen maken, het element blauw in de rechterbovenhoek zou hebben en de paarse kleur in het midden van het verloop zich zou vormen rond een lijn die loopt van de linkerbovenhoek naar de rechteronderhoek. Zo ziet het eruit op de afbeelding:

Naar rechtsboven betekent dus niet dat de verlooplijn door rechts gaat bovenste hoek, en dat betekent niet eens dat de gradiënthoek 45 graden is!

Laten we eens kijken hoe de verlooplijn beweegt als de hoek verandert met de volgende animatie:


In deze animatie kantelt de hoek van 0 tot 360 graden in stappen van 10 graden. Door de lage resolutie van de GIF kun je zelfs beter zien hoe verschillende kleuren verschijnen als "lijnen" die altijd loodrecht op de verlooplijn staan.

Laten we onthouden wat we weten over gradiënthoeken:

De hoek wordt gemeten tussen de gradiëntlijn en de lijn die het midden van het gradiëntveld verlaat en naar boven beweegt.
Daarom betekent 0 graden omhoog.
Standaard waarde hoek, indien niet gespecificeerd, is naar beneden, wat gelijk is aan 180 graden.
De hoeksleutelwoorden zijn afhankelijk van de grootte van het verloopveld.

Lengte van de verlooplijn

Voordat we kunnen zien hoe kleuren langs een verlooplijn worden verdeeld, moeten we één ding uitleggen. Het is je misschien in de vorige animatie opgevallen dat de kleuren soms buiten het verloopvak zijn geplaatst, wat er op het eerste gezicht misschien een beetje vreemd uitziet, maar het is logisch als je de reden kent.

Kijk naar het voorbeeld:

We willen een rood naar blauw verloop in een hoek van 45 graden, en vanwege de beeldverhouding van het verloopveld kan de verlooplijn niet door de rechterbovenhoek gaan.

Maar de browser wil (dat wil zeggen, de specificaties dwingen dit af) om de rechterbovenhoek puur blauw te maken. Als we de gradiëntlijn laten beginnen en eindigen aan de randen van het veld, dan Blauwe kleur nam het grootste deel van het veld in beslag, en de gradiënt zou zich niet zo ver hebben verspreid.

Om dit te kunnen doen, moet de verlooplijn soms buiten het verloopvak uitsteken. Tegelijkertijd is het vrij eenvoudig om erachter te komen waar het begint en waar het eindigt. Teken eenvoudig een lijn die door de dichtstbijzijnde hoek gaat en loodrecht op de verlooplijn staat. Het punt waar deze lijn de gradiëntlijn snijdt, is de start-/eindlocatie.

Als u de breedte van het verloopveld W, de hoogte H en de hoek van het verloop specificeert, is de lengte van de verlooplijn feitelijk:

Abs(W * sin(A)) + abs(H * cos(A))

Kleuren

De kleuren vertegenwoordigen een door komma's gescheiden lijst waarin elk element als volgt kan worden gedefinieerd:
<цвет> [<процентное соотношение> | <длина>]?

Daarom is het niet nodig om op te geven waar de kleuren langs de verlooplijn moeten worden geplaatst. Bijvoorbeeld:


Geen van de kleuren heeft een eigen positie, dus de browser heeft zelf hun positie bepaald.

Eigenlijk eenvoudig voorbeeld met slechts 2 kleuren wordt kleur 1 op 0% geplaatst (aan het begin van de verlooplijn) en kleur 2 op 100% (aan het einde van de verlooplijn).

Als u vervolgens een derde kleur toevoegt, heeft u nog steeds kleur 1 op 0%, kleur 2 op 50% en kleur 3 op 100%, enzovoort.

In het bovenstaande voorbeeld werden 5 stopkleuren gegeven en de browser berekende hun relatieve positie als 0%, 25%, 50%, 75%, 100%. De reden hiervoor is de uniforme verdeling langs het gradiëntveld.

De kleurpositie kan worden uitgedrukt als een percentage (ten opzichte van de grootte van de verlooplijn) of als een CSS-lengte (waarbij elke CSS-eenheid geldig is).

Hier is een voorbeeld:

Zoals u kunt zien heeft elk van de 5 stopkleuren een eigen positie, aangegeven in pixels. Deze posities worden berekend vanaf het begin van de gradiëntlijn.

Met behulp van dergelijke posities kun je er meerdere krijgen interessante effecten. Je kunt bijvoorbeeld een verloop gebruiken om niet het verloop zelf te tekenen, maar een paar kleuren te laten:

Er zijn 7 kleuren in de afbeelding hierboven en deze zijn zo ingesteld dat de volgende kleur op precies dezelfde positie begint als de vorige, wat betekent dat de browser de ruimte tussen de twee stopkleuren niet hoeft te vullen met een verloop.

Natuurlijk, dat is allemaal schattig en grappig, maar wat gebeurt er als je gepositioneerde kleuren mengt met niet-gepositioneerde kleuren? Vervolgens dwingt u de browser harder te werken en vraagt ​​u hem automatisch kleuren te distribueren waarvoor u geen positie hebt opgegeven:

In dit eenvoudige voorbeeld heeft de tweede kleur (oranje) geen positie, dus de browser bepaalt deze en vindt een geschikte plaats tussen de eerder opgegeven kleur en de volgende kleur. Hier is het heel eenvoudig, aangezien de directe buren van de tweede kleur hun eigen positie hebben, maar als slechts enkele kleuren posities hebben, of als de vorige of volgende kleuren geen positie hebben, wordt het ingewikkelder.

Laten we een paar voorbeelden bekijken:

In het bovenstaande voorbeeld is alleen de derde kleur (geel) op 30% gepositioneerd. Om alle andere kleuren beter te verdelen, wordt de eerste op 0% geplaatst, de laatste op 100% en worden de overige kleuren daartussen verdeeld (zodat oranje direct tussen 0% en 30% terechtkomt, en rood tussen 30% en 30%). 100%).

In het bovenstaande voorbeeld zijn de eerste en de laatste kleur gepositioneerd, zodat de rest gelijkmatig over deze twee wordt verdeeld.

Het zou natuurlijk te simpel zijn als 0% en 100% rigide grenzen zouden zijn die niet overschreden kunnen worden. Maar zoals u in het vorige voorbeeld kunt zien, bevindt de laatste kleur zich op 120% en daarom moeten alle andere kleuren dienovereenkomstig worden verdeeld ten opzichte van deze positie (het standaard startpunt blijft in dit geval 0%).

En als u uw browser nog harder wilt laten werken, waarom specificeert u dan niet de volgorde van de posities?

In feite zouden de kleuren in orde moeten zijn, maar niets belet je dit te doen, en er zal niets vreselijks gebeuren als je dat niet doet. Uw browser zal alles eenvoudig repareren, zoals hieronder weergegeven:

Laten we beginnen met de eerste kleur (rood), gelegen op 30%. Dan bevindt de tweede kleur zich op 10%, wat al onjuist is, aangezien kleuren, zoals hierboven vermeld, in oplopende volgorde moeten worden aangegeven. Hier corrigeert de browser dus de positie van de tweede kleur en stelt deze in op dezelfde positie als de vorige kleur (30%). Vervolgens komt de derde kleur (geel) op 60%, wat correct is, maar deze wordt gevolgd door een vierde (blauw) op 40%. Opnieuw wordt de positie aangepast en op dezelfde waarde gezet als de eerder gepositioneerde kleur.

Uiteindelijk wordt, zoals in het bovenstaande voorbeeld te zien is, de laatste kleur (blauw) verkeerd gepositioneerd en maakt de browser zijn positie hetzelfde als de vorige kleur, wat in in dit geval is noch zijn directe buur (geel), noch de buurman van de kleur die ervoor komt (oranje), dus hij moet terugvallen op de eerste kleur (rood). Zo worden alle kleuren tussen rood en blauw op 30% gezet en zijn dus onzichtbaar.

Hulpmiddelen

Alle schermafbeeldingen in dit artikel zijn afkomstig van een eenvoudig hulpmiddel dat ik op codepen heb gemaakt en waarmee u een lineaire gradiëntfunctie kunt invoeren en het verloopvak, de gradiëntlijn, de hoek en kleurinformatie bovenop het element kunt zien.

De tool heeft allerlei bugs en beperkingen (zie javascript-opmerkingen), dus verwacht er niet veel van.

Tags:

  • CSS
  • lineair verloop
Tags toevoegen