Homepage » Coding » Come creare un disegno di bordo ritagliato con CSS

    Come creare un disegno di bordo ritagliato con CSS

    Con un disegno del bordo ritagliato possiamo mostrare agli utenti ciò che può essere trovato sotto l'area del bordo di un elemento HTML. Questo compito è in genere risolto da impilare due o più elementi di blocco (nella maggior parte dei casi div) di diverse dimensioni uno sopra l'altro. Per prima cosa sembra una soluzione semplice, ma diventa più frustrante quando si desidera riutilizzare il layout più volte, spostarsi tra gli elementi, ottimizzare il design per dispositivi mobili o mantenere il codice.

    In questo post, vi mostrerò un'elegante soluzione CSS-only che utilizza solo un elemento HTML per ottenere lo stesso effetto. Questa tecnica è ottima anche per l'accessibilità, in quanto tale carica l'immagine di sfondo nel CSS, separato dall'HTML.

    Alla fine di questo post, saprai come mostra un'immagine di sfondo nell'area del bordo per creare il disegno del bordo ritagliato puoi vedere sotto. Mostrerò anche come è possibile rendere il design reattivo usando le unità viewport.

    Codice iniziale

    L'unico requisito nel fronte HTML è a elemento di blocco:

     

    Avremo bisogno di riutilizzo le dimensioni (larghezza e altezza) e i valori della larghezza del bordo del div, quindi li sto presentando come variabili CSS. La variabile --w denota il larghezza del .CB elemento di blocco, --h indica il suo altezza, --B va per il larghezza del bordo, e --b2 per la larghezza del bordo moltiplicata per 2. Vedremo in seguito l'uso dell'ultima variabile.

    Sto dimensionando il

    relativamente alla larghezza del viewport, da qui l'uso del vw unità (puoi usare unità fisse se vuoi).

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2);  
    Spiegazione rapida - vw e vh unità

    L'unità vw rappresenta il 1/100esimo della larghezza della finestra. Per esempio, 50vw è 50 parti di una larghezza di finestra affettato verticalmente in 100 parti uguali, mentre 50vh è 50 parti di altezza di una finestra affettato orizzontalmente in 100 parti uguali.

    Miglioriamo il codice precedente aggiungendo uno sfondo e impostando il bordo, l'altezza e la larghezza usando le nostre variabili CSS predefinite.

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); background: url (bg.jpg); border: var (- b) solido trasparente; altezza: var (- h); larghezza: var (- w);  

    Ecco come dovrebbe apparire la demo in questo momento:

    Ridimensiona l'immagine di sfondo

    Abbiamo bisogno dell'immagine di sfondo per copre l'intera area del

    compresa la zona di confine, quindi l'immagine di sfondo deve essere dimensionato di conseguenza.

    Se vuoi dare all'immagine di sfondo una dimensione fissa, assicurati solo che la dimensione che stai dando gli consenta di coprire l'area del bordo del

    anche. Per quanto riguarda il codice utilizzato nel post finora, ecco il sfondo valore che sto dando:

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); background: url (bg.jpg) center / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); border: var (- b) solido trasparente; altezza: var (- h); larghezza: var (- w);  

    Il larghezza dell'immagine di sfondo [calc (var (- w) + var (- b2))] è la somma di larghezza del div [var (- w)] e il larghezza dei bordi sinistro e destro [var (- b2)].

    Allo stesso modo, il altezza dell'immagine di sfondo [calc (var (- h) + var (- b2))] è la somma di altezza del div [var (- h)] e il larghezza dei bordi superiore e inferiore [var (- b2)].

    In questo modo, abbiamo ridimensionato l'immagine di sfondo in un'area uguale alla dimensione di div (compresa l'area di confine).

    Il centro parola chiave allinea l'immagine di sfondo al centro del div.

    Nota: Se stai aggiungendo il padding al div, ricordati di includere l'area di imbottitura anche alla dimensione dello sfondo, come l'area del bordo.

    Questo è ciò che abbiamo adesso:

    Coprire l'area esclusiva del confine

    Ora che abbiamo coperto l'area inclusiva di confine con l'immagine di sfondo, tutto ciò che rimane è farlo coprire l'area centrale all'interno del confine (area esclusa il bordo) con un colore solido, per il quale raggiungiamo a box-ombra inserire.

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); background: url (bg.jpg) center / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); border: var (- b) solido trasparente; box-shadow: inset var (- w) 0 0 rgba (0,120,237, .5); altezza: var (- h); larghezza: var (- w);  

    L'ombra orizzontale con valore var (- w) copre l'intera larghezza del div. L'uso di RGBA la funzione colore consente un po 'di trasparenza da aggiungere nel mix, tuttavia è anche possibile utilizzare un colore opaco se si desidera coprire completamente l'area centrale.

    Aggiungi un bordo in più con box-ombra

    Nella demo Codepen, potresti vedere un bordo bianco attorno all'immagine. C'è un famoso trucco di usando le ombre delle caselle per creare più bordi-possiamo usare la stessa tecnica per aggiungere uno o più bordi colorati solidi al nostro design.

    L'aggiornato box-ombra il valore è:

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); background: url (bg.jpg) center / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); border: var (- b) solido trasparente; box-shadow: inset var (- w) 0 0 rgba (0,120,237, .5), 0 0 0 calc (var (- b) / 2) bianco; altezza: var (- h); larghezza: var (- w);  

    Il calc (var (- b) / 2) la funzione crea un'ombra del metà della larghezza del bordo.

    Opzionale: layout ed estetica separati

    Nella mia ultima demo di Codepen, ho inserito il codice per l'immagine di sfondo e il colore dell'ombra della scatola in una classe separata. Questo è opzionale, ma può essere estremamente utile se vuoi riutilizzare il layout del disegno del bordo ritagliato in più elementi, e aggiungere l'estetica (immagine di sfondo + colore) per ogni elemento in modo indipendente.

    Ho aggiunto una classe chiamata .Poster1 al

    per raggiungere questo obiettivo.

     .poster1 --tbgc: rgba (0,120,237, .5); background-image: url ("http://bit.ly/2eQBij2");  

    Da sfondo è una proprietà stenografica, le sue proprietà di longhand possono essere ignorate / impostate individualmente. Quindi, possiamo impostare immagine di sfondo nel .Poster1, e rimuovere il valore dell'URL dal sfondo proprietà in .CB.

    Per impostare il valore di box-ombra, possiamo usare un'altra variabile CSS. Il --TBGC variabile detiene il valore del colore vogliamo dare al box-shadow (lightblue nella demo), quindi tra le regole di stile per .CB noi sostituire il valore del colore del box-ombra proprietà con var (- TBGC).

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); background: center / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); border: var (- b) solido trasparente; box-shadow: inset var (- w) 0 0 var (- tbgc), 0 0 0 calc (var (- b) / 2) bianco; altezza: var (- h); larghezza: var (- w);  

    Codice per la modalità verticale

    Poiché le dimensioni sono tutte nell'unità vw, lo farà sembra troppo piccolo quando visualizzi il disegno in modalità verticale (larghezza ridotta rispetto all'altezza), in cui tutti i dispositivi mobili sono inseriti per impostazione predefinita. Per risolvere questo problema, interruttore vw con vh, e ridimensiona il design come meglio credi per le modalità ritratto.

     @media (orientation: portrait) .cb --w: 35vh; --h: 40vh; --b: 4vh;  

    Nota: Non dimenticare di aggiungi il meta tag viewport alla tua pagina HTML se hai deciso di ottimizzarlo per la visualizzazione mobile.

    © Savtec
    Informazioni utili e suggerimenti per lo sviluppo web. Programmazione, web design, CSS, HTML, JAVASCRIPT. Configurare e reinstallare WINDOWS. Creazione di siti e applicazioni da zero.