[CSS] Espandere trasparenza all'intero div

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3040
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 24.04 LTS Noble Numbat
Sesso: Maschile
Località: Roma, Italia

[CSS] Espandere trasparenza all'intero div

Messaggio da DoctorStrange »

Ciao a tutti,
Premetto che sono un completo principiante nello sviluppo di fogli di stile, con CSS. Al momento ho un server web che uso quasi esclusivamente per fare questo genere di prove, o poco piu.
Questo è il fantastico risultato al quale sono giunto ora. (Allegato al messaggio) :D
Questo è il CSS:

Codice: Seleziona tutto

     1	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2	<html xmlns="http://www.w3.org/1999/xhtml">
     3	  <head>
     4	    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     5	    <title>Apache2 Ubuntu Default Page: It works</title>
     6	    <style type="text/css" media="screen">
     7	
     8	  .flex-container-leonardo {
     9		display: flex;
    10		flex-direction: row;
    11		flex-wrap: unwrap;
    12		justify-content: space-around;
    13		align-items: center;
    14		align-content: center;
    15		height: 10em;
    16		padding: 1em;
    17		border: 2em solid blue;
    18		margin: 1em;
    19	  }
    20	  .inner-box-1 {
    21	  	position: relative;
    22		padding: 1px;
    23		border: 4px solid #d60927;
    24		width: 10em;
    25		height: 8em;
    26		border-radius: 30%;
    27		text-align: center;
    28		background-image: conic-gradient(green, yellow, red, blue, orange);
    29	
    30	  }
    31	
    32	  .green-box-1 {
    33		position: relative;
    34		width: 7em;
    35		height: 5em;
    36		margin-left: 1.5em;
    37		margin-top: 0.5em;
    38		background-color: green;   
    39	/*	background-color: linear-gradient(rgba(0, 1, 0, 1), rgba(1, 0, 0, 1));   */
    40		border-radius: 30%;
    41		text-align: center;
    42		background-image: radial-gradient(rgba(0, 1, 0, 1), rgba(1, 0, 1, 0), transparent 7em, purple 0);
    43	  }
    44	
    45	  .inner-box-2 {
    46		display: grid;
    47		border: 4px solid red;
    48		width: 10em;
    49		height: 8em;
    50		border-radius: 30%;
    51	  }
    52	
    53	  </style>
    54	  </head>
    55	  <body>
    56	
    57	  <div>
    58		Header
    59	  </div>
    60	
    61	  <div class="flex-container-leonardo"> 
    62		<div class="inner-box-1">1
    63			<div class="green-box-1">Green box</div> 
    64		</div>
    65		<div>2 Il percorso del CSS è:<br><br>/var/www/html</div>
    66		<div class="inner-box-2">3</div>
    67	  </div>
    68	
    69	  <div>
    70		  Footer
    71	  </div>
    72	
    73	  </body>
    74	</html>
La mia domanda è questa: concentrandomi sulla sola sezione di sinistra, ho un "Green box", all'interno del quale mi compare una "macchia" nera.
Questa è il risultato dell'istruzione che compare alla riga 42.
Ho provato ad inserire un gradiente, ed impostarlo in maniera che fosse completamente trasparente.
La mia idea era di fare in modo che l'intero box verde scomparisse, impostando questa trasparenza, ma non so come farlo.
Una sorta di "cut-out". Nelle mie intenzioni, vorrei creare una sagoma qualunque, e questa dovrebbe essere il green box, nel mio caso attuale, questo è il motivo per il quale su green box imposto delle misure assolute, e poi impostarlo con la massima trasparenza, in modo da "ritagliare" il bordo colorato esterno.
Non funziona.
La trasparenza è parziale e, in particolare, sempre alla riga 42, questa trasparenza corrisponde alla dimensione "7em" dell'opzione "transparent 7em".

