wordpress实现时间轴效果

  • A+
所属分类:建博笔记

wordpress时间轴效果常见于博客历程页面中,以时间为轴,记录博客发展过程中的重要时刻。也有利用时间轴记录自己的心情,主题更新日志等情况,是一个比较实用且可丰富博客展示效果的功能。

本文主要讲解单侧伸缩式时间轴的实现过程,同时附上左右对称型时间轴的完整案例供需要的童鞋参考。

wordpress实现时间轴效果

 

单侧伸缩式时间轴最终效果

wordpress实现时间轴效果

也可以点击 博客历程 查看效果。

 

单侧伸缩式时间轴功能介绍

实现过程

  • 采用自定义列表的方式实现时间轴效果
  • 时间轴以年为单位进行分段,每一个“年”为一段

实现功能

  • 点击“年份”可以展开或闭合该段内容,默认情况下第一段展开,其余闭合
  • 鼠标移动到具体的某一行时,该行内容颜色发生变化,以突出鼠标所在当前行
  • 自适应屏幕,在不同屏幕尺寸下实现相同效果(貌似不是非常完美,后面会讲到)

相关说明

  • 使用begin主题的童鞋,可以直接套用,使用其他主题的童鞋,可能需要对样式做一定的调整
  • 我没有对时间轴在后台编辑器的样式做优化,所以在“可视化”模式下不能实时看到效果,只能看到基本框架结构
  • 增删内容时,建议在文本模式下操作

 

单侧伸缩式时间轴实现过程

首先,新建一个页面,页面标题自定义,然后切换到文本模式,复制以下代码到编辑器中

  1. <div id="history-time-line">
  2. <p class="year">年份1</p>
  3. <div class="time-line">
  4. <dl>
  5. <dt>日期1</dt>
  6. <dd>内容1</dd>
  7. <dt>日期2</dt>
  8. <dd>内容2</dd>
  9. <dt>日期3</dt>
  10. <dd>内容3</dd>
  11. </dl>
  12. </div>
  13. <p class="year">年份2</p>
  14. <div class="time-line">
  15. <dl>
  16. <dt>日期4</dt>
  17. <dd>内容4</dd>
  18. <dt>日期5</dt>
  19. <dd>内容5</dd>
  20. <dt>日期6</dt>
  21. <dd>内容6</dd>
  22. </dl>
  23. </div>
  24. </div>

代码说明:

  • 代码第2~12行为一个内容段,也就是一个“年”,这里我放了两个段作参考
  • 如果你需要多个段,就复制这部分代码到最后一个</div>的前面即可
  • “年份”:可任意输入,长度不限
  • “日期”:由于样式的关系需要写成“XX-XX”的格式,否则后面的蓝色小圆点会不在蚂蚁线的中间
  • “内容”:可任意输入,长度不限

这部分代码在后台编辑器“可视化”模式和“文本”模式下的效果:

wordpress实现时间轴效果

“可视化”模式下的效果

wordpress实现时间轴效果

“文本”模式下的效果

保存或发表该页面,然后打开style.css文件,在任意位置(或最后)插入下面代码

  1. /* 站点动态时间轴 */
  2. .time-line {
  3. padding:0 0 0 100px;
  4. }
  5. #history-time-line p.year {
  6. font-size: 18px;
  7. color: #08c;
  8. font-weight: bold;
  9. text-indent: 0;
  10. margin: 0 0 10px -20px;
  11. padding: 0 0 0 20px;
  12. border-left: 5px solid #08c;
  13. cursor: pointer;
  14. }
  15. .year-num {
  16. font-size: 16px;
  17. color: #999;
  18. margin: 0 0 0 10px;
  19. }
  20. .time-line dl {
  21. border-left: 1px dashed #08c;
  22. }
  23. .time-line dl dt {
  24. list-style:none;
  25. font-weight: normal;
  26. line-height: 100%;
  27. color: #999;
  28. position: relative;
  29. left: -60px;
  30. margin: 0;
  31. padding: 5px 0 0 0;
  32. }
  33. .time-line dl dt::after {
  34. position: absolute;
  35. top: 4px;
  36. margin: 4px 9px;
  37. content: '';
  38. width: 12px;
  39. height: 12px;
  40. border-radius: 50%;
  41. background-color: #08c;
  42. }
  43. @media screen and (max-width:700px) {
  44. .time-line {
  45. padding: 0 0 0 70px;
  46. }
  47. .time-line dl dt::after {
  48. left:44px;
  49. }
  50. }
  51. .time-line dl dt:hover:after {
  52. background-color: #00cc00;
  53. }
  54. .time-line dl dd {
  55. position: relative;
  56. top: -24px;
  57. margin: 0 0 -15px 20px;
  58. }
  59. .time-line dl dd a {
  60. color: #08c;
  61. }
  62. .time-line dl dt:hover,
  63. .time-line dl dd:hover {
  64. color: #00cc00;
  65. }
  66. .time-line dl dd a:hover {
  67. color: #999;
  68. }

