Image Overlay Description Request
January 7, 2025 · AI Conversations
display: flex;
justify-content: space-between;
gap: 20px;
flex-wrap: wrap;
}
.project-taxonomy-grid .project-grid {
flex: 1 1 30%;
}
.project-taxonomy-grid .project-grid img {
width: 100%;
height: 229px; /* Set a fixed height for the images to make them equal */
object-fit: cover; /* Ensures the image covers the area without distortion */
}
.project-taxonomy-grid .project-grid .term-description
{
background-color: #225BC0;
padding: 10px 16px;
color:#fff;
font-family: 'Archia-medium', sans-serif;
font-size: 20px;
font-style: normal;
font-weight: 500;
line-height: normal;
margin-bottom: 8px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.project-taxonomy-grid .project-grid .term-description .taxonomy-icon
{
padding:12.6px;background-color:#fff;
}
.project-taxonomy-grid .project-grid .term-description .taxonomy-icon img
{
width:16.8px;
height:16.8px;
}
### Updated CSS:
.project-taxonomy-grid {
display: flex;
justify-content: space-between;
gap: 20px;
flex-wrap: wrap;
}
.project-taxonomy-grid .project-grid {
flex: 1 1 30%;
position: relative; /* Allows child elements to be positioned relative to this container */
overflow: hidden; /* Ensures content doesn't spill out */
}
.project-taxonomy-grid .project-grid img {
width: 100%;
height: 229px; /* Ensures all images have the same height */
object-fit: cover; /* Ensures images are scaled to fit without distortion */
}
.project-taxonomy-grid .project-grid .term-description {
position: absolute; /* Position it on top of the image */
bottom: 0; /* Align it to the bottom of the image */
left: 0;
right: 0;
background-color: #225BC0; /* Blue background */
color: #fff; /* White text color */
padding: 10px 16px;
font-family: 'Archia-medium', sans-serif;
font-size: 20px;
font-style: normal;
font-weight: 500;
line-height: normal;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.project-taxonomy-grid .project-grid .term-description .taxonomy-icon {
padding: 12.6px;
background-color: #fff; /* White background for the icon */
border-radius: 50%; /* Makes the icon background circular */
}
.project-taxonomy-grid .project-grid .term-description .taxonomy-icon img {
width: 16.8px;
height: 16.8px;
}
### Explanation:
1. **`position: relative;` on `.project-grid`:** This ensures that the `.term-description` is positioned relative to the grid container.
2. **`position: absolute;` on `.term-description`:** Makes the description overlay the image.
3. **`bottom: 0;` on `.term-description`:** Aligns the description at the bottom of the grid.
4. **`overflow: hidden;` on `.project-grid`:** Ensures that the image or any other content doesn't overflow the container.
### HTML Structure:
<div class="project-grid">
<div class="term-description">
<div><?php echo $term->name ?></div>
<div class="taxonomy-icon">
<img src="<?php echo get_stylesheet_directory_uri() ?>/icons/Shape.svg" alt="Icon" />
</div>
</div>
<img src="<?php echo $image ?>" alt="Project Image" />
</div>
### Result:
– The **description block** will appear as a blue bar overlaying the bottom of the image.
– The icon will be positioned inside the blue background to the right of the description text.
– The image will scale to fit its container while maintaining its aspect ratio.
—
### Updated CSS:
.project-taxonomy-grid {
display: flex;
justify-content: space-between;
gap: 20px;
flex-wrap: wrap;
}
.project-taxonomy-grid .project-grid {
flex: 1 1 30%;
position: relative; /* Enable positioning of child elements */
overflow: hidden; /* Ensure content stays within the grid area */
}
.project-taxonomy-grid .project-grid img {
width: 100%;
height: 229px; /* Consistent image height */
object-fit: cover; /* Prevent image distortion */
display: block;
}
.project-taxonomy-grid .project-grid .term-description {
position: absolute; /* Position above the image */
bottom: 0; /* Align to the bottom of the image */
left: 0;
right: 0;
background-color: #225BC0; /* Blue background */
color: #fff; /* White text */
padding: 10px 16px;
font-family: 'Archia-medium', sans-serif;
font-size: 20px;
font-weight: 500;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
z-index: 2; /* Ensure it appears above the image */
}
.project-taxonomy-grid .project-grid .term-description .taxonomy-icon {
padding: 12.6px;
background-color: #fff; /* White icon background */
border-radius: 50%; /* Circular background */
}
.project-taxonomy-grid .project-grid .term-description .taxonomy-icon img {
width: 16.8px;
height: 16.8px;
}
—
### Updated HTML:
<div class="project-grid">
<img src="<?php echo $image ?>" alt="Project Image" />
<div class="term-description">
<div><?php echo $term->name ?></div>
<div class="taxonomy-icon">
<img src="<?php echo get_stylesheet_directory_uri() ?>/icons/Shape.svg" alt="Icon" />
</div>
</div>
</div>
—
### Explanation:
1. **HTML Structure:**
– The “ comes first, followed by the `.term-description` in the DOM. This keeps the description below the image logically, but visually we bring it above the image.
2. **CSS Implementation:**
– **`position: absolute;` on `.term-description`:** Places the description on top of the image.
– **`z-index: 2;` on `.term-description`:** Ensures the description is above the image in stacking order.
– **`bottom: 0;` on `.term-description`:** Aligns the description to the bottom of the image.
3. **Visual vs Logical Order:**
– While the description comes after the image in the HTML, it is visually displayed over the image using the absolute positioning.
—
### Result:
– The description block will visually appear over the bottom part of the image.
– The image remains accessible and unaffected in the DOM hierarchy.
– This ensures better accessibility and maintainability.