javascript – 在形状中包装文本
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在形状中包装文本,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3663字,纯文字阅读大概需要6分钟。
内容图文
![javascript – 在形状中包装文本](/upload/InfoBanner/zyjiaocheng/819/8094268758d649c082645808f591dab4.jpg)
有没有办法为rhomboit文本块创建标记,其中每个新行都偏离前一个.
我找不到任何解决方案.可能为此我需要一些javascript.
解决方法:
据我所知,目前还没有跨浏览器的css方法来做到这一点.所以我戴上了我的创意帽并为你写了一些东西.
function rhomboit(obj, offset) {
var invert = false;
if(offset < 0){
offset = Math.abs(offset);
invert = true;
}
var line_height = getLineHeight(obj);
var els = document.querySelectorAll('.rhombus_side');
for (var i = 0; i < els.length; i++) {
els[i].parentNode.removeChild(els[i]);
}
var new_height = heightWithOffset(obj, offset);
var total_lines;
var line_offset;
while (true) {
total_lines = Math.ceil(new_height / line_height);
line_offset = offset / (total_lines);
var next_height = heightWithOffset(obj, offset + line_offset);
if (next_height === new_height) break;
new_height = next_height;
}
for (var i = 0; i < total_lines; i++) {
var left_offset = line_offset * (i + 1);
var right_offset = offset - left_offset + line_offset;
if(invert){
var hold = left_offset;
left_offset = right_offset;
right_offset = hold;
}
var div = document.createElement('div');
div.className = 'rhombus_side';
div.style.width = left_offset + 'px';
div.style.height = line_height + 'px';
div.style.float = 'left';
div.style.clear = 'left';
//div.style.backgroundColor = 'red';
obj.insertBefore(div, obj.firstChild);
div = document.createElement('div');
div.className = 'rhombus_side';
div.style.width = right_offset + 'px';
div.style.height = line_height + 'px';
div.style.float = 'right';
div.style.clear = 'right';
//div.style.backgroundColor = 'blue';
obj.insertBefore(div, obj.firstChild);
}
}
function heightWithOffset(obj, offset) {
var old_padding_left = obj.style.paddingLeft;
obj.style.paddingLeft = (offset + 1) + 'px';
var new_height = obj.clientHeight;
obj.style.paddingLeft = old_padding_left;
return new_height;
}
function getLineHeight(element) {
//Thank you : https://stackoverflow.com/a/4515470/482197
var temp = document.createElement(element.nodeName);
temp.setAttribute("style", "border:0;margin:0px;padding:0px;font-family:" + element.style.fontFamily + ";font-size:" + element.style.fontSize);
temp.innerHTML = "test";
temp = element.parentNode.appendChild(temp);
var ret = temp.clientHeight;
temp.parentNode.removeChild(temp);
return ret;
}
//Below this is just my showing it with positive and negative offsets
var last_offset = 150;
function toggleRhombus(){
last_offset *= -1;
rhomboit(document.getElementById('rhombus'), last_offset);
setTimeout(function(){toggleRhombus()},5000);
}
toggleRhombus();
<div id='rhombus' style='border:1px solid black;text-align:justify'>This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text This is text</div>
小提琴:http://jsfiddle.net/trex005/benjkr05/
>我无法宣称它的效率令人难以置信,但它完成了工作.
>必须在px中指定偏移量.
>您可能希望在文档调整大小时再次调用它.
如果要查看其工作原理,请取消注释两个样式行
内容总结
以上是互联网集市为您收集整理的javascript – 在形状中包装文本全部内容,希望文章能够帮你解决javascript – 在形状中包装文本所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。