no.hideout-lastation.com
Paradis For Designere Og Utviklere


Slik lager du en bryter-brukergrensesnitt med CSS-mask

I bildebehandling er maskering en teknikk som lar deg skjule et bilde med en annen. En maske brukes til å lage en del av et bilde gjennom . Du kan utføre maskering ved hjelp av CSS ved hjelp av maskeringsegenskaper.

I dagens innlegg vil vi lage et maskert bilde ved å bruke to PNG-bilder og CSS-maskeringsteknikker, og la brukerne håndtere de to tilstandene i bildet ( dag og natt ) ved hjelp av en bryter-brukergrensesnitt.

På grunn av noen problemer med nettleserkompatibilitet - ikke alle maskeringsegenskaper støttes i alle nettlesere (fra juni 2016). Jeg vil vise to teknikker for å legge til masker, en for webkitbaserte nettlesere og en til Firefox. De to første trinnene i denne tre-trinns opplæringen er de samme for hver nettleser, men det vil være en forskjell i det tredje trinnet.

Trinn 1. Opprett en grunnleggende bryter

Siden en typisk bryter har to tilstander med bare én aktivert av gangen, kan du bruke en radioknappgruppe på to å opprette arbeidskomponentene til bryteren. Plasser hver radioknapp på venstre og høyre ende av foreldreelementet.

Radioknappgrupper opprettes ved å gi hver radioknapp samme navnattributt. I en radioknappgruppe kan bare én radioknapp kontrolleres av gangen.

Vi starter med følgende HTML og CSS:

HTML

CSS

I CSS nedenfor brukte jeg absolutt posisjonering for å plassere radioknappene på skjermen nøyaktig hvor jeg vil.

 #outerWrapper {width: 450px; høyde: 90px; polstring: 10px; margin: 100px auto 0 auto; border-radius: 55px; boks-skygge: 0 0 10px 6px #EAEBED; bakgrunn: #fff; } #innerWrapper {høyde: 100%; border-radius: 45 px; flow: hidden; stilling: i forhold; } .radio {bredde: 90px; høyde: 100%; stilling: absolutt; margin: 0; opasitet: 0; } #rightRadio {right: 0; } .radio: ikke (: merket) {markør: pointer; } 

Jeg la .radio opacity:0 regel til .radio klassen for å skjule radioknappene . Den siste regelen i kodeblokken under, cursor: pointer; viser pekefeltet for den ukontrollerte alternativknappen, slik at brukerne vet hvilken knapp som skal klikkes for å veksle bryterstaten.

Trinn 2. Legg skinn på bryteren

I dette trinnet legger vi til to

koder for de to skinnene under radioknappene i vår HTML-fil, og et bakgrunnsbilde til hver hud i vårt CSS.

Jeg bruker "Day" og "Night" som de to tilstandene til bryteren, inspirert av et dribbble-skudd av Minh Killy Le.

HTML

CSS

 #daySkin {bakgrunnsbilde: url ('day.png'); } #nightSkin {bakgrunnsbilde: url ('night.png'); } .skin {bredde: 100%; høyde: 100%; peker-hendelser: ingen; posisjon: absolutt; margin: 0; } 

pointer-events: none; regelen er lagt til skinnene slik at klikkhendelsene på bryteren kan passere gjennom dem, og nå radioknappene .

Med CSS-egenskapen for peker-hendelser kan du angi omstendighetene under hvilke et grafisk element kan målrettes av museventyr .

Som et alternativ for koden ovenfor, to koder (med kildebilder) inne i

Etiketter kan også fungere. De vil være skinnene for de to bryterstatene .

Trinn 3a. Legg til maske (Webkit-versjon)

For Chrome og andre Webkit-baserte nettlesere, vil jeg bruke CSS-egenskapen for mask-image, som - som ved skrivingen av dette innlegget - bare fungerer med -webkit prefiks i Webkit-nettlesere. Med mask-image kan du spesifisere bildet som skal brukes som maske .

Generelt er det to typer maskering: luminans og alfa .

  • Ved luminansmaskering skjuler den mørke delen av maskebildet bildet det maskerer: jo mørkere en del er i maskebildet, jo mer skjult er delen i bildet maskert.
  • I alfa-maskeringen skjuler den gjennomsiktige delen av maskebildet bildet som det maskerer: jo mer gjennomsiktig en del er i maskebildet, jo mer skjult den delen er i bildet som maskeres.

I Chrome (fra versjon 51.0.2704.103, Win10) virker bare alpha for øyeblikket å fungere.

I CSS er alpha og luminance verdiene for mask-type egenskapen.

Her er CSS som legger til en maske til bakgrunnsbilder i Webkit-nettlesere:

