1
respuesta

[Sugerencia] Haciendo la bandera

Estaba replicando el código visto en clase, pero separando los archivos (html, css y js) y no se ajustaba el tamaño como deseaba porque le estaba dando las dimensiones a través del css, si a alguien más que lo esta haciendo como yo le sucede lo mismo, solo tienen que poner las dimensiones en el html Aca mi código

HTML

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="style.css" />
    <title>Canvas</title>
  </head>
  <body>
      <!--
            Al principio lo estaba haciendo con esta línea de codigo
            <canvas class="plantilla"></canvas> 
            o sea que no definía las dimensiones para hacerlo ya en el css,
            pero no funcionaba y lo modifique a la línea de abajo
    -->
    <canvas class="plantilla" width="600" height="400"></canvas> 
  </body>
  <script src="index.js"></script>
</html>

CSS

* {
  padding: 0%;
  margin: 0%;
}

.plantilla {
  /*
  no le den las dimensiones en el css, porque el fillRect puede
  interpretar mal las dimensiones, no sé por qué, por eso comente esas líneas
  width: 600px;
  height: 400px; */
  border: 1px solid #000;
}

en el js si no tuve inconvenientes JS

let pantalla = document.querySelector(".plantilla");
let pincel = pantalla.getContext("2d");

// pincel.fillStyle = "blue";
// pincel.fillRect(0, 0, 600, 400);

pincel.fillStyle = "green";
pincel.fillRect(0, 0, 200, 400);

pincel.fillStyle = "red";
pincel.fillRect(400, 0, 200, 400);

lo que pasaba cuando definía las dimenciones en el css era que el fillRect, el valor del with se duplicaba, es decir que si le dabas pincel.fillRect(400, 0, 200, 400);, te pintaba 400px de ancho y no los 200px que mandaste en la función. espero a alguien le ayude

1 respuesta

Hola Alexchilquilloquispe,

Gracias por compartir tu código y explicar el problema que estabas enfrentando al definir las dimensiones en CSS. Parece que encontraste una solución al poner las dimensiones directamente en el elemento canvas en el HTML.

Es importante tener en cuenta que cuando se establecen las dimensiones de un elemento canvas a través de CSS, el tamaño del lienzo se escala según el tamaño del contenedor. Esto puede afectar la forma en que se dibujan los elementos en el lienzo.

Al definir las dimensiones directamente en el HTML, estás asegurando que el lienzo tenga el tamaño exacto que deseas, sin importar el tamaño del contenedor. Esto es especialmente útil cuando se trabaja con coordenadas y dibujos precisos.

En resumen, si estás teniendo problemas con las dimensiones de un elemento canvas al definirlas en CSS, considera establecerlas directamente en el HTML para obtener el resultado deseado.

Espero que esta explicación te ayude a entender mejor el problema que estabas enfrentando. Si tienes alguna otra pregunta, no dudes en hacerla.

¡Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)