Quindi la domanda: come faccio a rendere l'intero box verde trasparente, applicando la trasparenza a tutto l'elemento verde, evitando artifici del tipo aumentare a dismisura la dimensione della trasparenza della background image finche questa non superi la dimensione del box?
Detta in altre parole, come si fa a rendere il box verde, globalmente, trasparente, ma lasciando inalterate le dimensioni specificate in modo assoluto(width, height, margin...)?

So di essere stato un po contorto. Mi dispiace. Spero comunque di essermi fatto capire.

Grazie
Allegati
CSS_layout.png
nicNiz
Prode Principiante
Messaggi: 82
Iscrizione: domenica 4 ottobre 2020, 20:31

Re: [CSS] Espandere trasparenza all'intero div

Messaggio da nicNiz »

Non so se il css sia sufficiente per operazioni troppo complesse. Il javascript non lo vuoi usare?
Il mio Linguaggio di scripting dichiarativo
https://dunocode.altervista.org
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3040
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 24.04 LTS Noble Numbat
Sesso: Maschile
Località: Roma, Italia

Re: [CSS] Espandere trasparenza all'intero div

Messaggio da DoctorStrange »

Ti ringrazio per l'interesse, ma CSS è ben in grado di fare cose piu complessa di questa, anche perchè lo scopo che ho raggiunto è parziale.
Per il momento continuerò a documentarmi su internet, ma confido che nella community qualcuno abbia qualche competenza specifica su CSS.

Grazie
Avatar utente
OMBRA_Linux
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3425
Iscrizione: mercoledì 18 febbraio 2015, 14:24
Desktop: HP / Lenovo / Samsung
Distribuzione: Android / Linux / Windows10/11
Sesso: Maschile
Località: Napoli

Re: [CSS] Espandere trasparenza all'intero div

Messaggio da OMBRA_Linux »

Prova sostituendo da

Codice: Seleziona tutto

39	/*	background-color: linear-gradient(rgba(0, 1, 0, 1), rgba(1, 0, 0, 1));   */
a

Codice: Seleziona tutto

background-color: rgba(0, 255, 0, 0);  

Codice: Seleziona tutto

background-image: none; 
Se per vivere devi strisciare, alzati e muori.
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3040
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 24.04 LTS Noble Numbat
Sesso: Maschile
Località: Roma, Italia

Re: [CSS] Espandere trasparenza all'intero div

Messaggio da DoctorStrange »

Scusa @OMBRA_Linux ma il tuo consiglio mi è poco chiaro. La riga 39, che hai citato è commentata, come puoi vedere dai caratteri slash-star, proprio all'inizio della riga.
Stando a quanto hai detto, dovrei aggiungere un nuovo colore del background, ed un tag background-image impostato a "none"?
In questo modo però, la trasparenza non cambierebbe in alcun modo.
Posso chiederti di essere piu chiaro, per favore?

Comunque grazie ad entrambi.
Avatar utente
Stealth
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 17430
Iscrizione: martedì 31 gennaio 2006, 22:55
Desktop: Gnome
Distribuzione: Ubuntu 22.04 LTS

Re: [CSS] Espandere trasparenza all'intero div

Messaggio da Stealth »

Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3040
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 24.04 LTS Noble Numbat
Sesso: Maschile
Località: Roma, Italia

Re: [CSS] Espandere trasparenza all'intero div

Messaggio da DoctorStrange »

