一、介绍

社交媒体网站盛行,人们常常会使用评论表达自己的观点,评论功能已然成为网站的一部分。

二、知识点

2.1 媒体对象

官方解释:这是一个抽象的样式,用以构建不同类型的组件,这些组件都具有在文本内容的左或右侧对齐的图片(就像博客评论或 Twitter 消息等)。

2.1.1 基础媒体对象

一个基础的媒体对象由四个部分组成:

  1. 媒体容器:用样式为 media 包裹在最外层。
  2. 媒体对象:常常是用户的头像或者昵称,样式 media-object
  3. 媒体主体:包裹媒体的文本内容部分,样式 media-body
  4. 媒体标题:媒体文本内容的标题,样式 media-heading
<!--代码部分-->
<div class="media">
<div class="media-left">
<a href="#">
<img src="img/header-animal-1.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</div>
</div>
</div>
</div>

效果图:

样式 media-leftmedia-right 用来控制对象(头像)放置的左右,若要将对象(头像)放在右边需要把 media-right 放在 media-body 下面。

<!--代码部分-->
<div class="media">
<div class="media-body">
<h4 class="media-heading">我是标题</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
<div class="media-right">
<a href="#">
<img src="img/header-animal-1.jpg" class="media-object">
</a>
</div>
</div>

效果图:

当然要是不想放在下面也是有可行办法的,用 pull-leftpull-right 代替 media-leftmedia-right 即可。

<!--代码部分-->
<div class="media">
<div class="pull-left">
<a href="#">
<img src="img/header-animal-1.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 左边</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</div>
<div class="media">
<div class="pull-right">
<a href="#">
<img src="img/header-animal-1.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 右边</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</div>

效果图:

注意:官方从 v3.3.0 版本开始就不再建议使用了 .pull-left.pull-right 了。

2.1.2 多层媒体对象

在使用微博等社交网站时,常常要在别人的评论下面回复别人的评论,这就需要用到媒体对象的嵌套。

使用方法是将整个 media 容器嵌套在上级的内部容器 media-body 内。

<!--代码部分-->
<div class="media">
<div class="media-left">
<a href="#">
<img src="img/header-animal-1.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 一级</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
<div class="media">
<div class="media-left">
<a href="#">
<img src="img/header-girl-3.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 二级</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
<div class="media">
<div class="media-left">
<a href="#">
<img src="img/header-girl-2.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 三级</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</div>
</div>
</div>
</div>
</div>

效果图:

虽说 Bootstrap 没有嵌套层数的限制,甚至可以这样无限嵌套。

但一般来说不论是美感还是条理上来看,两层就已经足够了。

2.1.3 媒体对象的对齐

媒体对象(头像)默认的对齐方式是顶部对齐,我们可以通过修改样式来改变对齐方式。使用方法:添加 media-middlemedia-bottom 使其中部或底部对齐。

<!--代码部分-->
<div class="media">
<div class="media-left">
<a href="#">
<img src="img/header-animal-1.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 顶部对齐</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</div>
<div class="media">
<div class="media-left media-middle">
<a href="#">
<img src="img/header-animal-1.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 中部对齐</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</div>
<div class="media">
<div class="media-left media-bottom">
<a href="#">
<img src="img/header-animal-1.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 底部对齐</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</div>

效果图:

2.1.4 媒体对象列表

评论往往是一排评论,即评论列表,这时候就要用到熟悉的 <ul> + <li> 组合了。使用方法:最外层用元素 <ul> 加样式 media-list 包裹起来,内部每个评论使用元素 <li> 加样式 media

只有一层的列表:

<!--代码部分-->
<ul class="media-list">
<li class="media">
<div class="media-left">
<a href="#">
<img src="img/header-animal-1.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</li>
<li class="media">
<div class="media-left">
<a href="#">
<img src="img/header-animal-1.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</li>
<li class="media">
<div class="media-left">
<a href="#">
<img src="img/header-animal-1.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</li>
</ul>

效果图:

两层嵌套的列表:

<!--代码部分-->
<ul class="media-list">
<li class="media">
<div class="media-left">
<a href="#">
<img src="img/header-animal-1.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 一级</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
<ul class="media-list">
<li class="media">
<div class="media-left">
<a href="#">
<img src="img/header-girl-3.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 二级</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</li>
<li class="media">
<div class="media-left">
<a href="#">
<img src="img/header-girl-2.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 二级</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</li>
</ul>
</div>
</li>
<li class="media">
<div class="media-left">
<a href="#">
<img src="img/header-animal-1.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 一级</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
<ul class="media-list">
<li class="media">
<div class="media-left">
<a href="#">
<img src="img/header-girl-3.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 二级</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</li>
<li class="media">
<div class="media-left">
<a href="#">
<img src="img/header-girl-2.jpg" class="media-object">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">我是标题 - 二级</h4>
<p>我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容;我是一大串重复的内容。</p>
</div>
</li>
</ul>
</div>
</li>
</ul>

效果图:

三、实战

用 Bootstrap 媒体对象知识做一个豆瓣日记部分的评论列表。

演示地址:https://mazey.cn/bootstrap-blueprints/lesson-fourth-comment/index.html,源码地址:https://github.com/mazeyqian/bootstrap-blueprints/tree/master/lesson-fourth-comment

版权声明

本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者后除和本文原始地址:https://blog.mazey.net/2613.html

(完)

