【问题标题】:Make Text in Link selectable with CSS使用 CSS 使链接中的文本可选
【发布时间】:2019-04-10 02:55:13
【问题描述】:

我正在开发一个收集著名语录的网站。引用的文本是做其他事情的链接 [...] 但我也希望用户可以选择和复制引用的文本。

但在几乎所有浏览器中,用户都无法轻松选择链接中的文本。

是否可以在 CSS 中覆盖它并让用户可以选择文本?

【问题讨论】:

  • 我认为首先你需要弄清楚你想象它是如何工作的。如果单击它没有带您到任何地方,您将如何访问该链接?如果无法点击,你会如何选择文本?

标签: html css hyperlink html-select


【解决方案1】:

在 Firefox 中,您可以通过按Alt 键选择部分超链接,然后像往常一样使用鼠标进行选择。因此,一种选择是使用jQuery 实现类似的功能:如果按下Alt 键(或您指定的键)并且鼠标指针位于链接上方,则禁用链接。释放密钥后,启用链接。 当然,您必须告诉您的用户如何进行选择。

【讨论】:

  • 显然这也适用于 Chrome。感谢您的提示!
【解决方案2】:

你可以,

第一步:

创建一个可拖动到锚标记的属性。

<a href="http://www.exaple.com" **draggable="false"**>Select Text From Here</a>

第 2 步:

使光标样式auto和用户选择必须是textall

a
{
    cursor: auto;
    -webkit-user-select: text;
    -moz-select: text;
    -ms-select: text;
    user-select: text;

}

【讨论】:

  • 这在某种程度上是有帮助的(让您通过链接开始选择部分),但如果您在链接上方时松开鼠标,则链接仍会被跟踪。
【解决方案3】:

这不是 CSS 的真正工作,因为这是功能,而不是渲染。这是一个棘手的问题,因为点击链接应该意味着跟随该链接,而打破这个链接会产生一个重大的可用性问题。

最好的方法是避免制作引用链接,并单独使用链接。例如,引用下方的学分或学分中引用资源的名称将是自然链接。如果您希望单击“做其他事情”,那么也许您应该使用与引用相关联的按钮,而不是链接。

【讨论】:

    【解决方案4】:

    你不能。但是,您可以让一个元素看起来像一个链接,但使用 JS 来实际处理它的“链接”部分。

    jQuery:

    $(".q").click(function() {
        window.location.href=$(this).attr('data-link');
    });
    

    HTML:

    <span data-link="link.html" class="q">text here</span>
    

    CSS(给它“手”光标)

    .q {
      cursor: pointer;
    }
    

    Demo

    我只会保留引用文本(无链接),然后在末尾添加一个较小的链接以获取更多信息或任何可能的信息。

    【讨论】:

    • 这仅在您选择整个链接或从中间到一端时才有效。如果你在中间选择一个词组,它会触发 windows.location
    • 此外,如果您使用 javascript 在常规文本上实现链接功能,则会为使用屏幕阅读器的人或在浏览器中禁用 javascript(根据公司政策或出于安全原因)的人创建一个主要的可访问性问题。 )
    • @ForteL.,很好。罗迪:是的。就像我说的,我不会这样做,只是提供一个潜在的解决方案。
    【解决方案5】:

    假设您有一个类似号召性用语链接的“框”,它的主要目的和用途是将用户带到一个新页面。不过,同样重要的是,一种“选择”一些该文本(例如地址、电话号码,或者在您的情况下 - 歌词)的方法,如下所示效果很好。

    需要注意的是,“可选”文本本身是不可点击的。但话又说回来,对于打算选择文本的人来说,这不会是一个问题。对于其他试图点击该链接的人来说,他们将不得不点击超出可选文本边界的一点点。

    <!-- See stylized version in CodePen link below -->
    <div class="box-link">
      <a href="#" class="box-link__anchor"><span>Apple Park Visitor Centre</span></a>
      <span class="box-link__text">10600 North Tantau Avenue<br />Cupertino, CA 95014</span>
    </div>
    

    CodePen 链接:

    https://codepen.io/mjoanisse/pen/YMNaae

    【讨论】:

      【解决方案6】:

      不,但您不应该在链接中包含大量文本 - 理想情况下,链接应该只有一两个词,而不是整个段落。

      【讨论】:

        【解决方案7】:

        如果没有看到您的网站在运行,我无法判断,但我怀疑问题在于您的链接标签包含的不仅仅是引号。

        如果链接显示为“成为或不成为——这就是问题”,那么选择它应该与选择任何其他问题相同。如果链接是“这里有一句名言:‘成为或不成为——这就是问题。点击这里做其他事情!”那么他们将无法选择中间的文本,而这正是他们想要的。

        确保您的链接文本只是他们想要选择的文本,并将其他任何内容放在标签之外,你会没事的。

        【讨论】:

        • 我认为 OP 希望允许他/她的用户选择报价的任何部分
        猜你喜欢
        • 2023-03-24
        • 2014-03-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-20
        • 2020-07-19
        • 2016-12-12
        • 2021-12-24
        • 2023-03-24
        相关资源
        最近更新 更多