【问题标题】:Changing bootstrap 4 - rows to cards or card deck将引导程序 4 - 行更改为卡片或卡片组
【发布时间】:2020-07-06 00:49:48
【问题描述】:

让引导卡的配置正常工作时遇到了一些问题。原始模板配置为每行 1 个项目和列中的部分。我想把它做成看起来类似于宝丽来的卡片,但坚持使用引导程序 4 以保持清洁。

原始模板(我删除了一些代码以缩短问题!)

<form action="<?php echo $action; ?>" method="post" name="userForm">
    
    <?php
    for ($i=0, $x=count($this->rows); $i < $x; $i++){
        $row = $this->rows[$i];
        $buyer = $userHelper->getUser($row->publisher_userid);
        
        
        }
    ?>
    <div class="row">
        <div class="col-md-1">
        <?php
        $attrib = 'width=56 height=56 class="img-polaroid"';
        $avatar = JblanceHelper::getLogo($row->publisher_userid, $attrib);
        echo !empty($avatar) ? LinkHelper::GetProfileLink($row->publisher_userid, $avatar) : '&nbsp;' ?>
        </div>
        <div class="col-md-6">
            <h3 class="media-heading">
                <?php echo LinkHelper::getProjectLink($row->id, $row->project_title); ?>
            </h3>
            <div class="font14">
                <strong><?php echo Text::_('COM_JBLANCE_POSTED_BY'); ?></strong>: <?php echo LinkHelper::GetProfileLink($row->publisher_userid, $buyer->$nameOrUsername); ?>
            </div>
            <div class="font14">
                <strong><?php echo Text::_('COM_JBLANCE_SKILLS_REQUIRED'); ?></strong>: <?php echo JblanceHelper::getCategoryNames($row->id_category, 'tags-link', 'project'); ?>
            </div>
            <div class="font14">
                <strong><?php echo Text::_('COM_JBLANCE_LOCATION'); ?></strong>: <span class=""><?php echo JblanceHelper::getLocationNames($row->id_location); ?></span>
            </div>
            <ul class="promotions">
                <?php if($row->is_featured) : ?>
                <li data-promotion="featured"><?php echo Text::_('COM_JBLANCE_FEATURED'); ?></li>
                
                <?php endif; ?>
            </ul>
        </div>
        <div class="col-md-3">
            <div>
                <i class="jbf-icon-tags"></i> <?php echo Text::_('COM_JBLANCE_BIDS'); ?> : 
                <?php if($sealProjectBids || $row->is_sealed) : ?>
                    <span class="badge badge-info"><?php echo Text::_('COM_JBLANCE_SEALED'); ?></span>
                <?php else : ?>
                <span class="badge badge-info"><?php echo $bidsCount; ?></span>
                <?php endif; ?>
            </div>
            <div>
                <i class="jbf-icon-flag"></i> <?php echo Text::_('COM_JBLANCE_STATUS'); ?> : <?php echo $model->getLabelProjectStatus($row->status); ?>
            </div>
        </div>
        <div class="col-md-2">
            <div class="bid_project_left text-center">
                <div><?php echo Text::_('COM_JBLANCE_AVG_BID'); ?></div>
                <?php if($sealProjectBids || $row->is_sealed) : ?>
                <span class="badge badge-info"><?php echo Text::_('COM_JBLANCE_SEALED'); ?></span>
                <?php else : ?>
                <span class="font16 boldfont"><?php echo JblanceHelper::formatCurrency($avg, true, false, 0); ?></span><?php echo ($row->project_type == 'COM_JBLANCE_HOURLY') ? ' / '.Text::_('COM_JBLANCE_HR') : ''; ?>
                <?php endif; ?>
            </div>
        </div>
        
    </div>
    
    
    
    <div class="lineseparator"></div>
    <?php 
    }
    ?>
    <?php if(!count($this->rows)){ ?>
    <div class="alert alert-info">
        <?php echo Text::_('COM_JBLANCE_NO_PROJECT_POSTED'); ?>
    </div>
    <?php } ?>
    <div class="pagination pagination-centered clearfix">
        <div class="display-limit float-right">
            <?php echo Text::_('JGLOBAL_DISPLAY_NUM'); ?>&#160;
            <?php echo $this->pageNav->getLimitBox(); ?>
        </div>
        <?php echo $this->pageNav->getPagesLinks(); ?>
    </div>
    <?php 
    $link_rss = Route::_('index.php?option=com_jblance&view=project&format=feed');
    $rssvisible = (!$config->showRss) ? 'style=display:none' : '';
    ?>
    <div class="jbrss" <?php echo $rssvisible; ?>>
        <div id="showrss" class="float-right">
            <a href="<?php echo $link_rss; ?>" target="_blank">
                <img src="components/com_jblance/images/rss.png" alt="RSS" title="<?php echo Text::_('COM_JBLANCE_RSS_IMG_ALT'); ?>">
            </a>
        </div>
    </div>
    <input type="hidden" name="option" value="com_jblance" />           
    <input type="hidden" name="task" value="" />    
</form>

