Hoe een mooi pictogram te maken met CSS3

Vandaag zou ik je een leuk trucje willen laten zien. We zullen een documentpictogram maken met pure CSS3. Beter nog, dit effect vereist slechts één HTML-element.


Het speelplan

  1. Maak een vierkante doos
  2. Rond de randen
  3. Gebruik pseudo-elementen om een ​​gekrulde hoek te maken
  4. Creëer de illusie van tekst met een gestreepte overgang

Laten we beginnen!


Stap 1: Maak een box

We beginnen met het toevoegen van ons unieke HTML-element: een ankertag. Dit is logisch, omdat de meeste pictogrammen ook als links fungeren.

 Documentpictogram

Laten we de enigszins arbitraire dimensies voor ons pictogram instellen. We doen 40x56px - gewoon voor deze demo. In een toepassing in de echte wereld zul je dit waarschijnlijk willen verminderen! Houd er ook rekening mee dat we moeten toevoegen weergeven: blokkeren, omdat alle ankertags standaard inline zijn.

 .docIcon background: #eee; achtergrond: lineair verloop (boven, #ddd 0, #eee 15%, #fff 40%, #fff 70%, #eee 100%); border: 1px solid #ccc; display: block; width: 40px; hoogte: 56px; position: relative; marge: 42px auto; 

Merk op dat we hierboven een positioneringscontext instellen om binnenkort met pseudo-elementen te werken. U zult merken dat ik alleen de officiële CSS3-syntaxis voor het verloop heb gebruikt. U zult waarschijnlijk ook de verschillende voorvoegsels van de browser willen gebruiken. Om de zaken te versnellen, kunt u Prefixr.com of de API in uw favoriete codebewerker gebruiken. Kopieer eenvoudig het bovenstaande codefragment, plak het in het tekstgebied Prefixr en klik op Enter. Het spuugt dan alle verschillende prefix-eigenschappen uit, zoals:

 .docIcon background: #eee; achtergrond: -webkit-lineair verloop (bovenaan, #ddd 0, #eee 15%, #fff 40%, #fff 70%, #eee 100%); achtergrond: -moz-linear-gradient (boven, #ddd 0, #eee 15%, #fff 40%, #fff 70%, #eee 100%); achtergrond: -o-lineaire gradiënt (boven, #ddd 0, #eee 15%, #fff 40%, #fff 70%, #eee 100%); achtergrond: -ms-lineair verloop (boven, #ddd 0, #eee 15%, #fff 40%, #fff 70%, #eee 100%); achtergrond: lineair verloop (boven, #ddd 0, #eee 15%, #fff 40%, #fff 70%, #eee 100%); border: 1px solid #ccc; weergave: blok; breedte: 40px; hoogte: 56px; positie: relatief; marge: 42px auto; 

Laten we vervolgens wat glans toevoegen met behulp van CSS-vakschaduwen. Ik heb ook het tekst streepje eigenschap om de tekst te verbergen.

 .docIcon ? -webkit-box-shadow: inzet rgba (255,255,255,0,8) 0 1px 1px; -moz-box-shadow: inzet rgba (255,255,255,0,8) 0 1px 1px; box-shadow: inzet rgba (255,255,255,0,8) 0 1px 1px; text-indent: -9999em; 

Tot zover hebben we:


Stap 2: Afgeronde hoeken

Vervolgens moeten we een afgerond hoekeffect maken. Voeg het volgende toe:

 .docIcon ? -webkit-border-radius: 3px 15px 3px 3px; -moz-border-radius: 3px 15px 3px 3px; grensradius: 3px 15px 3px 3px; 

Door vier waarden door te geven, kunnen we de radiostralen bovenaan, rechts, onder en links dienovereenkomstig specificeren. Dit is vergelijkbaar met de manier waarop u marges of opvulling zou toepassen.

Die ons geeft?


Stap 3: Eén gekrulde hoek

Om de illusie van een gekrulde hoek te creëren, gebruiken we gegenereerde inhoud of pseudo-elementen.

