CSS - Alinear a lo ancho dos elementos div respecto a otro

 
Vista:
sin imagen de perfil

Alinear a lo ancho dos elementos div respecto a otro

Publicado por Arturo (7 intervenciones) el 03/11/2022 19:07:44
Hola, buen día.

Estoy maquetando una sección de una página web, para practicar mis conocimientos sobre el tema. Resulta que me propuse el reto de hacer una página de ajedrez, sin embargo el problema surge cuando quiero alinear a lo ancho dos divs, para explicarme mejor les comparto una imagen:

web1

Lo que me gustaría es que el tablero de ajedrez, defina el ancho de los otros dos divs rojos, o sea me gustaría que todo quedara en un cuadrado:

web2

No importando que la sección "interfaz" se quede con espacios vacíos a los lados.

Intente determinar un ancho, fijando un tamaño, pero al emularlo para dispositivos móviles, este se descuadra totalmente, ya sea que termina siendo mas estrecho al ancho del tablero de ajedrez o mas largo.

Les comparto mi código html:

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
<section class="interfaz">
 
        <div class="perfil2">
            <div><img class="foto2" src="#" href="#"></div>
            <div class="nick2"><a>Nick</a></div>
            <div class="tiempo2">Tiempo2</div>
        </div>
 
        <div class="tablero">
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
            <div class="box"></div>
        </div>
 
        <div class="perfil1">
            <div><img class="foto1" src="#" href="#"></div>
            <div class="nick1"><a>Nick</a></div>
            <div class="tiempo1">Tiempo1</div>
        </div>
    </section>

Y este es el código CSS:

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
.perfil2 {
    display: flex;
    background-color: #af3232;
    font-family: "Montserrat Alternates", sans-serif;
    border-radius: 4px;
    align-items: center;
    padding: 10px;
 
}
 
.tablero {
    grid-area: tablero;
    display: grid;
    grid-template-columns: repeat(8, 1fr); /* Es para crear 8 columnas */
    grid-template-rows: repeat(8, 1fr); /* Es para crear 8 filas */
    background: repeating-conic-gradient(#c54411 0% 25%, #afc6d8 0% 50%) 50% / 25% 25%; /* Esto define el color de las casillas */
    aspect-ratio: 1/1; /* Permite que las columnas y filas mantengan la misma medida, produciendo cuadrados */
    max-height: calc(100vh - 150px); /* Permite que la pagina web sea responsive */
    margin: auto; /* Esto es para centrar el tablero */
    border: thin 1px solid;
    align-items: center;
    justify-content: center;
    text-align: center;
 
}
 
.perfil1 {
    display: flex;
    background-color: #af3232;
    font-family: "Montserrat Alternates", sans-serif;
    border-radius: 4px;
    align-items: center;
    padding: 10px;
    bottom: 0;
}

Si se preguntan del layout, lo tengo distribuido con grid para designar las secciones de la web, les comparto como tengo el CSS para móviles:

1
2
3
4
5
6
7
8
.grid_container {
    display: grid;
    gap: 10px;
    grid-template:
    "header" 5vh
    "interfaz" auto
    "informacion" auto;
}

Mientras que para resoluciones de 860px a más, lo tengo distribuido de la siguiente manera:

1
2
3
4
5
6
7
8
9
@media (min-width: 860px) {
    .grid_container {
        grid-template:
        "header header" 5vh
        "interfaz informacion"  auto
        / auto 40vw;
    }
 
}

Desconozco si el problema viene desde el layout, ya que como lo tengo definido como "auto" supuestamente este se adapta al contenido de los elementos hijos.

De antemano agradezco su atención y su ayuda.

Saludos cordiales :)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Alinear a lo ancho dos elementos div respecto a otro

Publicado por Arturo (7 intervenciones) el 03/11/2022 21:00:13
Lo pude resolver, solo tuve que copiar las propiedades del tablero a la del perfil1 y perfil2, solo modifique el código CSS de la siguiente manera:

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
.perfil2 {
    display: grid;
    grid-template-columns: 3fr 1fr 4fr;
    grid-template-rows: 1fr;
    max-width: calc(100vh - 150px);
    padding: 10px;
    margin: auto;
    background-color: #af3232;
    font-family: "Montserrat Alternates", sans-serif;
}
 
.tablero {
    grid-area: tablero;
    display: grid;
    grid-template-columns: repeat(8, 1fr); /* Es para crear 8 columnas */
    grid-template-rows: repeat(8, 1fr); /* Es para crear 8 filas */
    background: repeating-conic-gradient(#c54411 0% 25%, #afc6d8 0% 50%) 50% / 25% 25%; /* Esto define el color de las casillas */
    aspect-ratio: 1/1; /* Permite que las columnas y filas mantengan la misma medida, produciendo cuadrados */
    max-height: calc(100vh - 150px); /* Permite que la pagina web sea responsive */
    margin: auto; /* Esto es para centrar el tablero */
    border: thin 1px solid;
    align-items: center;
    justify-content: center;
    text-align: center;
 
}
 
.perfil1 {
    display: grid;
    grid-template-columns: 3fr 1fr 4fr;
    grid-template-rows: 1fr;
    max-width: calc(100vh - 150px);
    padding: 10px;
    margin: auto;
    background-color: #af3232;
    font-family: "Montserrat Alternates", sans-serif;
}

Visualmente se ve así:


web1

Ahora terminaré de maquetar, muchas gracias por su atención.

Saludos cordiales :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar