gpt4 book ai didi

javascript - 将每一行包裹在 span 中

转载 作者:行者123 更新时间:2023-11-28 04:48:02 25 4
gpt4 key购买 nike

我试图弄清楚如何将每一行副本包装在一个跨度中。例如,如果我有一个如下元素:

.body-copy {
position: relative;
width: 100%;
height: auto
}
<div class="body-copy">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est labour.
</div>

因此文本填充了其容器的宽度,我需要在文档加载、窗口加载和窗口调整大小时将每一行副本包装在 span 中。如果这可能的话?任何对此的建议将不胜感激!

最佳答案

好的,这是一种困惑但实用的方法来完成您所要求的任务。它的作用是在我们逐一添加单词时使用隐藏的 div 来测量原始宽度。然后,一旦达到宽度阈值,我们就会创建一个新的 span 元素,其中包含迄今为止收集的单词。清洗、冲洗。重复。最后,我们收集剩余的单词并将它们添加到自己的 span 中,并用新的 HTML 替换原始文本。您可以在文档加载或窗口大小调整时随时使用 wordWrap() 函数。我已向 span 元素添加了一些边框,以便您可以轻松查看标记的应用位置。

$(document).ready(function() {
wordWrap();
});

function wordWrap() {
var bdy = $(".body-copy");
var text = $(bdy).text();
var html = $(bdy).html();
var bWidth = $(bdy).width();
var words = text.split(" ");
var span = "";
var word = "";
var allSpans = "";
var lastWord = "";
$(words).each(function(i, w) {
if (lastWord != "") {
w = lastWord + " "+ w ;
lastWord = "";
};
word = w + " ";
span = span + word;
$(".body-copy-two").append(word);
if ($(".body-copy-two").width() >= bWidth) {
var wLen = word.length;
span = span.slice(0, -wLen);
lastWord = w + " ";
allSpans = allSpans + "<span>" + $.trim(span) + "</span>";
$(".body-copy-two").html("");
span = "";
word = "";
}
});
var lastSpan = "<span>" + $(".body-copy-two").text() + "</span>";
$(bdy).html(allSpans + lastSpan);
}
.body-copy {
position: relative;
width: 100%;
height: auto
}

.body-copy-two {
position: absolute;
visibility: hidden;
}

.body-copy span {
border: 1px solid black;
display:block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="body-copy">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est labour.
</div>
<div class="body-copy-two"></div>

关于javascript - 将每一行包裹在 span 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43192523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com