L'idea dell'attributo "opacity" non è male, ma non credo risolva il mio particolare problema.
Non credo di aver ben spiegato la situazione nel primo post. Io ho la sovrapposizione di tre "layer". Il primo, è il background di base, quello nero. Il secondo layer, quello con il bordo rosso, e formato dal gradiente di vari colori. Il terzo layer, il box verde che si sovrappone agli altri due.
Il mio scopo è di fare in modo che il terzo layer, quello verde, venga reso trasparente con tutti gli strati a lui sottostanti, in pratica, come "tagliare via" il box verde, fino a vedere il fondale nero, che è il background di base.
Se usassi "opacity", il box verde diventerebbe si, trasparente, ma si vedrebbe il layer sottostante.
Vorrei fare quanto scritto qui: https://ishadeed.com/article/thinking-a ... ut-effect/ al punto "Solution 2 - CSS Mask", ma estenderela trasparenza all'intero box verde, del quale io vorrei poter definire le dimensioni in maniera arbitraria.
Avatar utente
OMBRA_Linux
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3425
Iscrizione: mercoledì 18 febbraio 2015, 14:24
Desktop: HP / Lenovo / Samsung
Distribuzione: Android / Linux / Windows10/11
Sesso: Maschile
Località: Napoli

Re: [CSS] Espandere trasparenza all'intero div

Messaggio da OMBRA_Linux »

DoctorStrange ha scritto:
mercoledì 30 ottobre 2024, 12:10
Scusa @OMBRA_Linux ma il tuo consiglio mi è poco chiaro. La riga 39, che hai citato è commentata, come puoi vedere dai caratteri slash-star, proprio all'inizio della riga.
Stando a quanto hai detto, dovrei aggiungere un nuovo colore del background, ed un tag background-image impostato a "none"?
In questo modo però, la trasparenza non cambierebbe in alcun modo.
Posso chiederti di essere piu chiaro, per favore?

Comunque grazie ad entrambi.

Certo.
Il primo, cioè questo:

Codice: Seleziona tutto

background-color: rgba(0, 255, 0, 0); 
Dovrebbe lasciarlo verde trasparente.

Il secondo, cioè questo:

Codice: Seleziona tutto

background-image: none; 
rimuove eventuali gradienti di sfondo

Se invece vuoi mantenere i gradienti prova cosi:

Codice: Seleziona tutto

background-image: radial-gradient(rgba(0, 255, 0, 0), rgba(255, 0, 255, 0) trasparent 7em, rgba(128, 0, 128, 0));
Prova col copia incolla, se non va rimetti i valori precedenti.
Se per vivere devi strisciare, alzati e muori.
Avatar utente
marinek
Prode Principiante
Messaggi: 4
Iscrizione: mercoledì 20 novembre 2024, 11:25
Sesso: Maschile
Località: Pramaggiore
Contatti:

Re: [CSS] Espandere trasparenza all'intero div

Messaggio da marinek »

Ciao.. non sono sicur se ho afferrato, ma con i Css di oggi è sufficiente dare un colore ed un grado di opacità per creare un effetto di semi-trasparenza

div.transbox {
margin: 30px;
background-color: #ffffff;
border: 1px solid black;
opacity: 0.6;
}

L opacity indica la percentuale di trasparenza. l' esempio si trova al link. https://www.w3schools.com/css/css_image ... rency.asp Ciao da Webdesign-Specialist https://www.creazione-siti.com
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3040
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 24.04 LTS Noble Numbat
Sesso: Maschile
Località: Roma, Italia

Re: [CSS] Espandere trasparenza all'intero div

Messaggio da DoctorStrange »

marinek ha scritto: Ciao.. non sono sicur se ho afferrato, ma con i Css di oggi è sufficiente dare un colore ed un grado di opacità per creare un effetto di semi-trasparenza
Ti ringrazio, ma in questo modo, aumentando l'opacità del layer che si trova al di sopra di tutti, io vedrei il layer di mezzo. Il layer di mezzo è quello verdo. Il mio scopo, è di vedere il background. Il background, lo sfondo, è quello nero.
L'idea sarebbe di applicare una sorta di effetto "cut-off". La soluzione dovrebbe essere qualcosa del tipo, aggiungere un frame configurarlo con un bachground a null, e questo dovrebbe applicarsi al al layout sottostante, quello verde, appunto. In questo modo, posso creare "sagome" e tagliarle, od animarle, secondo forme personalizzate.
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 541
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu24@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: [CSS] Espandere trasparenza all'intero div

Messaggio da Lucio C »

