• Hexo 添加自定义的内置标签


    灵感

      想设计一个记录自已骑行的页面,显示时间、地点、路线图等信息。方便以后做一些留念。定位想实现下面类似的效果。参考:《特效》 
       
      
       
      实现方案也比较简单,反键查看源码。直接Copy,在加之改造即可。下面所述的方式是怎么提高代码的复用性。(内置标签)

    简单实现

       查看源码发现大致结构代码如下:

        <div class="location">
    <i class="location-icon" style="opacity: 1; top: 0px;"></i>
    <span class="location-text animate-init" style="opacity: 1; top: 0px;">XiaMen - China</span>
    </div>

      相关的CSS样式(优化后):

        .location {
    font-weight: bold;
    }

    .location-icon {
    position: relative;
    top: 10px;
    opacity: 0;
    display: inline-block;
    vertical-align: top;
    16px;
    height: 40px;
    background: url('../images/mini_location.png') no-repeat left center;
    background-size: 16px;
    }


    .animate-init {
    position: relative;
    top: -10px;
    opacity: 0;
    }

    .location-text {
    display: inline-block;
    vertical-align: top;
    font-size: 13px;
    line-height: 40px;
    margin-left: 10px;
    }

      将CSS样式追加到blog/themes/next/source/css/_custom/custom.styl中。 
       
      定位图标下载

      添加定位信息的时候,拷贝上面的HTML代码至MD文件中,修改span中text文本即可实现效果。(替换“XiaMen - China”)。 
       
      

    内置标签

      在Hexo中存在一些内置标签,比如blockquote,codeblock,pullquote等等。

      我们是否可以上面的HTML抽成一些内置标签?,比如:lsb

      通过查看自定义标签的标志,发现主题自带标签脚本都会存放在themes/xxx/script/tag/xxx.js中。

      参考脚本,编写了一个类似的lsb脚本。如下:

    /* global hexo */ 
    // Usage: {% locationAddr date, address %} 
    // Alias: {% lsb date, address %}

    function locationAddr(args) {
    args = args.join(' ').split(',');
    var date = args[0];
    var address = args[1] || '';

    if (!date) {
    hexo.log.warn('Location date can NOT be empty');
    }
    if(!address){
    hexo.log.warn('Location address can NOT be empty');
    }

    date = date.trim();
    address = address.trim();

    var lsb = ['<div class="location"><i class="location-icon" style="opacity: 1; top:0px;"></i><span class="location-text animate-init" style="opacity: 1; top: 0px;">'];

    date.length > 0 && lsb.push(alt+"-");
    address.length > 0 && lsb.push(address);
    lsb.push ('</span></div>');

    return lsb.join(' ');
    }

    hexo.extend.tag.register('locationAddr', locationAddr);
    hexo.extend.tag.register('lsb', locationAddr);


    使用方法:

    <div class="se-preview-section-delimiter"></div>

    {% locationAddr ”, ‘Test Address’ %} 
      或者 
     {% locationAddr ‘2017-01-22’, ‘Test Address’ %}  

     

  • 相关阅读:
    如何实现Echart不刷新页面,多语言切换下的地图数据重新加载,api请求数据加载,soketed数据实时加载
    web开发中各种宽高
    http请求方式和传递数据类型
    Hexo之傻瓜攻略
    SQL2008 R2安装功能选择
    Windows Server2012 R2中安装SQL Server2008
    用户权限管理数据库设计
    C#生成缩略图 (通用模式)
    CAD习题集
    菜鸟学习MVC实录:弄清项目各类库的作用和用法
  • 原文地址:https://www.cnblogs.com/LuisYang/p/9356404.html
Copyright © 2020-2023  润新知