Bootstrap实战 - 评论列表的更多相关文章

  1. 【读书笔记《Bootstrap 实战》】6.单页营销网站

    我们已经掌握了很多实用 Bootstrap  的重要技能.现在,是时候拿出更多的创意来帮助客户实现他们全方位在线营销的愿望了.此次将带领大家做一个漂亮的单页高端营销网站. 主要任务如下: □ 一个大型 ...

  2. 【读书笔记《Bootstrap 实战》】5.电子商务网站

    构建了公司网站之后,接下来就可以考虑设计一个在线商店了. 此次的设计以上一章的设计为基础, 只是添加了一个包含如下元素的新页面: □ 包含商品小图.标题和说明的产品网格: □ 位于左侧的变懒,用于按类 ...

  3. 【读书笔记《Bootstrap 实战》】4.企业网站

    上一章有对个人作品站点进行一些优化.本章,轮到我们充实这个作品站点了,补充一些项目,从而展示我们的能力.换句话说,我们要构建一个相对复杂的企业网站主页. 下面有几个成功企业的网站: □ Zappos ...

  4. 【读书笔记《Bootstrap 实战》】2.作品展示站点

    假设我们已经想好了要给自己的作品弄一个在线站点.一如既往,时间紧迫.我们需要快一点,但作品展示效果又必须专业.当然,站点还得是响应式的,能够在各种设备上正常浏览,因为这是我们向目标客户推销时的卖点.这 ...

  5. Bootstrap 实战之响应式个人博客 (二)

    阅读本博文前请参考:Bootstrap 实战之响应式个人博客 (一) 一.博客 1.结构 整体博客详情页的结构共包括四部分: 导航栏 博客主体内容 右侧栏:全局搜索框,广告位,推荐阅读 页尾 其中导航 ...

  6. Bootstrap 实战之响应式个人博客 (一)

    一.示例 1.主页 2.博客详情页 3.在线地址 在线地址:入口 Addition:这里使用github-page将自己的静态项目免费部署到线上. 如果你只是做一些简单的静态项目做展示,付出这么大的时 ...

  7. 再一波Python实战项目列表

    前言: 近几年Python可谓是大热啊,很多人都纷纷投入Python的学习中,以前我们实验楼总结过多篇Python实战项目列表,不但有用还有趣,最主要的是咱们实验楼不但有详细的开发教程,更有在线开发环 ...

  8. bootstrap实战教程

    bootstrap实战教程 bootstrap介绍 简介 Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目.全球数以百万计的网站都是 ...

  9. Vue把父组件的方法传递给子组件调用(评论列表例子)

    Vue把父组件的方法传递给子组件调用(评论列表例子) 效果展示: 相关Html: <!DOCTYPE html> <html lang="en"> < ...

  10. vue实现一个评论列表

    <!DOCTYPE html> <html> <head> <title>简易评论列表</title> <meta charset=& ...

随机推荐

  1. itext 生成 PDF

    itext 生成 PDF(一) 转自:https://blog.csdn.net/lcczpp/article/details/125424395   itext生成PDF excel 示例  转自: ...

  2. django中使用redis管道

    管道(事务),要是都成功则成功,失败一个全部失败 原理:将数据操作放在内存中,只有成功后,才会一次性全部放入redis 记住,redis中的管道可以开启事务处理,但是并没有回滚这一说法!跟mysql中 ...

  3. 【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包

    问题描述 部署在App Service For Windows 中的网站使用 Java Spring Boot + 静态文件 (浏览器端使用Vue.js 与服务器端Java Spring Boot交互 ...

  4. 从源码看webpack3打包流程

    在javascript刚刚流行时,前端项目通常比较简单,不需要考虑项目的开发效率.性能和扩展性等. 随着前端项目越来越复杂,需要更正式的软件开发实践,比如单元测试(unit testing).代码检查 ...

  5. 别再低效筛选数据了!试试pandas query函数

    数据过滤在数据分析过程中具有极其重要的地位,因为在真实世界的数据集中,往往存在重复.缺失或异常的数据.pandas提供的数据过滤功能可以帮助我们轻松地识别和处理这些问题数据,从而确保数据的质量和准确性 ...

  6. TypeScript实践总结

    下文将TypeScript简称ts 一.为什么要学 1.1 减少bug,提高质量 强语言,语法等方面异常,编译阶段"提前"报错 支持面向对象,软件设计与工程化更为成熟,更容易做单元 ...

  7. Prometheus技术分享——prometheus的函数与计算公式详解

    Prometheus与zabbix相比,它的强大之处就在于可以它可以使用的很多计算公式去获取自己需要的数据.当然,这里所涉及到的计算公式,也是我们普遍认为的难点所在.比如,我们要获取CPU使用率,使用 ...

  8. 巧用SQL语句中的OR查询完成业务新需求-2022新项目

    一.业务场景 目前参与开发的项目,之前的一个已上线的版本中有一类查询是根据两张表进行LEFT JOIN查询用来取数据, 主表中有一个字段field用来区分不同的数据类型比如说A/B/C.前面的版本中只 ...

  9. vscode 切换页签快捷键 自定义 Ctrl+H Ctrl+L 左右切换

    今天需要整理写资料,需要在多个页签之间切换,发现自定义了快捷. 好久不用这个快捷键,都快忘了. vscode 切换页签快捷键 自定义 Ctrl+H Ctrl+L 左右切换

  10. 移远4G数传模块EC800M开发总结之基本备忘

    一 前记 1 EC800M模块是移远推出的小尺寸低功耗针对可穿戴市场的数传产品.笔者在几个产品上使用过程中,遇到了一些问题. 这里做个备忘吧. 二 梳理 1 工具,这个串口的默认波特率为115200. ...