javascript - 带有文本兄弟错位的 html 内联节点

标签 javascript html css text

我有以下 html:

<span as="0" style="display: block; -webkit-user-select: text; ">
"[TEXT]"
<span id="as_cursor" style="padding: 0px; margin:0px; width: 0px;"></span>
"[TEXT]"
</span>

我使用内部跨度作为标记,稍后使用 jquery.offset() 从中获取坐标。当此跨度与行尾重合时(在屏幕上呈现,实际文本中没有 eol 字符),内部跨度呈现在外部元素的开头(左上角),因此给出错误的偏移量 (0,0) .

有什么办法可以避免这种行为?目前只需要兼容 chrome 和 mozilla。

最佳答案

你没有得到偏移量的原因是因为 span 元素是内联的。要解决此问题,请将以下代码添加到 HTML 页面的 header 部分:

<style>
    .offsetFixed {
        display: inline-block;
    }

    #outerSpan {
        display: block;
        -webkit-user-select: text;
    }

    #as_cursor {
        padding: 0;
        margin: 0;
        width: 0;
    }
</style>

此外,对您的 HTML 进行以下修改:

<span class="offsetFixed" id="outerSpan" as="0">"[TEXT]"
    <span class="offsetFixed" id="as_cursor"></span>"[TEXT]"
</span>

然后您可以使用 jQuery 获取正确的偏移量:

$(document).ready(function () {
    var offset = $("#as_cursor").offset();
    alert(JSON.stringify(offset));
});

关于javascript - 带有文本兄弟错位的 html 内联节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7464646/

相关文章:

javascript - 使用 jQuery UI 而不是 Twitter Bootstrap V2 有什么优势?

javascript - 悬停时的 CSS Matrix3D 变换

javascript - R Shiny 无法使用外部 HTML 文件加载 css 文件

javascript - Canvas 上基于文本的倒计时

javascript - 用于将数字与两个和三个编号模式一起匹配的正则表达式

javascript - PHP 和 JS 中 cookie 数组的最佳性能选择?

jquery - 下拉导航自动宽度

html - flexbox:对齐 self 和对齐元素不起作用

javascript - 如何在不打开邮件客户端的情况下使用 JavaScript 发送电子邮件?

javascript - Vue 获取发布数据到 Controller asp.net mvc