CSS

 #nightSkin {bakgrunnsbilde: url ('night.png'); mask-type: a; / * gjennomsiktig sirkel med gjenværende del ugjennomsiktig * / -webkit-mask-bilde: radial-gradient (sirkel ved 45px 45px, rgba (0, 0, 0, 0) 45px, rgba (0, 0, 0, 1) 45px) ; } / * Når dagens hud velges * / #leftRadio: sjekket ~ # nightSkin {mask-type: alpha; / * ugjennomsiktig sirkel med gjenværende del gjennomsiktig * / -webkit-mask-bilde: radialgradient (sirkel ved 405px 45px, rgba (0, 0, 0, 1) 45px, rgba (0, 0, 0, 0) 45px) ; } 

Jeg brukte egenskapen -webkit-mask-image å lage det første maskebildet. Dens verdi bruker den radial-gradient() CSS-funksjonen som brukes til å lage et bilde fra en forhåndsdefinert form, en radial gradient og midten av gradienten.

For nattens hud skapte jeg en gjennomsiktig sirkel, og jeg gjorde den gjenværende delen av beholderen ugjennomsiktig. For dagens hud gjorde jeg det motsatte: Skapte en ugjennomsiktig sirkel med radial-gradient() -funksjonen, og gjorde den gjenværende delen gjennomsiktig.

Selv om det ikke er støttet ennå i Webkit-nettlesere, har jeg lagt til mask-type egenskapen til CSS for fremtidig referanse.

Som du kan se over, er grensen til sirkelen ikke veldig jevn. For å skjule de grove kanter, legg til en

etter skinnene i form av en sirkel (samme størrelse som masksirkelen) med en bokseskygge. Skyggen vil gjemme sirkelmaskenes grove kanter.

HTML

CSS

 #switchBtnOutline {bredde: 90px; høyde: 100%; border-radius: 45 px; boks-skygge: 0 0 2px 2px gråinnsats, 0 0 10px grå; Pekeren-hendelser: ingen; stilling: absolutt; margin: 0; } / * Plasser #switchBtnOutline i høyre ende når dagens hud er valgt * / #leftRadio: sjekket ~ # switchBtnOutline {høyre: 0; } 
Trinn 3b. Legg til maske (Firefox-versjon)

Maskinbildet CSS-egenskapen er faktisk en langside eiendom, og den er en del av shorthand-eiendomsmasken som lar deg spesifisere bildet som skal brukes som maske også. Mens mask-image ikke støttes i Firefox, er mask .

Selv om mask skal akseptere et bilde som er opprettet med CSS-funksjonen for radial-gradient(), som en verdi, har det ikke vært støtte for det i Firefox ennå, akkurat som mask-image .

Så, i stedet for et radial-gradient() bilde, la oss bruke et SVG-bilde som maskebildet med maskintypens luminance .

SVG bildet ovenfor ser ut som en kombinasjon av et hvitt rektangel og en svart sirkel . Legg til dette, og en annen med et svart rektangel og en hvit sirkel som masker til HTML-koden vi brukte i Webkit-versjonen.

HTML

Erstatt (eller kombinere med) CSS-koden for #nightSkin vi brukte i Webkit-versjonen med følgende kode. Og du er ferdig.

Vi har nå to forskjellige maskebilder (CSS gradient & SVG), to forskjellige masketyper (Alpha & Luminance), og både Webkit og Firefox-støtte.

CSS

 #nightSkin {bakgrunnsbilde: url ('night.png'); maske type: luminans; maske: url (#leftSwitchMask); } #leftRadio: sjekket ~ # nightSkin {mask-type: luminans; maske: url (#rightSwitchMask); } 

Sjekk ut demoen

  • Demo
  • Last ned kilde

PHPMailer sårbar for eksterne utgaver på grunn av kritisk feil

PHPMailer sårbar for eksterne utgaver på grunn av kritisk feil

PHPMailer, en av de mest populære åpen kildekode-PHP-bibliotekene som er i bruk i dag, har gått inn i problemer med sin egen som polske sikkerhetsforsker Dawid Golunski of Legal Hackers har oppdaget et kritisk sårbarhet som gjør at den er mottakelig for eksterne operasjoner .Spesifikasjoner av sårbarheten i spørsmålet (CVE-2016-10033) er ennå ikke avslørt, da Golunski holder tilbake tekniske detaljer om feilen på grunn av den utbredte PHPMailer.Golunski a

(Tekniske og design tips)

9 Crazy-Cool Leker du kan styre med smarttelefonen

9 Crazy-Cool Leker du kan styre med smarttelefonen

Hvem sier at leker er laget for barn bare? Selv om vi kanskje har vokst opp lekene vi vokste opp med, kan noen av lekene du finner i markedet i disse dager virkelig gi deg lyst til å la ut ditt indre barn. Så, for å heck med alder anbefalinger, la oss sjekke ut noen av de nye, innovative lekene som du kan spille med din iOS eller Android-enhet.I

(Tekniske og design tips)