Código de JavaScript - Subir un elemento desde la parte inferior del navegador hasta la parte superior

Imágen de perfil
Val: 606
Bronce
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Subir un elemento desde la parte inferior del navegador hasta la parte superiorgráfica de visualizaciones


JavaScript

Publicado el 20 de Abril del 2021 por Info (100 códigos)
1.493 visualizaciones desde el 20 de Abril del 2021
Este código muestra como poder mostrar unos elementos de HTML subiéndolos desde la parte inferior hasta la parte superior del navegador.

Para ello, se ha creado una clase que va recibiendo el id del elemento y devuelve dos funciones, una para mostrar el elemento y otra función para esconderlo. Estas funciones hay que llamarlas desde los elementos que queramos que abra y cierra los elementos.

En este ejemplo, veras que dos capas se abren con un botón, y una tercera se abre con un enlace. De igual manera para cerrar los elementos, en uno hay que pulsar sobre el mismo elemento, otro hay que pulsar sobre un botón, y el tercero hay que darle a un enlace.

CPT2104201248-403x491

1

Publicado el 20 de Abril del 2021gráfica de visualizaciones de la versión: 1
1.494 visualizaciones desde el 20 de Abril del 2021
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<html>
<head>
    <meta charset="utf-8">
    <style>
    * {
        padding:0;
        margin:0px;
        box-sizing: border-box;
    }
    html {
        scroll-behavior: smooth;
    }
    article {
        padding:20px;
    }
 
    #layer1 {
        background-color: yellow;
    }
    #layer2 {
        background-color: blue;
    }
    #layer3 {
        background-color: red;
    }
    button {
        padding:10px 20px;
    }
 
    .moveUp {
        display:none;
        position: absolute;
        width:100%;
        transition: all 0.5s ease-out;
        overflow: hidden;
        height:0;
    }
    .moveUp>div {
        padding:20px;
    }
    </style>
</head>
<body>
 
    <article>
        <h1>titulo pagina</h1>
 
        <div>
            Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen. Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen. Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen.
        </div>
        <button id="button1">Mostrar capa1</button>
        <button id="button2">Mostrar capa2</button>
        <div>
            <a href="#" id="link1">Pulsar para ver la capa 3</a>
        </div>
    </article>
 
    <div id="layer1" class="moveUp">
        <div>
            <h2>contenido de la capa 1</h2>
            <p>Pulsa en cualquier lugar para cerrar la capa</p>
        </div>
    </div>
    <div id="layer2" class="moveUp">
        <div>
            <h2>contenido de la capa 2</h2>
            <p><button>Cerrar</button></p>
        </div>
    </div>
    <div id="layer3" class="moveUp">
        <div>
            <h2>contenido de la capa 3</h2>
            Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen. Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen. Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen. Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen. Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen.
            <div><a href="#">Cerrar</a></div>
        </div>
    </div>
</body>
</html>
 
<script>
class layersToMoveUp {
    constructor() {
        self.layers=[];
        window.onresize = this.resize;
    }
 
    /**
     * Function que esconde la capa y devuelve un objeto
     * con dos funciones, una para mostrar la capa y otra
     * funcion para esconderla
     *
     * @param {string} id
     *
     * @return {object} objeto con dos funciones para
     *                  mostrar y ocultar la capa
     */
    setLayer(element) {
        const layer=document.getElementById(element);
        layers.push(layer);
        this.resize();
        return {
            show: () => {
                document.querySelector("body").scrollTo(0,0);
                layer.style.top=0;
                layer.scrollTop=0;
                layer.style.height=document.querySelector("body").scrollHeight > layer.scrollHeight ? document.querySelector("body").scrollHeight+"px" : layer.scrollHeight+"px";
            },
            hide: () => {
                layer.style.top=document.querySelector("body").clientHeight+"px";
                layer.style.height="0px";
            }
        }
    }
 
    /**
     * Función que se ejecuta cada vez que se añade una nueva
     * capa o se modifica el tamaño de la ventana. Posiciona
     * las capas en la parte inferior de la ventana
     */
    resize() {
        // posicionamos las capas en la parte inferior de la ventana
        layers.forEach(el => {
            if (el.style.height=="" || el.style.height=="0px") {
                el.style.display="none";
                el.style.top=document.querySelector("body").clientHeight+"px";
                el.style.height=0;
                el.style.display="block";
            }
        });
    }
}
 
const m=new layersToMoveUp();
 
const l1=m.setLayer("layer1");
document.getElementById("button1").onclick=l1.show;
document.getElementById("layer1").onclick=l1.hide;
 
const l2=m.setLayer("layer2");
document.getElementById("button2").onclick=l2.show;
document.querySelector("#layer2 button").onclick=l2.hide;
 
const l3=m.setLayer("layer3");
document.getElementById("link1").onclick=l3.show;
document.querySelector("#layer3 a").onclick=l3.hide;
 
</script>



Comentarios sobre la versión: 1 (0)


No hay comentarios
 

Comentar la versión: 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s7018