CSS flex elements seem to handle CSS max-width differently than normal.
For example, the max width might be completely ignored.
I asked Gemini AI about this and got a partially useful answer, shown below.
Further investigation provided more useful information, which I have added afterwards.
I am using CSS flex with max width, but the max width is being exceeded.
※ I am using gap too.
Understanding the Issue: Max Width Exceeded in Flex Container with Gap
Problem: You’re using CSS Flexbox with max-width and gap, but the flex items are exceeding the specified max-width.
Possible Causes:
- 
Incorrect flexProperty:- Ensure that flex-growis set to0or a low value to prevent items from expanding beyond their content size.
- Use flex-basisto define the initial size of flex items.
- Example: flex: 0 0 auto;
 
- Ensure that 
- 
gapProperty Impact:- The gapproperty adds space between flex items, potentially increasing the overall width.
- Consider adjusting the max-widthto accommodate the added space.
- Example: If you have a gapof 20px, you might need to reduce themax-widthby the total gap between items.
 
- The 
- 
Missing or Incorrect width:- If you haven’t explicitly set a widthfor flex items, they might expand to fill the available space.
- Set a specific widthor useflex-basisto control the initial size.
 
- If you haven’t explicitly set a 
- 
Parent Container Constraints: - The parent container might not have a defined width or max-width, allowing flex items to overflow.
- Ensure the parent container has appropriate size constraints.
 
- The parent container might not have a defined width or 
- 
Other CSS Properties: - Other CSS properties like margin,padding, orbox-sizingcan affect the final size of elements.
- Check for conflicting styles.
 
- Other CSS properties like 
Solution Steps:
- Provide Code Snippet: Share your HTML and CSS code for a more accurate diagnosis.
- Check Flex Properties: Verify that flex-growis set correctly andflex-basisis defined appropriately.
- Account for gap: Adjust themax-widthto compensate for the added space between items.
- Set Explicit Width: If necessary, provide a specific widthfor flex items.
- Inspect Parent Container: Ensure the parent container has proper dimensions.
- Consider Other CSS: Check for conflicting styles that might affect element size.
Example:
.container {
  display: flex;
  max-width: 800px;
  gap: 20px;
}
.item {
  flex: 0 0 auto; /* Prevent growth and set initial size to content */
  max-width: 200px; /* Adjust max-width considering gap */
}Additional Tips:
- Use browser developer tools to inspect element dimensions and identify the issue visually.
- Consider using flex-wrapif you want items to wrap to a new line when they exceed the container’s width.
It seems that:
flex items no longer exist in a block formatting context, where block level elements automatically take
width: 100%. In a flex formatting context, elements have different defaults.Therefore, to get
max-widthto work on a flex item, also give the itemwidth: 100%.
https://stackoverflow.com/a/43705979/1764521
Also, there is an issue with min-width:
Flexbox introduces
autoas the initial value ofmin-width. Whenoverflowisvisible, thatautoforces the flex item to grow so that its content doesn’t overflow.Therefore, you can use
min-width: 0.
