Estoy tratando de crear una plantilla de diseño de 3 columnas con una proporción fija por cada columna según el tamaño del puerto de visualización, por lo que 20% para la izquierda, 50% para el contenido del cuerpo central y 30% para la derecha. También he establecido un ancho mínimo y máximo para cada columna en píxeles debajo de los contenedores principales. Pero el problema al que me enfrento es cuando agrego width:400px a la izquierda del niño, ignora el ancho máximo de la izquierda del padre (320 px) y estiro el ancho de la navegación izquierda a 400 px. Esperaba que el elemento secundario respetara el ancho máximo establecido por el padre. ¿Cómo puedo configurar el ancho máximo/mínimo de cada columna para que, independientemente del ancho que coloque en el elemento secundario, respete el porcentaje de ancho y el ancho máximo/mínimo del elemento principal?
* { outline: 1px red solid; margin: 0; } .parent-wrapper { display: flex; } .parent-left { width: 20%; max-width: 320px; min-width: 256px; } .parent-center { width: 50%; max-width: 1400px; } .parent-right { width: 30%; max-width: 464px; min-width: 384px; } .child-left { background-color: hotpink; width: 400px; /*I don't want this to over-ride max-width of 320px, but it does.*/ } <div class="parent-wrapper"> <div class="parent-left"> <nav class="child-left"> <p>Left Nav</p> </nav> </div> <div class="parent-center"> <div class="child-center"> <p>Body Content</p> </div> </div> <div class="parent-right"> <div class="child-right"> <p>Right Panel</p> </div> </div> </div>Gracias a @Chase por la idea.
* { outline: 1px red solid; margin: 0; } .parent-wrapper { display: flex; } .parent-left { width: 20%; max-width: 320px; min-width: 256px; } .parent-center { width: 50%; max-width: 1400px; } .parent-right { width: 30%; max-width: 464px; min-width: 384px; } .child-left { background-color: hotpink; max-width: 100%;/*if u use less than 100% it works but more means set back to 100% that's available space by parent*/ width: 400px; /*I don't want this to over-ride max-width of 320px, but it does.*/ } <div class="parent-wrapper"> <div class="parent-left"> <nav class="child-left"> <p>Left Nav</p> </nav> </div> <div class="parent-center"> <div class="child-center"> <p>Body Content</p> </div> </div> <div class="parent-right"> <div class="child-right"> <p>Right Panel</p> </div> </div> </div><!DOCTYPE html> <html> <style> * { outline: 1px red solid; margin: 0; } .parent-wrapper { display: flex; } .parent-left { flex:1; max-width:320px; } .parent-center { flex:3; } .parent-right { flex:2; } .child-left { background-color: hotpink; width:100% /*I don't want this to over-ride max-width of 320px, but it does.*/ } </style> <body> <div class="parent-wrapper"> <div class="parent-left"> <nav class="child-left"> <p>Left Nav</p> </nav> </div> <div class="parent-center"> <div class="child-center"> <p>Body Content</p> </div> </div> <div class="parent-right"> <div class="child-right"> <p>Right Panel</p> </div> </div> </div> </body> </html>; / No quiero que esto anule el ancho máximo de 320 px, pero lo hace. / }