代码之家  ›  专栏  ›  技术社区  ›  enkryptor

HTML中是否可以使用“换行”而不使用“回车”?

  •  1
  • enkryptor  · 技术社区  · 9 年前

    示例文本:

    And you, 
             could you have played 
                                   a nocturne
    On a waterspout for a flute?
    

    这是一首摘自 Vladimir Mayakovsky ,说明了他标志性的“阶梯形”诗句。

    原件:

    А вы
         ноктюрн сыграть
                         могли бы
    На флейте водосточных труб?
    

    另一个例子:

    Простенького паренька
    подцепила
              барынька.
    Он работать,
                 а ее
                      не удержать никак -
    бегает за клёшем
                     каждого бульварника.
    Что ж,
           сиди
                и в плаче
                          Нилом нилься.
    

    基本上有没有回车的换行。我使用预先格式化的文本来展示这个概念。是否可以在HTML中实现常规比例字体?

    3 回复  |  直到 9 年前
        1
  •  1
  •   user663031 user663031    9 年前

    您可以使用带有顶部边距的嵌套内嵌块来完成此操作。

    span { 
      margin-top: 1em; 
      display: inline-block; 
      vertical-align: top; 
    }
    <div>А вы<span>ноктюрн сыграть<span>могли бы</span></span></div>
    <div>На флейте водосточных труб?</div>

    转换所需内容的逻辑 ^ 此嵌套跨度格式中的标记为:

    function preprocess(poem) {
      return poem.replace(/\^.*$/m, function(m) { 
        return "<span>" + preprocess(m.slice(1)) + "</span>"; 
      });
    }
    
        2
  •  0
  •   sideroxylon    9 年前

    [您可以尝试在各种跨度元素中使用正负垂直对齐:]

    在OP注释后编辑。

    如果你能忍受将其包装在div中并添加段落,你可以使用换行符号并自动循环:

    str = $('#input').html();
    str = str.replace(/\^/, '<span>').replace(/\^/g, '</span><span>').replace(/<\/p>/, '</span><\/p>');
    console.log(str);
    $('#output').html(str);
    para = $('#output p');
    para.each(function() {
      span = $(this).find('span');
      for (var j = 0; j < span.length; j++) {
        span[j].style.verticalAlign = -90 * (j + 1) + '%';
      }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="input" style="display:none">
      <p>А вы ^ноктюрн сыграть ^могли бы</p>
      <p>На флейте водосточных труб?</p>
      <p>А вы ^ноктюрн сыграть ^могли бы</p>
      <p>На флейте водосточных труб?</p>
      <p>А вы ^ноктюрн сыграть ^могли бы</p>
      <p>На флейте водосточных труб?</p>
    </div>
    <div id="output"></div>

    [你可能需要调整百分比,以达到你想要的效果。]

        3
  •  0
  •   Oriol    9 年前

    使每行尽可能多 float: left div。

    • 分区1保持 And you,
    • 分区2保持 <br>could you...
    • 第3部分适用 <br><br>a nocturne

    如果您可以在输入/导入时正确解析诗歌,那么这种方法应该可以处理任何诗歌。

    div { float: left; }
    <div>And you,</div>
    <div><br>could you have played</div>
    <div><br><br>a nocturne</div>