【问题标题】:Bootstrap card-deck elements not getting the same proportions引导卡片组元素的比例不同
【发布时间】:2020-01-23 12:12:35
【问题描述】:

我显示卡片组是为了显示存储在数据库中的一组文章。这是我正在使用的非常简单的一段代码:

HTML

<div class="row">
    <div class="card-deck">
        <template is="dom-repeat" items="{{articles}}" as="article">
            <div class="col-12 col-md-4 mb-md-5">
                <div
                    class="card"
                    on-tap="showViewer"
                    data-id$="[[article.id]]"
                >
                    <img
                        class="card-img-top img-fluid vertical-image"
                        src$="{{getArticleImage(article)}}"
                        onerror$="this.src='{{defaultimage}}'"
                        alt="{{getArticleDescription(article)}}"
                    />
                    <div class="card-body d-flex flex-column justify-content-center py-2">
                        <div class="d-flex justify-content-start align-items-center mb-2">
                            <img class="icon-sm mr-2 img-fluid" src={{getFavIcon(article)}}>
                            <span class="medium-text">
                                {{getSources(article)}}
                            </span>
                        </div>
                        <p class="card-text primary-headline medium-text">
                            {{article.schema:headline}}
                        </p>
                    </div>
                </div>
            </div>
        </template>
    </div>
</div>

CSS

.vertical-image {
    width: 100%;
    height: auto;
    object-fit: cover;
    object-position: center;
}

.icon-sm {
    height: 20px;
    width: auto;
}

.medium-text {
    font-family: Raleway-Medium;
}

.primary-headline {
    font-size: 25px;
    line-height: 25px;
    text-align: justify;
}

根据Bootstrap documentation,使用card-deck 类应该使卡片组中的所有卡片具有相同的宽度和高度。但是,我没有实现这种行为。 Here你是一张照片,你可以看到我得到了什么。

实现卡片中的所有图像和所有卡片都具有相同的高度和宽度的正确方法是什么?

【问题讨论】:

    标签: css bootstrap-4


    【解决方案1】:

    检查这个。希望对您有所帮助。

    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>
    <div class="container">
        <div class="row">
            <div class="col-sm-4 py-2">
                <div class="card card-body h-100">
                    Card. I'm just a simple card-block.
                </div>
            </div>
            <div class="col-sm-4 py-2">
                <div class="card h-100 text-white bg-danger">
                    <div class="card-body">
                        <h3 class="card-title">Danger</h3>
                        <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
                        <a href="#" class="btn btn-outline-light">Outline</a>
                    </div>
                </div>
            </div>
            <div class="col-sm-4 py-2">
                <div class="card h-100 card-body">
                    Card. I'm just a simple card-block, but I have a little more text!
                </div>
            </div>
            <div class="col-sm-4 py-2">
                <div class="card h-100 border-primary">
                    <div class="card-body">
                        <h3 class="card-title">Primary</h3>
                        <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
                        <a href="#" class="btn btn-outline-secondary">Outline</a>
                    </div>
                </div>
            </div>
            <div class="col-sm-4 py-2">
                <div class="card h-100 card-body">
                    Card. I'm just a simple card-block.
                </div>
            </div>
            <div class="col-sm-4 py-2">
                <div class="card text-white bg-primary">
                    <div class="card-body">
                        <h3 class="card-title">Hello</h3>
                        <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
                        <a href="#" class="btn btn-outline-light">Outline</a>
                    </div>
                </div>
            </div>
        </div>
    </div>

    【讨论】:

    • 为每张卡片添加h-100解决了它们大小不同的问题。但是,每张卡片内的图像仍然有不同的大小。我怎样才能实现它们都具有相同的大小?我不知道他们会有什么维度,因为我正在从互联网上删除文章
    • 如果您通过 CSS 调整原始图像高度,它们将被压扁。要么你必须通过 Photoshop 制作相同的高度,要么保持原样。您的网格将全部等高。所以不用担心网格高度。
    • 没关系。我只需要所有图像具有相同的高度和宽度。我可以切断图像的顶部或底部,这就是我设置属性object-fit: cover 的原因,但我没有得到我期望的结果。你知道我怎样才能使图像都具有相同的大小,根据需要切断图像的侧面或顶部/底部吗?
    • 您需要添加图像容器 div 的高度才能使 ``object-fit:cover`` 工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 2021-08-12
    • 2018-07-01
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    相关资源
    最近更新 更多