Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

402
Views
El color de fondo de div secundario no se ajusta al div principal al hacer zoom

Según el nivel de zoom del navegador, el color de fondo del div secundario tiene un comportamiento extraño. Aparecen algunos espacios en blanco.

Vea estos ejemplos:

Zoom 125%:

Zoom125

Zoom 150%:

Zoom150

Zoom 175%:

Zoom175

Zoom 200%:

Zoom200

Aquí está mi código:

(JSFiddle: https://jsfiddle.net/3L4wfvyg/ )

 $(document).ready(function () { document.getElementById("HeaderContainer").addEventListener("click", function (e) { if (e.target.id != "FormContainer") { document.getElementById("Container3").classList.toggle("clicked"); document.getElementById("HeaderContainer").classList.toggle("HeaderContainer3"); }; }); });
 .Container1 { background-color: white; line-height: 30px; font-size: 20px; color: black; border: none; position: absolute; } .Container1 h3 { font-size: 30px; color: #142D41; margin-top: 20px; margin-bottom: 10px; position: relative; } .Container1 .Container3 { padding: 30px; display: block; border: 1px solid black; border-radius: 5px; margin-top: 15px; font-size: 15px; min-width: 100%; background-color: white; text-align: left; height: 100px; overflow: hidden; } .Container1 .Container3:hover { text-decoration: none !important; cursor: pointer; } .HeaderContainer3:hover { color: white !important; background-color: blue; } .HeaderContainer2 { padding: 30px; } .HeaderContainer1 { z-index: 10; position: relative; margin: -31px; padding: 32px 30px 25px 30px; width: auto; } .FormContainer { font-size: 20px !important; } #Container3 { height: 0px; transition: height 300ms ease-in-out; box-shadow: 0.1px 0.6px 2px 0px #8c8c8c; } #Container3.clicked { height: 314px; } .Header { position: relative; padding-top: 6px; overflow: hidden; width: 100%; height: 100%; cursor: auto; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <div id="Container1" class="Container1"> <h3>Title </h3> <div class="Container2"> <div id="Container3" class="Container3"> <div id="HeaderContainer" class="HeaderContainer1 HeaderContainer2 HeaderContainer3"> <div class="Header">Header</div> </div> <div id="FormContainer" class="FormContainer"> <hr /> <div style="padding: 5px 0px 8px 0px;"> Form </div> <br /> <div id="FormElementsContainer" class="FormElementsContainer"> <div> <b>First</b> <br /> </div> <div> <b>Last</b> <br /> </div> <div> <b>Third</b> <br /> </div> <div> <br /> <button> Submit </button> </div> </div> <br /> </div> </div> </div> </div>

¿Por qué sucede esto y cómo puedo solucionar el problema?

Cuando elimino el borde de Container3, parece que el problema ya no ocurre, pero no sé si esto se debe a que es difícil ver si el problema sigue ahí debido al color blanco.

over 4 years ago · Santiago Trujillo
4 answers
Answer question

0

Puede haber una especie de efecto de borde en el zoom provocado por un píxel CSS que no es solo un píxel de pantalla sino 2 o más en pantallas modernas/de alta definición. Si el sistema está tratando de asignar varios píxeles de pantalla a uno de CSS y se le pide que haga una fracción, a veces puede 'dejar atrás' un píxel de pantalla. De ahí el blanco en ocasiones, y la variación en diferentes niveles de zoom.

En el caso de la pregunta, tal vez hacer un truco simple, haciendo que el elemento principal tenga un fondo azul al pasar el mouse, ¿sería suficiente?

 .Container1 .Container3:hover { text-decoration: none !important; cursor: pointer; background-color: blue; }
over 4 years ago · Santiago Trujillo Report

0

Cambié el tamaño del borde a 0.0125em. (¡Es raro pero funcionó!).

 .Container1 .Container3 { border: 0.0125em solid black; }
over 4 years ago · Santiago Trujillo Report

0

Inspirado en la respuesta de A Haworth : colorear el elemento principal en su lugar es menos propenso a generar artefactos cuando se trata de diferentes niveles de zoom/densidades de pantalla. Puede eliminar el fondo del elemento secundario y agregar un nuevo selector :hover para el elemento principal que solo se activa cuando no está en el estado .clicked .

 .HeaderContainer3:hover { color: white !important; /** Background removed here **/ } /** New block with a :not selector **/ .Container1 .Container3:hover:not(.clicked) { background-color: blue; }

Ejemplo de código de trabajo completo:

 $(document).ready(function () { document.getElementById("HeaderContainer").addEventListener("click", function (e) { if (e.target.id != "FormContainer") { document.getElementById("Container3").classList.toggle("clicked"); document.getElementById("HeaderContainer").classList.toggle("HeaderContainer3"); }; }); });
 .Container1 { background-color: white; line-height: 30px; font-size: 20px; color: black; border: none; position: absolute; } .Container1 h3 { font-size: 30px; color: #142D41; margin-top: 20px; margin-bottom: 10px; position: relative; } .Container1 .Container3 { padding: 30px; display: block; border: 1px solid black; border-radius: 5px; margin-top: 15px; font-size: 15px; min-width: 100%; background-color: white; text-align: left; height: 100px; overflow: hidden; } .Container1 .Container3:hover { text-decoration: none !important; cursor: pointer; } .Container1 .Container3:hover:not(.clicked) { background-color: blue; } .HeaderContainer3:hover { color: white !important; } .HeaderContainer2 { padding: 30px; } .HeaderContainer1 { z-index: 10; position: relative; margin: -31px; padding: 32px 30px 25px 30px; width: auto; } .FormContainer { font-size: 20px !important; } #Container3 { height: 0px; transition: height 300ms ease-in-out; box-shadow: 0.1px 0.6px 2px 0px #8c8c8c; } #Container3.clicked { height: 314px; } .Header { position: relative; padding-top: 6px; overflow: hidden; width: 100%; height: 100%; cursor: auto; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <div id="Container1" class="Container1"> <h3>Title </h3> <div class="Container2"> <div id="Container3" class="Container3"> <div id="HeaderContainer" class="HeaderContainer1 HeaderContainer2 HeaderContainer3"> <div class="Header">Header</div> </div> <div id="FormContainer" class="FormContainer"> <hr /> <div style="padding: 5px 0px 8px 0px;"> Form </div> <br /> <div id="FormElementsContainer" class="FormElementsContainer"> <div> <b>First</b> <br /> </div> <div> <b>Last</b> <br /> </div> <div> <b>Third</b> <br /> </div> <div> <br /> <button> Submit </button> </div> </div> <br /> </div> </div> </div> </div>

over 4 years ago · Santiago Trujillo Report

0

Aquí hay una solución. Es similar a lo que sugirió otra persona, pero tiene en cuenta el estado .clicked .

La solución se reduce a establecer la propiedad background-color en el contenedor con propiedades de border y border-radius lugar de en el contenedor anidado. Lo logra reemplazando .HeaderContainer3:hover selector con .Container3:not(.clicked):hover .

 .Container3:not(.clicked):hover { color: white !important; background-color: blue; }

Violín de trabajo: https://jsfiddle.net/2eqLb6go/


En cuanto a por qué sucede esto, no tengo una respuesta técnica, pero parece tener algo que ver con la representación de píxeles fraccionarios con contenedores anidados cuando el padre tiene un border . Aquí hay una demostración del mismo problema en una forma simplificada:

https://jsfiddle.net/0vje6k5w/

Parece un problema de renderizado debido a un error de redondeo con border . Parece que el área de recorte y los anchos del borde se calculan de manera diferente, lo que da como resultado un espacio inconsistente de píxeles transparentes que se puede redondear a 0 o 1 . Se respeta el background del contenedor con la propiedad de border (de ahí la solución descrita anteriormente), pero todo lo que esté anidado dentro de él se recortará y no parece haber ninguna forma de evitar que eso suceda. Por ejemplo, el problema persiste incluso si los elementos secundarios están absolutamente posicionados dentro de él.

Honestamente, llamaría a esto una implementación con errores del modelo de caja con respecto al zoom de la página. Es extraño que todos los principales navegadores en 2021 sufran el mismo comportamiento.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!