代码说明:

第49行的一条代码主要用来适应屏幕宽度不大于700时让时间轴整体向左移动,如下图所示:

wordpress实现时间轴效果

第49行的第二条代码主要用来当屏幕宽度不大于700px时,使蓝色小圆点和蚂蚁线水平居中对齐。

上图就是没对齐时的效果,下图是对齐后的效果。

wordpress实现时间轴效果

但是,我在浏览器的F12(响应式模式设计)下查看时又是正常的,如下图所示:

wordpress实现时间轴效果

所以,为了保险起见,我还是加上了这条代码。

 

接下来,打开js/script.js文件,在大约172行的位置,找到代码

  1. // 文字展开
  2. $(".show-more span").click(function(e) {
  3. $(this).html(["<i class='be be-squareplus'></i>展开", "<i class='be be-squareminus'></i>折叠"][this.hutia ^= 1]);
  4. $(this.parentNode.parentNode).next().slideToggle();
  5. e.preventDefault();
  6. });

在其下面添加(也可以在任意位置)

  1. //博客历程时间轴展开
  2. $(document).ready(function(){
  3. (function(){
  4. $('#history-time-line p.year').each(function(){
  5. var num=$(this).next().children('dl').children('dt').size();
  6. var text=$(this).text();
  7. $(this).html(text+' <span class="year-num">共'+num+'条</span>');
  8. });
  9. var $all_time_line=$('#history-time-line .time-line'),
  10. $first_time_line=$('#history-time-line .time-line:first');
  11. $all_time_line.hide(1,function(){
  12. $first_time_line.show();
  13. });
  14. $('#history-time-line p.year').click(function(){
  15. $(this).next().slideToggle(400);
  16. return false;
  17. });
  18. })();
  19. });

这部分代码用来实现点击“年份”时,该段内容展开/闭合效果。

 

左右对称时间轴完整案例

另外,begin主题也集成了左右对称时间轴的功能,其效果如下图所示:

wordpress实现时间轴效果

左右对称时间轴

也可以点击 本站公告 查看效果。

Ps:背景图片显示不完整是截图工具的原因。

它主要用于分类列表页和公告的展示上,因此是一个单独的PHP文件,CSS部分是内联在这个文件中的。下面将这个文件的完整代码附上,供需要的童鞋参考。

