Html/Css/Js:在 <i> 标签之前显示文本

Posted

技术标签:

【中文标题】Html/Css/Js:在 <i> 标签之前显示文本【英文标题】:Html/Css/Js: Display text before <i> tag 【发布时间】:2015-01-20 07:15:31 【问题描述】:

这是一个相当简单的问题,但我无法找到正确的解决方案。 我正在为我的传单地图绘制图例,我已经走到了这一步:

但是我想在色块之前显示0,而只在色块之后显示4。 我正在使用 i-tags 创建颜色。整个 JS 代码如下所示:

function getColor(d) 
            
              return   d > 4  ?  '#045a8d' : //4
                       d > 3  ?  '#2b8cbe' : //3
                       d > 2  ?  '#74a9cf' : //2
                       d > 1  ?  '#bdc9e1' : //1
                                  '#f1eef6';

    ...

    grades = [0, 1, 2, 3, 4];

...


div.innerhtml += '0 ';


     for (var i = 0; i < grades.length; i++) 
      div.innerHTML += '<i style="background:' + getColor(grades[i] + 1) + '"></i> ' + (!grades[i + 1] ? grades[i] : '');

CSS:

.legend 
    line-height: 18px;
    color: #555;

.legend i 
    width: 18px;
    height: 18px;
    float: left;
    margin-right: 0px;
    opacity: 0.7;

关于如何在颜色前显示 0 有什么建议吗?我敢打赌它很容易,但到目前为止我所尝试的一切都没有奏效。

【问题讨论】:

jsfiddle.net/0tLoL5v2 【参考方案1】:

因为 i 向左浮动,所以它们将 0 向右移动。如果您查看http://jsfiddle.net/73k05k7u/,我已将 0 和 1 放入一个跨度并将它们也向左浮动。所以现在它全部显示为内联。我还接听了将 4 添加到循环之外的调用,因为您可以在循环完成后执行此操作。使其更具可读性并且需要更少的比较。注意最佳实践,您应该构建一个字符串并设置一次 innerHTML 属性。

// CSS
.legend span
    float:left;



// JS
div.innerHTML += '<span>0 </span>';


 for (var i = 0; i < grades.length; i++) 
  div.innerHTML += '<i style="background:' + getColor(grades[i] + 1) + '"></i> ';     
 
div.innerHTML = div.innerHTML +  '<span>' +  (grades.length -1)+  '</span>';

【讨论】:

以上是关于Html/Css/Js:在 <i> 标签之前显示文本的主要内容,如果未能解决你的问题,请参考以下文章

HTML+CSS+JS实现 ❤️贪吃蛇游戏源码❤️

HTML+CSS+JS实现 ❤️贪吃蛇游戏源码❤️

IOS HTML+CSS+JS 总结

html,css,js,反弹的js效果

html/css/js/jq

html/css/js/jq