大括号下划线的动态文本

Posted

技术标签:

【中文标题】大括号下划线的动态文本【英文标题】:Dynamic text underlined by braces 【发布时间】:2014-08-22 10:40:00 【问题描述】:

我想用 round 大括号在单词下划线。这应该是 C# 文本的一部分,但如果它在 CSS 中更容易,没问题。我的问题是单词的长度可以变化,所以弓必须为每个单词计算。

我的第一个想法是使用 CSS box-shadow:

CSS:

#test 
  font-size: 50px;
  background: transparent;
  border-radius: 70px;
  height: 65px;
  width: 90px;
  box-shadow: 0px 6px 0px -2px #00F;
  font-family: sans-serif;

HTML:

<div id="test">Hey</div>

很遗憾,由于动态文本大小,我无法计算它们。

有没有更聪明的方法来解决这个问题?

【问题讨论】:

【参考方案1】:

如果您使用 span 标签,则无需计算宽度。

CSS:

.test 
  font-size: 50px;
  background: transparent;
  border-radius: 70px;
  height: 65px;
  box-shadow: 0px 6px 0px -2px #00F;
  font-family: sans-serif;

HTML:

<span id="test" class="test">Hey</span><br/>
<span class="test">Hey this is longer</span>

工作小提琴:http://jsfiddle.net/Ge8Q3/

【讨论】:

或者,如果需要&lt;div&gt;&lt;h1&gt;,或者其他块元素,在CSS中添加display: inline=block;达到同样的效果。示例:codepen.io/paulroub/pen/AhoIp @PaulRoub 好电话,我完全忘记了......但你有一个小错字:inline-block 啊。是的。但是,示例链接是正确的。似乎无法返回并编辑已回复的评论。【参考方案2】:

我找到了一种不同的方法。

工作小提琴: http://jsfiddle.net/6pEQA/1/

我使用了 javascript 并将宽度设为动态:

textWidth 函数取自here。

$.fn.textWidth = function()
    var self = $(this),
        children = self.contents(),
        calculator = $('<span style="white-space:nowrap;" />'),
        width;

    children.wrap(calculator);
    width = children.parent().width(); // parent = the calculator wrapper
    children.unwrap();
    return width;
;

$(document).ready(function()

    $('#test').css('width',$('#test').textWidth());

);

它也适用于 h1、div 或 span。你可以看看我的小提琴。因为它是使用 span 元素来计算元素的宽度。

【讨论】:

以上是关于大括号下划线的动态文本的主要内容,如果未能解决你的问题,请参考以下文章

查找大括号内的文本并替换包括大括号的文本

正则表达式提取方括号或大括号之间的文本

复制用大括号括起来的文本

通过删除大括号中的文本来更新列

notepad++正则表达式删除大括号之间的所有文本

在 PHP 中使用带有动态变量名的大括号