Mah ... se dovessi fare della "grafica" (intendo disegni piu' che testo), come mi capita quando faccio dei biglietti di Natale, piuttosto che una pagina HTML con tanto CSS e magari qualche javascript, farei una pagina SVG con poco o nullo CSS e poco javascript. SVG ha una buona gestione di animazioni ed altri effetti grafici (poi in rete si trovano siti-tutorial che dimostrano come fare la stessa cosa con SVG e CSS). Ha una sua learning curve (tant'e' che io lo uso una volta l'anno e mi dimentico parecchio ...)
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3040
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 24.04 LTS Noble Numbat
Sesso: Maschile
Località: Roma, Italia

Re: [CSS] Espandere trasparenza all'intero div

Messaggio da DoctorStrange »

Resta inteso, che lo scopo di tutto questo è puramente accedemico. In caso di animazioni particolarmente elaborate, ci appiccico qualcosa di già fatto, logico :-) .
Al momento, a tempo perso, cerco di imparare qualcosa di CSS, e questo mi sembra un virtuosismo non troppo elaborato. Mi affascina l'idea di poter sviluppare qualche artefatto grafico, usando solo CSS. Voglio vedere fino a che punto riesco ad arrivare. Sono stato ammaliato da alcuni video su youtube, di alcuni professionisti del CSS, che fanno cose incredibili : -) .
Avatar utente
marinek
Prode Principiante
Messaggi: 4
Iscrizione: mercoledì 20 novembre 2024, 11:25
Sesso: Maschile
Località: Pramaggiore
Contatti:

Re: [CSS] Espandere trasparenza all'intero div

Messaggio da marinek »

DoctorStrange ha scritto:
giovedì 21 novembre 2024, 16:12
marinek ha scritto: Ciao.. non sono sicur se ho afferrato, ma con i Css di oggi è sufficiente dare un colore ed un grado di opacità per creare un effetto di semi-trasparenza
Ti ringrazio, ma in questo modo, aumentando l'opacità del layer che si trova al di sopra di tutti, io vedrei il layer di mezzo. Il layer di mezzo è quello verdo. Il mio scopo, è di vedere il background. Il background, lo sfondo, è quello nero.
L'idea sarebbe di applicare una sorta di effetto "cut-off". La soluzione dovrebbe essere qualcosa del tipo, aggiungere un frame configurarlo con un bachground a null, e questo dovrebbe applicarsi al al layout sottostante, quello verde, appunto. In questo modo, posso creare "sagome" e tagliarle, od animarle, secondo forme personalizzate.
Sempre con il dubbio di non essere sicuro di ciò che desideri:

Hai mai utilizzato le layer o livelli per posizionare i tuoi box? Questo codice che suggerisco, va nel HEAD della pagina WEB:

Esempio <style media="screen" type="text/css">
#layer1 { position: fixed; top: 5px; left: 2%; height: 50px; visibility: visible }
#layer2 { position: fixed; top: 0px; left: 0%; width: 99%; visibility: visible }
#layer3 { position: fixed; top: 135px; left: 73%; height: 16px; visibility: visible }
#layer4 { position: fixed; top: 90px; left: 75%; height: 16px; visibility: visible }
</style>

E poi, nel Body, Per posizionare gli oggetti inquadrati nelle layers scrivi così:
<div id="layer1" align= "center" > abcd </div>
<div id="layer2" align= "center" > efgh </div>

In questo modo posizioni gli oggetti che possono essere anche oggetti tipo box conservando tutte le proprietà CSS che desideri. Puoi aggiungere anche testo o altro al proprio interno. Questi livelli (vecchio glorioso HTML ) servono a posizionare oggetti sia in maniera completamente indipendente da tutte le altre regole HTML, sovrapponendosi anche ai Table o altre regole in puro CSS, come anche a stabilire una priorità in caso di sovrapposizione degli oggetti stessi. Un saluto cordiale.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 14 ospiti