Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    12

    richiamare lo pseudo elemento after

    Salve a tutti,
    Sto facendo pratica con JavaScript e sto creando una galleria di immagini con effetto lightbox. Ho usato uno pseudo elemento after per applicare alcune animazioni ad ogni contenitore delle immagini. Prima di fare ciò, ho creato una finestra con javascript che viene visualizzata quando si clicca su ciascuna immagine. Tutto funziona, l'unico problema è che da quando ho usato lo pseudo elemento after, naturalmente, non posso cliccare sulle immagini e quindi la finestra non appare più; per cui la mia domanda è: usando JavaScript è possbile richiamare gli pseudo elementi after o before? E più in generale, come posso risolvere il mio problema e consentire alla finestra di apparire? Grazie in anticipo per l'aiuto. Vi posto qui i codici HTML, CSS e Javascript
    codice:
    <ul class="contenitore_delle_descrizioni">
                <li class="descrizioni"><img src="immagini/forum/descrizione-1.png" alt="01" class="immagine_della_descrizione"></li>
                <li class="descrizioni"><img src="immagini/forum/descrizione-2.png" alt="02" class="immagine_della_descrizione"></li>
                <li class="descrizioni"><img src="immagini/forum/descrizione-3.png" alt="03" class="immagine_della_descrizione"></li>
                <li class="descrizioni"><img src="immagini/forum/descrizione-4.png" alt="04" class="immagine_della_descrizione"></li>
                <li class="descrizioni"><img src="immagini/forum/descrizione-5.png" alt="05" class="immagine_della_descrizione"></li>
                <li class="descrizioni"><img src="immagini/forum/descrizione-6.png" alt="06" class="immagine_della_descrizione"></li> 
    </ul>
    codice:
    * {    box-sizing: border-box;
    }
    img {
        max-width: 100%;
    }
    .contenitore_del_titolo {
        position: relative;
        top: 5px;
        width: 100%;
    }
    .contenitore_del_titolo p {
        color: #fedd32;
        font-size: 25px;
        font-weight: bolder;
        margin: auto;
        text-align: center;
    }
    .contenitore_delle_descrizioni {
        display: -webkit-flex;
        display: -moz-flex;
        display: -ms-flex;
        display: -o-flex;
        display: flex;
        -webkit-flex-wrap: wrap;
        -moz-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
        -o-flex-wrap: wrap;
        flex-wrap: wrap;
        justify-content: center;
        max-width: 1000px;
        margin: auto;
    }
    .contenitore_delle_descrizioni .descrizioni {
        cursor: pointer;
        margin: 1em;
        overflow: hidden;
        position: relative;
        width: calc(100% - 2em);
    }
    .contenitore_delle_descrizioni .descrizioni .immagine_della_descrizione {
        display: block;
        -webkit-transition: all 0.4s;
        -moz-transition: all 0.4s;
        -ms-transition: all 0.4s;
        -o-transition: all 0.4s;
        transition: all 0.4s;
        width: 100%;
    }
    .contenitore_delle_descrizioni .descrizioni:hover .immagine_della_descrizione {
        -webkit-transform: scale(1.2) rotate(-5deg);
        -moz-transform: scale(1.2) rotate(-5deg);
        -ms-transform: scale(1.2) rotate(-5deg);
        -o-transform: scale(1.2) rotate(-5deg);
        transform: scale(1.2) rotate(-5deg);
    }
    .contenitore_delle_descrizioni .descrizioni:after {
        background: url(../immagini/forum/icona_della_galleria.png) no-repeat rgba(0,0,0,0.8);
        background-position: center center;
        -webkit-background-size: 3em;
        -moz-background-size: 3em;
        -ms-background-size: 3em;
        -o-background-size: 3em;
        background-size: 3em;
        content: '';
        height: 100%;
        left: 0;
        opacity: 0;
        position: absolute;
        top: 0;
        -webkit-transform: scale(0.1);
        -moz-transform: scale(0.1);
        -ms-transform: scale(0.1);
        -o-transform: scale(0.1);
        transform: scale(0.1);
        -webkit-transition: all 0.4s;
        -moz-transition: all 0.4s;
        -ms-transition: all 0.4s;
        -o-transition: all 0.4s;
        transition: all 0.4s;
        width: 100%;
    }
    .contenitore_delle_descrizioni .descrizioni:hover::after {
        opacity: 1;
        -webkit-transform: scale(1);
        -moz-transform: scale(1);
        -ms-transform: scale(1);
        -o-transform: scale(1);
        transform: scale(1);
    }
    .finestra {
        -webkit-align-items: center;
        -moz-align-items: center;
        -ms-align-items: center;
        -o-align-items: center;
        align-items: center;
        background: rgba(0,0,0,0.7);
        display: -webkit-flex;
        display: -moz-flex;
        display: -ms-flex;
        display: -o-flex;
        display: flex;
        height: 100vh;
        justify-content: center;
        left: 0;
        position: fixed;
        text-align: center;
        top: 0;
        width: 100%;
    }
    .finestra .immagine_della_finestra {
        max-width: 700px;
        width: 70%;
    }
    .finestra .tasto_della_finestra {
        background: rgba(0,0,0,0.2);
        border-radius: 50%;
        color: #ffffff;
        cursor: pointer;
        font-family: monospace;
        font-size: 25px;
        font-weight: bold;
        height: 50px;
        line-height: 50px;
        position: absolute;
        right: 50px;
        text-align: center;
        top: 50px;
        width: 50px;
    }
    @media screen and (min-width:480px) {
        .contenitore_delle_descrizioni .descrizioni {
            width: calc(50% - 2em);
        }
    }
    @media screen and (min-width:768px) {
        .contenitore_del_titolo p {
            font-size: 30px;
        }
        .contenitore_delle_descrizioni .descrizioni {
            width: calc(33.33333% - 2em);
        }
    }
    @media screen and (min-width:1024px) {
        .contenitore_del_titolo p {
            font-size: 35px;
        }
        .contenitore_delle_descrizioni .descrizioni {
            width: calc(33.33333% - 2em);
        }
    }
    
    codice:
    $('.immagine_della_descrizione').click(function(e) {    'use strict';
        var immagine = e.target.src;
        var finestra = '<div class="finestra" id="finestra"><img src="' + immagine + '" class="immagine_della_finestra"><div class="tasto_della_finestra" id="tasto_della_finestra">X</div></div>';
        $('body').append(finestra);
        $('#tasto_della_finestra').click(function () {
            $('#finestra').remove();
        })
    });
    $(document).keyup(function(e) {
        if(e.which==27) {
            $('#finestra').remove();
        } 
    })
    Un saluto a tutti e grazie ancora

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, che io sappia non è normalmente possibile manipolare pseudo-elementi attraverso JavaScript perché questi, di fatto, non sono parte del DOM.

    Tuttavia mi pare che ti stia perdendo in un bicchier d'acqua; non puoi semplicemente applicare il click all'elemento contenitore?
    codice:
    $('.descrizioni').click(...
    All'interno della funzione potrai poi recuperare il riferimento all'immagine con una cosa di questo tipo:
    codice:
    var immagine = $('img',this)[0].src;
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    12
    Grazie infinite. A volte mi capita davvero di perdermi in un bicchier d'acqua; ho applicato la modifica che mi hai suggerito e adesso funziona tutto alla perfezione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.