Codeigniter3网站日程模块输入短描述时CSS样式错乱问题
问题根因
这是Bootstrap栅格浮动未正确清除导致的典型布局错位,和描述字段长度本身无关:
- 代码不符合Bootstrap栅格规范:所有带
col-*类的栅格列,必须是.row类容器的直接子元素,当前代码中tab-pane容器下直接放置循环输出的col-md-12块,外层缺少对应的row约束,浮动元素脱离了正常文档流 - 当描述文本较短时,单个日程项的整体高度由左侧窄列的日期、时间块决定,高度很小,下一个日程项的浮动列会漂移到上一行剩余的浮动空隙中,造成样式错乱;当描述文本较长时,右侧内容块高度足够撑起整行容器,刚好掩盖了浮动问题,所以显示正常。
修复方案
优先调整HTML结构,符合Bootstrap栅格使用规范,从根源规避浮动问题,修正后代码如下:
<div class="row"> <!-- Tab panes --> <div class="tab-content"> <div class="tab-pane active" id="upcoming-events" role="tabpanel"> <!-- 所有栅格列统一放在row容器内 --> <div class="row"> <?php foreach($data->result() as $row):?> <div class="col-md-12"> <div class="row"> <div class="col-md-2"> <div class="event-date"> <h4><?php echo date("d", strtotime($row->agenda_tanggal));?></h4> <span><?php echo date("M Y", strtotime($row->agenda_tanggal));?></span> </div> <span class="event-time"><?php echo $row->agenda_waktu;?></span> </div> <div class="col-md-10"> <div class="event-heading"> <h3><?php echo $row->agenda_nama;?></h3> <p><?php echo $row->agenda_deskripsi;?></p> </div> </div> <!-- 分隔线放在当前行内部,避免被浮动影响 --> <div class="col-md-12"> <hr class="event-underline"> </div> </div> </div> <?php endforeach;?> <div class="col-md-12 text-center"> <?php echo $page;?> </div> </div> </div> </div> </div>
如果不想大改现有结构,也可以直接给循环输出的每个col-md-12日程项加Bootstrap内置的clearfix类,强制清除两侧浮动,也能快速解决错位问题:
<div class="col-md-12 clearfix"> <!-- 原有日程内部内容保持不变 --> </div>
内容的提问来源于stack exchange,提问作者user3122286
相关产品推荐
相关产品推荐

