当您的博客变得越来越大时,您会遇到的一件事是,您需要将更多信息压缩到更小的空间中,才能显示您想要显示的所有信息。我为此做的一件事是添加了一个日期图标,然后在其上添加一个气泡,其中包含评论数量。
如您所见,此“盾牌”显示了日期、月份和评论数量。本文将向您展示如何实现这种效果!
首先,我使用的是由 Marek Sotak 制作的 日历图标。我还基于他的想法创建了特定月份的图像,因此您不必使用文本将月份添加到图像中,从而使日历图标的布局更加美观。
我们将从创建以下这样的日历图标开始
<p class="date month8">18</p>
使用以下 CSS
p.date {
width: 42px;
height: 10px;
padding: 18px 0 14px 0;
text-align: center;
}
这将创建日期框,现在我们需要为 12 个月中的每一个创建一条线
.month1 { background: url(images/cal_01.gif) no-repeat 0 0; }
.month2 { background: url(images/cal_02.gif) no-repeat 0 0; }
.month3 { background: url(images/cal_03.gif) no-repeat 0 0; }
.month4 { background: url(images/cal_04.gif) no-repeat 0 0; }
.month5 { background: url(images/cal_05.gif) no-repeat 0 0; }
.month6 { background: url(images/cal_06.gif) no-repeat 0 0; }
.month7 { background: url(images/cal_07.gif) no-repeat 0 0; }
.month8 { background: url(images/cal_08.gif) no-repeat 0 0; }
.month9 { background: url(images/cal_09.gif) no-repeat 0 0; }
.month10 { background: url(images/cal_10.gif) no-repeat 0 0; }
.month11 { background: url(images/cal_11.gif) no-repeat 0 0; }
.month12 { background: url(images/cal_12.gif) no-repeat 0 0; }
完成之后,图像将呈现如下
现在您可能已经注意到,到目前为止的 HTML 代码非常简单,这是 Marek 的构建方式,但它可访问性并不强。虽然如果您使用的是支持 CSS 的浏览器,它就很有意义,但如果您没有使用,它就没有那么有意义了。因此我们将将其更改为以下内容
<p class="date month8"><span>Aug</span> 18<span>th</span></p>
并将此添加到 CSS 中
p.date span { display: none; }
添加评论气泡
现在我们将进入最关键的部分:添加一个带有评论数量的气泡。要正确地执行此操作,我们需要在日期周围添加一个边界框,我们将其称为“盾牌”,并添加一个名为 commentscloud 的 div。它将如下所示
<div class="shield">
<p class="date month8"><span>Aug</span> 18<span>th</span></p>
<div class="commentscloud">5</div>
</div>
我们对 shield div 只做一件事,就是为其设置 position: relative;,这样我们就可以在 commentscloud 上使用 position: absolute;。完整的 CSS 如下所示
.shield {
position: relative;
}
.commentscloud {
position: absolute;
text-align: center;
top: -4px;
left: 22px;
width: 30px;
height: 24px;
padding: 3px 0;
background: url(images/bubble.png) no-repeat 0 0;
}
呈现结果如下
在 WordPress 中实现
CSS 非常简单:只需将其添加到主题的 style.css 中即可。对于 HTML,您需要打开主题的相应页面,例如 index.php,并查找 the_post()。您需要在需要显示徽章的位置添加以下代码
<div class="shield">
<p class="date month<?php the_time('n'); ?>">
<span><?php the_time('F'); ?></span>
<?php the_time('j'); ?>
<span><?php the_time('S'); ?></span>
</p>
<div class="commentscloud">
<?php comments_number('0', '1', '%'); ?>
</div>
</div>
这样应该可以正常工作。要查看此外观的示例,请访问我的网站:Yoast - 网站调整。
这篇文章是 Joost 的客座文章
Joost(发音为 Yoast,因此他的域名)de Valk 是一位知名的 WordPress 插件 作者和在线营销人员。他的博客涵盖了 WordPress、SEO 和在线营销方面的所有内容,此外,他还运营着 每周 WordPress 新闻稿。
由于我刚开始自托管自己的博客“它还没有上线”,所以这太酷了。我一直都在寻找方法来改进它。谢谢。
这是一个非常棒的想法,看起来很棒。
不错的技术。我要补充两点
1 调用 12 个单独的图像会导致轻微的性能下降。我会制作一个大型精灵图像,并使用 CSS 调整其背景位置。
2 如果您希望它在 IE6 中正常工作,则需要进行某种 PNG 修复。
我最近创建了一些类似的东西,但模仿的是 Apple iCal 图标,并使用了 CSS 精灵(@Peter)
主要是一个概念验证,因此没有经过彻底测试,但它似乎非常稳定。
示例在此
非常棒的概念。我一直都在重新设计我的网站,并且一直在寻找一种好的方法来显示日期和评论。您给了我一个很棒的想法!谢谢 :)
哇,谢谢 Chris,昨天我刚跟我的朋友说“老兄,真希望我知道 Chris 是如何在自己的个人网站上制作这些日期徽章的!”
谢谢您,但如果您要在示例中使用图像,最好在您的文章中提供它或提供指向它的链接。我找不到评论气泡 PNG。
由于这正是 Joost 在他自己的个人网站上使用的内容,我相信他不会介意您从这里获取它
http://yoast.com/wp-content/themes/yoast/images/bubble2.png
@Luke:我非常喜欢您在这里所做的事情。非常易读且整洁。
没有花很多时间在 CSS 上,看起来它应该可以在 IE7+、Safari 和 FF 中运行。
您会将它打包并在您的博客上发布吗?
@Peter:我选择不使用精灵,因为大多数页面只会显示 1 或 2 个月。您关于 pngfix 的说法是正确的 :)
不错!我也喜欢 Luke 的版本。
只是我不明白为什么图标中没有年份,也许在底部。我个人喜欢看到年份,越来越多的博客运行多年,并且文章可以通过搜索引擎找到。如果您点击结果,您会想知道该文章有多新。
但这只是我个人的看法 :),很棒的图标
我喜欢将评论与日期徽章结合起来的想法,但当您获得 1000 多条评论时会发生什么?显然,此设计只是为了教程,但这是实际网站需要考虑的一个因素!
@Paul 我很乐意遇到这样的问题 :P
@Joost
尽管页面上的重复次数有限,但使用精灵的原因是,它可以减少来自页面的 HTTP 流量以及到服务器的 HTTP 流量。一个图像会被缓存(只要它使用适当的标头提供),因此首次访问者只需进行一次请求,而不是两次或三次请求,而返回的访问者甚至不会进行一次请求。此外,如果您使用包含日历图形的搜索结果页面,则该页面可能会根据每页显示的结果数量请求最多 12 个图像。
在您的情况下,将月份标签添加到精灵中会导致图像大小的增加微乎其微。甚至可能低于与一个额外月份图形的网络 IO 相关的数据重量。对于像我的 iCal 示例这样的东西,大小增量更令人担忧,因为精灵还包括日期,因此文件大小增加了约 3 倍。但是,即使在面对 HTTP 流量减少以及文件大小仍然非常小的现实情况下,这也不是一件坏事。
当然,还需要额外的 CSS 来管理精灵,但同样,字节重量有限且已缓存。无论如何,值得考虑。
很棒的文章,谢谢分享!
不错——尽管可以像上面其他人指出的那样进行优化。我认为您还可以不使用内部段落来实现——只需将日期在盾牌 div 中居中对齐,然后相对于该日期重新对齐评论气泡。您也可以将评论气泡图像作为日历图像的一部分。
另外,我认为为所有月份制作重复的图像是不合适的——感觉不太对——我认为将简单的文本对齐在图像顶部就足够了。当然,如果人们调整文本大小,它看起来就不对了,但其他数字看起来也不对 :)
但我只是在吹毛求疵!这很棒,更多网站应该使用这种方式来简洁地显示他们的日期和评论信息。
@Joost 我也是 :/
哈哈
在我的主题中非常容易实现,这正是它所缺少的。
太棒了。我几个月前重新设计了我的网站,并找到了类似的解决方案:http://www.gilbertpellegrom.co.uk。我认为这是一种非常好的效果。
不错的文章。对我很有帮助。它非常棒。
print("代码示例");
很棒的文章,很好的建议,我会尝试一下。
太棒了
我喜欢它,谢谢。
您的网站与我访问的大多数网站相比是一个耳目一新的变化。当我刚开始访问网站时,我对互联网作为资源的潜力感到兴奋,但最初非常失望。您恢复了我的热情,我感谢您分享见解并帮助世界变得更美好的努力。
不仅对博客很有用。这将对我的其他一些网站有用......干杯,老兄。
一个有趣的看法,尤其是考虑到 WordPress 的普及。
我刚刚加入了这个网站,它看起来很棒。