【问题标题】:Text paragraph with fixed ratio within svgsvg中固定比例的文本段落
【发布时间】:2015-01-15 15:35:37
【问题描述】:

我使用 JavaScript 即时生成动态 SVG 图形。为此,应将一段文本添加到 svg 图像内具有固定纵横比的框中。文本长度可能在短文本长度和非常长文本长度之间有所不同。由于实际字体大小对我的目的并不重要,我使用 viewBox 属性在框中显示整个段落。 据我到目前为止研究和测试,svg 不提供任何自动换行功能,因此我可能会在foreignObject 中使用标准 HTML div 来使用 HTML 换行。

是否有可能根据其内容长度获得具有固定纵横比的 div? 我已经设法通过反复减小宽度来获得这样的 div,直到该比率或多或少符合目的。但是这种解决方案相当不精确,需要在将 div 实际插入 svg 之前将其添加到 DOM 中。有没有 CSS 解决方案?

【问题讨论】:

    标签: javascript html css svg


    【解决方案1】:

    不幸的是,没有人可以帮助解决这个问题,我实施了以下(或多或少可行的)解决方案:

    for(var i = 0; i < 200; i++){
        if($('#wrapper').width()/$('#wrapper').height() <= 5){
            console.log($('#wrapper').width()/$('#wrapper').height())
            break;
        }
        $('#wrapper').width($('#wrapper').width()*0.8);
    }
    
    for(var y = 0; y < 200; y++){
        if($('#wrapper').width()/$('#wrapper').height() >= 4.9){
            break;
        }
        $('#wrapper').width($('#wrapper').width()*1.02);
    }
    

    这种方法尝试以迭代方式将纵横比收敛到近似正确的比例。

    到目前为止,这不是一个最佳解决方案,但至少是一个可行的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多