Voeg eerst inhoud toe :voor ons pictogram. In dit geval hebben we geen specifieke tekst nodig. In plaats daarvan moeten we een vak van 15 px maken en een achtergrondverloop toepassen.

 .docIcon: before content: ""; weergave: blok; positie: absoluut; boven: 0; rechts: 0; breedte: 15px; hoogte: 15px; achtergrond: #ccc; achtergrond: -webkit-lineair verloop (45deg, #fff 0, #eee 50%, #ccc 100%); achtergrond: -moz-linear-gradient (45deg, #fff 0, #eee 50%, #ccc 100%); achtergrond: -o-lineaire gradiënt (45deg, #fff 0, #eee 50%, #ccc 100%); achtergrond: -ms-lineaire gradiënt (45deg, #fff 0, #eee 50%, #ccc 100%); achtergrond: lineair verloop (45deg, #fff 0, #eee 50%, #ccc 100%); -webkit-vak-schaduw: rgba (0,0,0,0.05) -1px 1px 1px, inzet wit 0 0 1px; -moz-box-shadow: rgba (0,0,0,0.05) -1px 1px 1px, inzet wit 0 0 1px; box-shadow: rgba (0,0,0,0.05) -1px 1px 1px, inzet wit 0 0 1px; border-bottom: 1px solid #ccc; border-left: 1px solid #ccc; 

Om ervoor te zorgen dat onze gegenereerde inhoud ook de rechtervrije afgeronde rand ontvangt, moeten we opnieuw dezelfde radii toepassen om deze uit te lijnen.

? -webkit-border-radius: 3px 15px 3px 3px; -moz-border-radius: 3px 15px 3px 3px; grensradius: 3px 15px 3px 3px;

Tada!


Stap 4: Lijnen toevoegen

Vervolgens gaan we de gebruiken :na psuedo-element om enkele stippellijnen toe te voegen om uitgezoomde tekst weer te geven. Pas een breedte van 60% toe, en a -Marge en margin-right van 20% (wat gelijk staat aan 100%). Vervolgens geven we een hoogte op en plaatsen we deze op 0 0.

 .docIcon: after content: ""; display: block; positie: absoluut; left: 0; top: 0; width: 60%; marge: 22px 20% 0; hoogte: 15px; 

Het maken van een reeks regels is een beetje lastig. Als we slim zijn, kunnen we CSS-gradiënten gebruiken om dit effect te bereiken. Deel eerst de totale hoogte door vijf en stel elk blok in met een effen vulling. Raadpleeg de afbeelding hieronder voor een duidelijker voorbeeld van dit denken. Handig, toch? Het is een leuke techniek om in je gereedschapsriem te hebben.

Meerdere regels (strepen) met CSS3 Gradienst

 .docIcon: after ? achtergrond: #ccc; achtergrond: -webkit-lineaire gradiënt (bovenkant, #ccc 0, #ccc 20%, #fff 20%, #fff 40%, #ccc 40%, #ccc 60%, #fff 60%, #fff 80%, #ccc 80%, #ccc 100%); achtergrond: -moz-lineaire gradiënt (bovenkant, #ccc 0, #ccc 20%, #fff 20%, #fff 40%, #ccc 40%, #ccc 60%, #fff 60%, #fff 80%, #ccc 80%, #ccc 100%); achtergrond: -o-lineaire gradiënt (bovenkant, #ccc 0, #ccc 20%, #fff 20%, #fff 40%, #ccc 40%, #ccc 60%, #fff 60%, #fff 80%, #ccc 80%, #ccc 100%); achtergrond: -ms-lineaire gradiënt (bovenkant, #ccc 0, #ccc 20%, #fff 20%, #fff 40%, #ccc 40%, #ccc 60%, #fff 60%, #fff 80%, #ccc 80%, #ccc 100%); achtergrond: lineair verloop (bovenkant, #ccc 0, #ccc 20%, #fff 20%, #fff 40%, #ccc 40%, #ccc 60%, #fff 60%, #fff 80%, #ccc 80 %, #ccc 100%); 

We zijn klaar!

Live demonstratie

Vond je het leuk? Andere soortgelijke trucs hebben? Zo ja, link naar hen in de opmerkingen hieronder.