如何应用圆角边框来突出显示/选择

2024-03-26

我用过视觉工作室在线 http://visualstudio.com对于一个项目来说有一段时间,他们将圆形边框应用于在线代码查看器中的选择的方式非常有趣:

我尝试检查该元素并寻找某种自定义 CSS,但没有成功。

我有一种感觉,这需要一些复杂的“技巧”才能使其发挥作用,但这似乎很有趣,因为我以前从未见过它这样做。

他们如何能够将圆角边框应用于选区?

Note:选择时,正常选择是完全隐藏的,圆形选择就像常规选择一样跟随光标。不是在你选择了一些东西之后。

Edit: I have 创建了一个叉子 http://jsfiddle.net/c6p7dybg/1/@Coma 的答案应该在 Firefox 中工作,并在鼠标移动时选择:

$(document).on('mousemove', function () {

(在某些情况下,边界仍然可以使用。)


并不完美,但它正在工作:

http://jsfiddle.net/coma/9p2CT/ http://jsfiddle.net/coma/9p2CT/

删除真实选择

::selection {
   background-color: transparent;
}

添加一些样式

span.highlight {
    background: #ADD6FF;
}

span.begin {
    border-top-left-radius: 5px;
    border-bottom-left-radius: 5px;
}

span.end {
    border-top-right-radius: 5px;
    border-bottom-right-radius: 5px;
}

pre.merge-end > span:last-child {
    border-bottom-right-radius: 0;
}

pre.merge-end + pre > span:last-child {
    border-top-right-radius: 0;
}

pre.merge-begin > span:first-child {
    border-bottom-left-radius: 0;
}

pre.merge-begin + pre > span:first-child {
    border-top-left-radius: 0;
}

将每个字符包裹在节点元素中

var format = function () {

    var before = -1;
    var html = $.trim(editor.text())
    .split("\n")
    .reverse()
    .map(function (line) {

        var a = line.length === before ? 'merge-end' : '';
        before = line.length;

        return '<pre class="' + a + '"><span>' + line.split('').join('</span><span>') + '</span></pre>';
    })
    .reverse()
    .join('');

    editor.html(html);
};

获取选中的节点并突出显示它们,照顾它们的父母

var getSelectedNodes = function () {

    var i;
    var nodes = [];
    var selection = rangy.getSelection();

    for (i = 0; i < selection.rangeCount; ++i) {

        selection
        .getRangeAt(i)
        .getNodes()
        .forEach(function (node) {

            if ($(node).is('span')) {

                nodes.push(node);
            }
        });
    }

    return nodes;
};

var highlight = function (nodes, beforeNode) {

    var currentNode = $(nodes.shift()).addClass('highlight');
    var currentParent = currentNode.parent();

    if (beforeNode) {

        var beforeParent = beforeNode.parent();

        if (currentParent.get(0) !== beforeParent.get(0)) {

            currentNode.addClass('begin');
            beforeNode.addClass('end');
            beforeParent.addClass('merge-begin');
        }

    } else {

        currentNode.addClass('begin');
    }

    if (nodes.length) {

        highlight(nodes, currentNode);

    } else {

        currentNode.addClass('end');
    }
};

format();

$(document).on('mouseup', function () {

    $('.highlight').removeClass('highlight begin end');
    highlight(getSelectedNodes());
});

谢谢Tim Down https://stackoverflow.com/users/96100/tim-down for Rangy https://github.com/timdown/rangy!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何应用圆角边框来突出显示/选择 的相关文章

  • 如何使用 BeautifulSoup4 获取
    标记之前的所有文本

    我正在尝试为我的应用程序抓取一些数据 我的问题是我需要一些 HTML 代码如下 tr td This a class tip info href blablablablabla is a first a sentence br This a
  • setTimeout 调用期间超出最大调用堆栈大小

    我试图每 4 秒调用一次我的函数 这样它就会实时增加一个数字 由于某种原因 我不断收到错误 这是我的代码
  • 如何更改同一行元素的位置

    我有一个包含 3 个元素的块 最小值 产品库存 最大值 我需要做的就是找到一种方法将产品库存调整到两个值之间 我的猜测是问题应该出在这些线上 div class max inline parent div class inline bloc
  • 如何防止 HTML 文本孤儿?

    我经常在图像周围包裹文字 有时文字包裹起来很笨拙 如下所示 在 HTML 中 图像向左浮动 文本如下 p img src images image p p This is my David Copperfield em I was born
  • VSTS 包源不从上游源提取包 (nuget.org)

    我已经为我们的开发团队在 VSTS 上设置了一个新的团队项目 并且正在使用Package Management用于发布 NuGet 包的扩展 我还启用了公众nuget orgfeed 作为我们内部包 feed 的上游来源 按照推荐here
  • 在 Xcode 上创建配置文件

    我正在尝试在 iPhone 上调试应用程序 Xamarin Forms 我已经在我的 Windows PC 上安装了 Visual Studio 我正在其上编写应用程序 并在我的 Mac 上安装了 Visual Studio 和 Xcode
  • 如何使用 Visual Studio 2013 Community 创建 ionic 应用程序?

    有没有关于如何构建的教程Visual Studio 上的 ionic 应用程序 http blog ionic io announcing ionic templates for visual studio 有谁用过吗VS 中的离子模板 h
  • CSS位置绝对和全宽问题

    我想改变 dl 下面占据全屏宽度而不更改换行和包含它的标题元素 当我尝试定位 dl 元素 参见 problematic code 部分 下面 导航获取最大宽度为 1003px 的包装器的 100 我希望它在不改变换行和标题 div 的情况下
  • 弹性项目的等高子项

    我在创建 Flexbox 响应式网格时遇到问题 希望有人能给我指出正确的方向 我想要所有的 blockdiv 的高度相等 并且 bottomdiv 绝对定位到底部 这实际上在当前的解决方案中有效 但是当 的时候h2标题太长 达到了2行 我想
  • Fabric JS html 5 图像弯曲选项

    我想用html5工具制作图像曲线 我使用 Fabric js 作为 html5 画布工具 请指导我如何在杯子 玻璃 圆柱形或圆形产品等图像上制作弯曲图像 参考号图片如下 http vsdemo cwwws com Images Produc
  • 如何在两个 960.gs 框之间添加垂直线?

    我正在使用 960 gs 网格系统进行设计 在两个盒子之间添加一条细细的分隔垂直线的最佳方法是什么 宽度和颜色应该是可调的 我的计划是定义几个具有绝对位置和背景颜色的 div 类 每个可能的位置对应一个 并使用 JQuery 确保它与周围的
  • 淡化背景但不淡化文本

    我已经对 div 应用了 CSS 淡入 淡出解决方案 在很大程度上我对此感到满意 但是我只想将其应用于背景 而不是文本 我需要文本始终完全不透明 参见示例 http jsfiddle net howiepaul gUAPV 33 http
  • 显示文本,一条虚线,然后显示跨越页面宽度的更多文本[重复]

    这个问题在这里已经有答案了 我想要显示一些文本 然后是虚线 然后在同一行上显示更多文本在 HTML 页面上 例如 Name Engineer 我希望 名称 与左边框左对齐 工程师 与右边框右对齐 然后浏览器能够用重复的点填充两者之间的间隙
  • 如何修复错误嵌套/未闭合的 HTML 标签?

    我需要通过使用正确的嵌套顺序关闭任何打开的标签来清理用户提交的 HTML 我一直在寻找一种算法或Python代码来做到这一点 但除了PHP等中的一些半生不熟的实现之外 还没有找到任何东西 例如 类似的东西 p p ul li Foo bec
  • 如何在 jQuery 中获取会话中的值

    我是 jQuery 的初学者 我想在 HTML 页面中设置值 并且必须在另一个 HTML 页面中获取它们 这是我现在正在尝试的代码片段 要在会话中设置值 session set userName uname val 要从会话中获取值 ses
  • 实现github.com文件无缝文件导航

    我刚刚在浏览 github 存储库时注意到最近的变化 当您选择文件或文件夹时 新文件会滑入并推出旧文件 使用 jquery 很容易做到这一点 但真正不同的是 URL 本身实际上发生了变化 因此书签仍然有效 我一直在努力为我正在开发的图书导航
  • 如何使用CSS使整个div在悬停时改变颜色?

    我有以下内容 div class sidebar nav span2 div class sidebar link span Link 1 span div div class sidebar link span Link 2 span d
  • VC++ 代码 DOM 可以从 VS 插件访问吗?

    Visual Studio IntelliSense for VC 包括 完整 EDG C 解析器 http www edg com location c frontend 英特尔和其他公司也使用 由于插件可以访问 C Code DOM 如
  • 在多个 html 文件上运行 javascript

    我有一个包含 1000 个 html 文件的文件夹 我必须使用 xpath 从每个 html 中删除某些节点 所以我已经制作了javascript 我无法打开每个文件并通过 Firefox 控制台运行 javascript 我用的是linu
  • 仅当元素未分配类时,如何才能选择该元素?

    我正在修改现有 WordPress 主题的 CSS 主题有很多特殊样式的列表 附在 li 元素 正因为如此 有一个通用的list style none规则适用于 li li 元素 我想更新 CSS 以重新设置list style默认开启 l

随机推荐

  • 根据帖子内容添加 WordPress 类别

    我正在开发一个 Wordpress 网站 用户可以登录该网站并发帖 我想为他们的帖子添加一些功能 基本上 我想为用户提供使用保留字符为帖子分配类别的功能 因此 如果用户发布 我正在学习 programming 该帖子将被分配到编程类别 在
  • CSS水平滚动

    我正在尝试创建一个 div 包含一系列只能水平滚动的照片 它应该看起来像这样LINK http cssdesk com L6Dsa 然而 上述只能通过指定宽度来实现 div 其中包含照片 因此它们不会 自动换行 如果我不设置宽度 它看起来像
  • Flask 在哪里寻找图像文件?

    我正在使用 Flask 设置本地服务器 我当前想要做的就是使用index html 页面中的img 标签显示图像 但我不断得到error GET http localhost 5000 ayrton senna movie wallpape
  • 无法解析 Android 上的 MapActivity 类

    我有一个包含 11 种不同活动的应用程序 这些活动之一是 MapActivity 的扩展 它是用于数据可视化的地图 要进入此活动 用户必须首先完成启动活动 然后完成其他 3 个活动 启动MapActivity的代码是 Intent i ne
  • 自定义对话框太小

    我有一个实现自定义对话框的 Android 活动 应用程序运行正常 但对话框太小 我想显示更大的对话框 我怎样才能实现这一点 这是我的布局 xml
  • 在 system() 函数中使用变量 C++

    string line ifstream myfile aaa txt getline myfile line system curl exe b cookie txt d test line http example com http e
  • 如何清除node js中清除浏览器cookie的req.session?

    我在用 express 4 14 0 with express session用于保存用户名 用户登录后 我会将用户名保存在req session authorizedUser username将其显示在应用程序标题中 当浏览器历史记录被清
  • Vim 中的任务标签

    关于任务标签的两个问题 Vim 中还提供哪些其他任务标签 例如 TODO 有没有办法像 Eclipse IDE 一样制作自定义任务标签 对于自定义标签 我在 vimrc 中使用以下内容 您应该能够根据您的需要进行调整 if has auto
  • 跨平台上的 AES cbc 填充加密/解密(.net c# 和代号 one bouncy castle)

    加密 解密不能在跨平台上工作 我已使用此链接使用代号一内的充气城堡 AES 密码来加密 解密文本 J2ME 中使用 Bouncycastle 进行 AES 加密 解密的示例 https stackoverflow com questions
  • 从 C# winforms 应用程序将输出写入控制台[重复]

    这个问题在这里已经有答案了 可能的重复 如何在表单应用程序中显示控制台输出 窗口 https stackoverflow com questions 4362111 how do i show console output window i
  • 如何追踪 Ruby 代码中的内存泄漏?

    Question 我正在调试 rake 任务中的内存泄漏 我想查看以下调用堆栈 有生命的物体 最初分配这些对象的对象或行是什么 ruby prof 可以做到这一点吗 如果没有 我应该使用什么工具 Setup Gems 导轨 3 2 16 事
  • 在 Swift 中使用 UIAlertController 发生内存泄漏

    我使用这个简单的代码呈现一个简单的 UIViewController IBAction func addNewFeed sender UIBarButtonItem var alertView UIAlertController UIAle
  • 使用 JAR 加载 log4j.properties [重复]

    这个问题在这里已经有答案了 我有一个包含以下清单的 jar 文件 Manifest Version 1 0 Created By 1 7 0 07 Oracle Corporation Main Class test Main Class
  • Sklearn.KMeans:如何避免内存或值错误?

    我正在研究图像分类问题 并且正在创建一个词袋模型 为此 我提取了所有图像的 SIFT 描述符 并且必须使用 KMeans 算法来找到用作我的词袋的中心 这是我拥有的数据 图片数量 1584 SIFT 描述符的数量 32 个元素的向量 571
  • JAXB-XJC X属性访问器

    根据 JAXB 规范http jaxb java net 2 2 4 docs xjc html http jaxb java net 2 2 4 docs xjc html如果您想运行 JAXB XJC 编译器 您可能传递的扩展 参数之一
  • OpsHub VSO 迁移 - DataValidationException - 测试套件已存在

    在 OpsHub 从本地 TFS 2013 3 服务器迁移到 VSO 期间 我收到来自 OpsHub 的错误消息 com opshub exceptions DataValidationException OpbsHug 012017 名称
  • 从转义 ASCII 序列中读取 UTF8/UNICODE 字符

    我的文件中有以下名称 我需要将该字符串读取为 UTF8 编码的字符串 因此 test 303 246 303 270 303 245 txt 我需要获得以下信息 test txt 你知道如何使用 C 来实现这一点吗 假设你有这个字符串 st
  • 将输入传递到批处理文件中的程序提示符

    我正在使用 mpich2 并行运行模拟 我的工作站有相当严格的安全措施 每次运行模拟时都必须使用新密码进行注册 我必须输入 mpiexec register 然后提示我输入用户名 然后提示我输入密码 不幸的是 似乎没有办法在一行上将用户 通
  • 通过 Javascript 返回视图 MVC3 Razor 将值传递给控制器

    我是 MVC 的新手 我试图将使用地理位置获得的经度和纬度值传递给我的控制器 以便我可以使用这些值来识别并从数据库中提取正确的数据 这是我的 JavaScript function auto locate alert called from
  • 如何应用圆角边框来突出显示/选择

    我用过视觉工作室在线 http visualstudio com对于一个项目来说有一段时间 他们将圆形边框应用于在线代码查看器中的选择的方式非常有趣 我尝试检查该元素并寻找某种自定义 CSS 但没有成功 我有一种感觉 这需要一些复杂的 技巧