【问题标题】:Aligning Div To The Bottom of a Clickable Flip Card (Bootstrap 4)将 div 对齐到可点击翻转卡的底部(引导程序 4)
【发布时间】:2020-08-15 11:27:48
【问题描述】:

我有一个使用 bootstrap 和 js 制作的可点击翻转图像卡。我在卡片的背面有一些信息,一个标题,一个正文,然后是一些额外的信息。我希望将这 3 小段额外信息与卡片底部对齐。我已经将它们包装在一个 div 中并尝试添加类 "align-self-end" 但这不起作用。

这是我卡片的 html:

        <div class="card mb-4" style="max-width: 300px; min-width: 300px" data-clickable="true">
          <div class="card-inner">
            <img src="https://via.placeholder.com/1420x1933" class="card-img" alt="...">
            <div class="card-img-overlay">
              <h5 class="card-title">Card Title</h5>
              <p class="card-text info">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
                <div class="align-self-end">
                    <p class="card-text smallinfo"><b>1: </b>John</p>
                    <p class="card-text smallinfo"><b>2: </b>Smith</p>
                    <p class="card-text smallinfo"><b>3: </b>2008</p>
                </div>
            </div>
          </div>
        </div>

这里是密码笔(点击卡片翻转):https://codepen.io/Darlton29/pen/wvKqyBN

我希望&lt;div&gt; 标签内的三个&lt;p&gt; 标签位于卡片底部。非常感谢任何帮助,谢谢。

【问题讨论】:

    标签: javascript html css twitter-bootstrap bootstrap-4


    【解决方案1】:

    我刚刚修改了您的 HTML 标记中的一些内容并添加了一些额外的 CSS 代码

    <div class="container">
        <h2 style="margin-bottom: 3rem; margin-top: 1rem;">Align right in Bootstrap 4</h2>
        <div class="card mb-4" style="max-width: 300px; min-width: 300px" data-clickable="true">
            <div class="card-inner">
                <img src="https://via.placeholder.com/1420x1933" class="card-img" alt="...">
                <div class="card-img-overlay">
                    <div class="cardContent">
                        <h5 class="card-title">Card Title</h5>
                        <p class="card-text info">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
                    </div>
                    <div class="alignToEnd">
                        <p class="smallinfo"><b>1: </b>John</p>
                        <p class="smallinfo"><b>2: </b>Smith</p>
                        <p class="smallinfo"><b>3: </b>2008</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    <style>
        .card{
            width: 300px;
            min-height: 408px;
            -webkit-perspective: 1000px;
            perspective: 1000px;
            border: 0px;
            background-color: #fff;
            -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.0), 0 15px 40px rgba(0, 0, 0, 0.0);
            box-shadow: 0 5px 10px rgba(0, 0, 0, 0.0), 0 15px 40px rgba(0, 0, 0, 0.0);
        }
        .card-inner {
            position: relative;
            width: 100%;
            height: 100%;
            text-align: left;
            -webkit-transition: -webkit-transform 0.6s;
            transition: -webkit-transform 0.6s;
            -o-transition: transform 0.6s;
            transition: transform 0.6s;
            transition: transform 0.6s, -webkit-transform 0.6s;
            -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
        }
        .card-title {
            text-align: center;
            font-size: 1.7rem;
        }
        .info{
            font-size: 0.9rem;
        }
        .isbn {
            text-align: left;
        }
        .card.active .card-inner {
            -webkit-transform: rotateY(180deg);
            transform: rotateY(180deg);
        }
        .card img, .card-img-overlay {
            position: absolute;
            width: 100%;
            height: 100%;
            -webkit-backface-visibility: hidden;
            backface-visibility: hidden;
            top:0;left:0;right:0;
        }
        .card-img-overlay {
            -webkit-transform: rotateY(180deg);
            transform: rotateY(180deg);
            background:#444c43;
            color:white;
            position:relative;
        }
        .cardContent {
            padding-bottom:60px;
        }
        .alignToEnd {
            position:absolute;
            bottom:0;
            left:0;
            width:100%;
            display:-webkit-box;
            display:-ms-flexbox;
            display:flex;
            -webkit-box-align:center;
            -ms-flex-align:center;
            align-items:center;
            -webkit-box-pack:center;
            -ms-flex-pack:center;
            justify-content:center;
        }
        .alignToEnd > * {
            width: 100%;
            dispaly:flex;
            -webkit-box-align:center;
            -ms-flex-align:center;
            align-items:center;
            -webkit-box-pack:center;
            -ms-flex-pack:center;
            justify-content:center;
            text-align:center;
        }
    </style>
    

    【讨论】:

    • 首先我将 height 属性更改为 min-height 就好像你有长文本,这不会拉伸并且文本会溢出。 . 其次,我用 div .cardContent 包裹了内容,以使内容与底部的粘性文本分开,我给它一个 60px 的填充底部以防止它溢出绝对文本 接受的答案没有考虑到这个问题可能会发生,如果你有一个长文本,我做的最后一件事是为你的 CSS 代码添加前缀,以确保它在所有浏览器(IE、Safari 和 Edge ...)上都能正常工作
    • 你能更新你的codepen,这样我就可以看到发生了什么
    • 嗨,只需将.card img 设置为.card img {position:static;} 并将.card-img-overlay 设置为position:absolute; 即可解决此问题。
    • 您希望它们相互重叠吗?如果是这样,那么只需将此样式添加到 .alignToEnd -ms-flex-wrap:wrap;flex-wrap:wrap; 并增加 .cardContent 的填充
    • 尝试将其设置为flex-end,如果您有文字,则填充会影响
    【解决方案2】:

    很高兴你用 .

    你只需要添加这一段 css。

    .align-self-end {position:absolute;bottom:0}
    

    【讨论】:

    • 谢谢,没想到这么简单。
    猜你喜欢
    • 1970-01-01
    • 2020-07-28
    • 2018-09-30
    • 2015-03-08
    • 2014-03-09
    • 1970-01-01
    • 2016-10-31
    • 2013-11-25
    • 2021-04-20
    相关资源
    最近更新 更多