我的最新版本是; (再次删除一些代码以首先关注布局。

<form action="<?php echo $action; ?>" method="post" name="userForm">
    <a href="<?php echo $link_search; ?>" class="float-right btn btn-outline-primary mt-3"><?php echo Text::_('COM_JBLANCE_SEARCH_PROJECTS'); ?></a>
    <div class="clearfix"></div>
    <div class="jbl_h3title"><?php echo $this->escape($this->params->get('page_heading', Text::_('COM_JBLANCE_LIST_OF_PROJECTS'))); ?></div>
    <?php
    for ($i=0, $x=count($this->rows); $i < $x; $i++){
        $row = $this->rows[$i];
        $buyer = $userHelper->getUser($row->publisher_userid);
        
        
        }
    ?>
    <div class="container-fluid mt-4 md-12">
        <div class="row col-lg-3 col-md-2 col-sm-12"> 
            <div class="col-auto mb-3">
                <div class="card h-100 mb-4">
                    <img class="img-responsive" src="<?php echo $projectimages[0]['thumb']; ?>">
                    
                
                    <div class="card-body">
                        <h3 class="card-title">
                            <?php echo LinkHelper::getProjectLink($row->id, $row->project_title); ?>
                        </h3>
                        <p class="card-text">
                            <strong><?php echo Text::_('COM_JBLANCE_POSTED_BY'); ?></strong>: <?php echo LinkHelper::GetProfileLink($row->publisher_userid, $buyer->$nameOrUsername); ?>
                        </p>
                        <p class="card-text">
                            <strong><?php echo Text::_('COM_JBLANCE_SKILLS_REQUIRED'); ?></strong>: <?php echo JblanceHelper::getCategoryNames($row->id_category, 'tags-link', 'project'); ?>
                        </p>
                        <p class="card-text">
                            <strong><?php echo Text::_('COM_JBLANCE_LOCATION'); ?></strong>: <span class=""><?php echo JblanceHelper::getLocationNames($row->id_location); ?></span>
                        </p>
                       
                    </div>
                </div>
        
            
          </div>
          

            
       </div>
    </div>        
    <!-- End of Card -->
    
    <div class="lineseparator"></div>
    <?php 
    }
    ?>
    <?php if(!count($this->rows)){ ?>
    <div class="alert alert-info">
        <?php echo Text::_('COM_JBLANCE_NO_PROJECT_POSTED'); ?>
    </div>
    <?php } ?>
    <div class="pagination pagination-centered clearfix">
        <div class="display-limit float-right">
            <?php echo Text::_('JGLOBAL_DISPLAY_NUM'); ?>&#160;
            <?php echo $this->pageNav->getLimitBox(); ?>
        </div>
        <?php echo $this->pageNav->getPagesLinks(); ?>
    </div>
    <?php 
    $link_rss = Route::_('index.php?option=com_jblance&view=project&format=feed');
    $rssvisible = (!$config->showRss) ? 'style=display:none' : '';
    ?>
    <div class="jbrss" <?php echo $rssvisible; ?>>
        <div id="showrss" class="float-right">
            <a href="<?php echo $link_rss; ?>" target="_blank">
                <img src="components/com_jblance/images/rss.png" alt="RSS" title="<?php echo Text::_('COM_JBLANCE_RSS_IMG_ALT'); ?>">
            </a>
        </div>
    </div>
    <input type="hidden" name="option" value="com_jblance" />           
    <input type="hidden" name="task" value="" />    
</form>

我遇到的问题是卡片是作为每行一张卡片创建的,左对齐,大约是页面/容器宽度的 1/3 或 1/4。在创建下一行之前,如何让它们从左到右流动,每行 3 或 4 个?我怎么不见了?非常感谢。

【问题讨论】:

    标签: php html css mysqli bootstrap-4


    【解决方案1】:

    你的结构应该是这样的:

    <div class="container">
        <div class="card-deck text-center">
            <?php
            for ($i = 0, $x = count($this->rows); $i < $x; $i++) {
                $row = $this->rows[$i];
                $buyer = $userHelper->getUser($row->publisher_userid);
            ?>
                <div class="col-sm-6 col-md-4 col-lg-3">
                    <div class="card mb-4">
                        <img class="card-img-top img-fluid" src="<?= $row['image']?>" alt="Card image cap">
                        <div class="card-body" style="height: 20rem">
                            <h4 class="card-title"><?= $row['title']?></h4>
                            <p class="card-text"><?= $row['desc']?></p>
                            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
                        </div>
                    </div>
    
                </div>
        <?php
            }
        ?>
        </div>
    </div>
    

    【讨论】:

    • 感谢您的建议:如上所述,在 php 标记之前开始
      会破坏容器并且不会像 linkRgds 那样创建卡片组
    【解决方案2】:

    这是对我有用的结构;

    <div class="row row-cols-1 row-cols-sm-2 row-cols-md-2 row-cols-lg-3 row-cols-xl-4">
    (php here)
          <div class="col mb-5">
                <div class="card h-100">
                    <div class="card-body">
                         <h5 class="card-title">
                         </h5>
                    </div>
                    <div class="card-body">
                    </div>
                </div>
          </div>
    </div>
    

    一旦指定列,卡片就会进入列内。

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 2020-07-22
      • 2020-05-16
      • 2021-08-12
      • 2023-03-23
      • 2020-12-23
      • 2016-12-26
      相关资源
      最近更新 更多