You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让列表中的「View Listing」按钮始终固定在卡片底部?

问题:固定卡片底部按钮位置

我希望蓝色的「View Listing」按钮始终固定在卡片外框的底部,不受标题长度影响。目前按钮位置不一致,有的在中部,有的在底部。后续我会限制标题的最大字符数,避免过长标题导致所有列表卡片高度增加。这是我第一次独立使用HTML和CSS开发,代码可能存在不少问题。

我的HTML结构

<div className="listings-container">
            <h2 className="listings-title">Latest Listings</h2>

            <div className='listings'>

                <div className="card">
                    <div className="card-image">
                        <img src={ebay1} alt="..." />
                    </div>
                    <div className="card-content">
                        <h3>DARK GREEN FOREST NIKE AIR FORCE 1 LIMITED</h3>
                        <p>$15</p>
                        <button className="btn card-button">View Listing</button>
                    </div>
                </div>

                <div className="card">
                    <div className="card-image">
                        <img src={ebay2} alt="..." />
                    </div>
                    <div className="card-content">
                        <h3>NIKE AIR FORCE 1 UTILITY (GS) BLACK-GUM BROWN SZ 6Y-WOMENS [AJ6601-003]</h3>
                        <p>$100</p>
                        <button className="btn card-button">View Listing</button>
                    </div>
                </div>

                <div className="card">
                    <div className="card-image">
                        <img src={ebay3} alt="..." />
                    </div>
                    <div className="card-content">
                        <h3>nike air force 1 mid SF AF1 youth shoes size 6.5 mushroom</h3>
                        <p>$30</p>
                        <button className="btn card-button">View Listing</button>
                    </div>
                </div>
            </div>
        </div>

我的CSS代码

*{
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    font-family: 'Kumbh Sans', sans-serif;
}

.listings {
    display: grid;
    grid-template-columns: auto auto auto;
    justify-content: center;
}

.card {
    width: min-content;
    padding: 20px;
    margin: 20px 20px;
    background: #fff;
    box-shadow: rgba(6, 24, 44, 0.4) 0px 0px 0px 2px, rgba(6, 24, 44, 0.65) 0px 4px 6px -1px, rgba(255, 255, 255, 0.08) 0px 1px 0px inset;
    transition: .4s ease;
    border-radius: 12px;
    -webkit-border-radius: 12px;
    -moz-border-radius: 12px;
    -ms-border-radius: 12px;
    -o-border-radius: 12px;
}

.card .card-image {
    width: 300px;
    padding: 0 20px;
    background: #f4f7f8;
}

.card .card-image img {
    width: 100%;
    max-height: 250px;
    border-radius: 12px;
    -webkit-border-radius: 12px;
    -moz-border-radius: 12px;
    -ms-border-radius: 12px;
    -o-border-radius: 12px;
}

.card .card-content h3 {
    color: #222;
    font-size: 22px;
    margin-top: 20px;
}

.card .card-content p {
    color: #555;
    font-size: 18px;
    font-weight: 500;
    margin: 8px 0 22px;
    text-align: justify;
}

.card-button {
    display: inline-block;
    text-decoration: none;
    color: white;
    font-weight: 700;
    font-size: 1.125rem;
    width: 100%;
    padding: .5em;
    background: var(--complimentary);
    border: none;
    border-radius: .25em;
    -webkit-border-radius: .25em;
    -moz-border-radius: .25em;
    -ms-border-radius: .25em;
    -o-border-radius: .25em;
}

.card-button:hover {
    background-color: var(--lightBlue);
}

解决方案

只需修改几处CSS即可实现按钮固定在卡片底部:

  1. 修改.card样式,设置固定宽度并转为垂直flex容器,确保所有卡片尺寸一致:
.card {
    /* 替换原width: min-content; */
    width: 340px;
    display: flex;
    flex-direction: column;
    padding: 20px;
    margin: 20px 20px;
    background: #fff;
    box-shadow: rgba(6, 24, 44, 0.4) 0px 0px 0px 2px, rgba(6, 24, 44, 0.65) 0px 4px 6px -1px, rgba(255, 255, 255, 0.08) 0px 1px 0px inset;
    transition: .4s ease;
    border-radius: 12px;
}
  1. 修改.card-content,让它占据卡片内剩余空间并转为垂直flex容器:
.card .card-content {
    flex: 1;
    display: flex;
    flex-direction: column;
}
  1. 给按钮添加margin-top: auto,自动将按钮推到内容区域底部:
.card-button {
    display: inline-block;
    text-decoration: none;
    color: white;
    font-weight: 700;
    font-size: 1.125rem;
    width: 100%;
    padding: .5em;
    background: var(--complimentary);
    border: none;
    border-radius: .25em;
    /* 新增该行 */
    margin-top: auto;
}

如果要提前处理标题过长问题,可以给标题添加多行省略样式:

.card .card-content h3 {
    color: #222;
    font-size: 22px;
    margin-top: 20px;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

内容的提问来源于stack exchange,提问作者Jango

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:45:03