左右对称时间轴模板展开

  1. <?php
  2. /**
  3. * 时间轴分类模板
  4. */
  5. get_header(); ?>
  6. <style type="text/css">
  7. #primary {
  8. width: 100%;
  9. }
  10. .post {
  11. margin: 0;
  12. padding: 0;
  13. background: none;
  14. border: none;
  15. box-shadow: none;
  16. border-radius: none;
  17. }
  18. .container {
  19. width: 98%;
  20. margin: 0 auto;
  21. }
  22. #timeline {
  23. position: relative;
  24. }
  25. #timeline::before {
  26. content: '';
  27. position: absolute;
  28. top: 0;
  29. left: 18px;
  30. height: 100%;
  31. width: 4px;
  32. background: #fff;
  33. box-shadow: 2px 1px 1px #ddd inset;
  34. }
  35. @media only screen and (min-width: 900px) {
  36. #timeline::before {
  37. left: 50%;
  38. margin-left: -2px;
  39. }
  40. }
  41. #timeline {
  42. margin: 15px 0;
  43. }
  44. .timeline-block {
  45. position: relative;
  46. margin: 10px 0;
  47. }
  48. .timeline-block:after {
  49. content: "";
  50. display: table;
  51. clear: both;
  52. }
  53. .timeline-block:first-child {
  54. margin-top: 0;
  55. }
  56. .timeline-block:last-child {
  57. margin-bottom: 0;
  58. }
  59. @media only screen and (min-width: 900px) {
  60. .timeline-block {
  61. margin: 30px 0;
  62. }
  63. .timeline-block:first-child {
  64. margin-top: 0;
  65. }
  66. .timeline-block:last-child {
  67. margin-bottom: 0;
  68. }
  69. }
  70. .timeline-img {
  71. position: absolute;
  72. top: 0;
  73. left: 0;
  74. width: 40px;
  75. height: 40px;
  76. border-radius: 50%;
  77. border: 3px solid #ddd;
  78. box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
  79. }
  80. .timeline-img.cdb {
  81. border: 3px solid #46c0e6;
  82. }
  83. .timeline-img {
  84. font-size: 20px;
  85. font-size: 2rem;
  86. font-weight: bold;
  87. text-align: center;
  88. line-height: 50px;
  89. }
  90. @media only screen and (max-width: 900px) {
  91. .timeline-img {
  92. font-size: 14px;
  93. font-size: 1.4rem;
  94. font-weight: bold;
  95. text-align: center;
  96. line-height: 33px;
  97. }
  98. }
  99. .timeline-img img {
  100. display: block;
  101. width: 24px;
  102. height: 24px;
  103. position: relative;
  104. left: 50%;
  105. top: 50%;
  106. margin-left: -12px;
  107. margin-top: -12px;
  108. }
  109. .timeline-img.time-picture {
  110. background: #fff;
  111. }
  112. .timeline-img.movie {
  113. background: #c03b44;
  114. }
  115. .timeline-img.location {
  116. background: #f0ca45;
  117. }
  118. @media only screen and (min-width: 900px) {
  119. .timeline-img {
  120. width: 60px;
  121. height: 60px;
  122. left: 50%;
  123. margin-left: -30px;
  124. -webkit-transform: translateZ(0);
  125. -webkit-backface-visibility: hidden;
  126. }
  127. .cssanimations .timeline-img.is-hidden {
  128. visibility: hidden;
  129. }
  130. .cssanimations .timeline-img.bounce-in {
  131. visibility: visible;
  132. -webkit-animation: bounce-1 0.6s;
  133. -moz-animation: bounce-1 0.6s;
  134. animation: bounce-1 0.6s;
  135. }
  136. }
  137. .timeline-content {
  138. position: relative;
  139. margin-left: 60px;
  140. background: #fff;
  141. padding: 20px;
  142. border: 1px solid #ddd;
  143. border-radius: 2px;
  144. box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
  145. }
  146. .timeline-content:after {
  147. content: "";
  148. display: table;
  149. clear: both;
  150. }
  151. .timeline-content h2 {
  152. font-size: 16px;
  153. font-size: 1.6rem;
  154. }
  155. .timeline-content p, .timeline-content .read-more, .timeline-content .date {
  156. }
  157. .timeline-content .read-more, .timeline-content .date {
  158. display: inline-block;
  159. }
  160. .timeline-content p {
  161. margin: 10px 0;
  162. line-height: 1.6;
  163. }
  164. .timeline-content .read-more {
  165. float: rightright;
  166. padding: 2px 10px;
  167. background: #acb7c0;
  168. color: #fff;
  169. border-radius: 2px;
  170. }
  171. .no-touch .timeline-content .read-more:hover {
  172. background-color: #595959;
  173. }
  174. a.read-more:hover {
  175. text-decoration: none;
  176. background-color: #424242;
  177. }
  178. .timeline-content .date {
  179. float: left;
  180. padding: 10px 0;
  181. opacity: .7;
  182. }
  183. .timeline-content::before {
  184. content: '';
  185. position: absolute;
  186. top: 16px;
  187. rightright: 100%;
  188. height: 0;
  189. width: 0;
  190. border: 7px solid transparent;
  191. border-right: 7px solid #fff;
  192. }
  193. @media only screen and (min-width: 768px) {
  194. .timeline-content h2 {
  195. font-size: 16px;
  196. font-size: 1.6rem;
  197. }
  198. .timeline-content p {
  199. font-size: 14px;
  200. font-size: 1.4rem;
  201. }
  202. .timeline-content .read-more, .timeline-content .date {
  203. font-size: 14px;
  204. font-size: 1.4rem;
  205. }
  206. }
  207. @media only screen and (min-width: 900px) {
  208. .timeline-content {
  209. margin-left: 0;
  210. padding: 1.6em;
  211. width: 45%;
  212. }
  213. .timeline-content::before {
  214. top: 24px;
  215. left: 100%;
  216. border-color: transparent;
  217. border-left-color: white;
  218. }
  219. .timeline-content .read-more {
  220. float: rightright;
  221. }
  222. .timeline-content .date {
  223. position: absolute;
  224. width: 100%;
  225. left: 122%;
  226. top: 6px;
  227. font-size: 16px;
  228. font-size: 1.6rem;
  229. }
  230. .timeline-block:nth-child(even) .timeline-content {
  231. float: rightright;
  232. }
  233. .timeline-block:nth-child(even) .timeline-content::before {
  234. top: 24px;
  235. left: auto;
  236. rightright: 100%;
  237. border-color: transparent;
  238. border-right-color: white;
  239. }
  240. .timeline-block:nth-child(even) .timeline-content .read-more {
  241. float: rightright;
  242. }
  243. .timeline-block:nth-child(even) .timeline-content .date {
  244. left: auto;
  245. rightright: 122%;
  246. text-align: rightright;
  247. }
  248. .cssanimations .timeline-content.is-hidden {
  249. visibility: hidden;
  250. }
  251. .cssanimations .timeline-content.bounce-in {
  252. visibility: visible;
  253. -webkit-animation: bounce-2 0.6s;
  254. -moz-animation: bounce-2 0.6s;
  255. animation: bounce-2 0.6s;
  256. }
  257. }
  258. @media only screen and (min-width: 900px) {
  259. .cssanimations .timeline-block:nth-child(even) .timeline-content.bounce-in {
  260. -webkit-animation: bounce-2-inverse 0.6s;
  261. -moz-animation: bounce-2-inverse 0.6s;
  262. animation: bounce-2-inverse 0.6s;
  263. }
  264. }
  265. .timeline-content .thumbnail {
  266. max-width: 100px
  267. }
  268. </style>
  269. <section id="timeline" class="container">
  270. <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  271. <div class="timeline-block wow fadeInUp" data-wow-delay="0.3s">
  272. <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
  273. <div class="timeline-img time-picture">
  274. <?php the_time( 'd' ) ?>
  275. <!-- <?php echo get_avatar( get_the_author_meta('email'), '64' ); ?> -->
  276. </div>
  277. <div class="timeline-content">
  278. <?php the_title( sprintf( '<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' ); ?>
  279. <figure class="thumbnail">
  280. <?php if (zm_get_option('lazy_s')) { zm_thumbnail_h(); } else { zm_thumbnail(); } ?>
  281. </figure>
  282. <p>
  283. <?php if (has_excerpt()){ ?>
  284. <?php the_excerpt() ?>
  285. <?php } else { echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 60,"..."); } ?>
  286. </p>
  287. <a href="<?php the_permalink(); ?>" class="read-more" rel="bookmark">阅读全文</a>
  288. <span class="date"><?php the_time( 'Y年m月' ) ?></span>
  289. </div>
  290. </div><!-- #post -->
  291. </div>
  292. <?php endwhile;endif; ?>
  293. <?php begin_pagenav(); ?>
  294. </section><!-- .content-area -->
  295. <script type="text/javascript">
  296. $("#timeline .timeline-img:even").addClass("cdb");
  297. </script>
  298. <?php get_footer(); ?>

 

全文结束!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: