【发布时间】:2021-07-13 10:39:38
【问题描述】:
我正在使用 ::before 和 content: ''; padding-bottom: 100% 技巧来尝试对图像强制执行 1:1 的纵横比。我还添加了overflow: hidden。但是,正如您从屏幕截图中看到的那样,图像溢出了我在::before 中创建的正方形之外。我根本不希望图像拉伸,所以它们都应用了object-fit: contain。
我关注了various threads 和CSS Tricks article 的纵横比。
我怎样才能确保图像整齐地适合该正方形并且根本不会溢出?
编辑:Code sandbox
代码如下:
Item.tsx
<StyledItemWrapper
className={item.animation}
onClick={() => {
clickItem(item);
}}
>
<picture>
<img src={item.image} alt={item.title} />
</picture>
<StyledItemInfo>
<p>{item.title}</p>
<p>{item.description}</p>
<p>${item.price.toFixed(2)}</p>
</StyledItemInfo>
<Button onClick={() => handleAddToCart(item)}>Add To Cart</Button>
</StyledItemWrapper>
Item.styles.ts
export const StyledItemWrapper = styled.div`
display: flex;
justify-content: space-between;
flex-direction: column;
position: relative;
border: 1px solid lightblue;
border-radius: 20px;
&::before {
display: block;
overflow: hidden;
padding-bottom: 100%;
content: "";
}
picture {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
max-height: 50%;
img {
border-radius: 20px 20px 0 0;
width: 100%;
height: 100%;
object-fit: contain;
}
}
button {
border-radius: 0 0 20px 20px;
}
`;
export const StyledItemInfo = styled.div`
font-family: Arial, Helvetica, sans-serif;
padding: 1rem;
height: 100%;
`;
【问题讨论】:
标签: html css reactjs styled-components aspect-ratio