当前位置: 首页 > 知识库问答 >
问题:

如何避免空格锚下划线w/o改变编码风格?

乐山
2023-03-14

看看下面的小提琴:

http://jsfiddle.net/DNhAk/14/

当您有一个文本包裹在锚/链接中的图像时,代码中图像和文本之间的空白会在文本之前的呈现页面中创建一个带下划线的空白。

当没有图像时,即使代码中有空白,也没有下划线空白。

我能看到避免带下划线的空白的唯一方法是在代码中消除空白。但是我讨厌为了改变呈现页面的显示而改变我的编码风格。无论如何,为了操纵页面的显示而修改HTML是错误的。这就像使用换行符(

是否有一个对我来说不太明显的CSS属性用于修复此问题?

由于某种原因,人们正在挂起我在代码中的图像边框和边距。我把它们放在那里只是为了让它看起来好看。它们与问题无关,因此我将它们删除并更新了小提琴,以便人们能够更清楚地了解问题所在。


共有3个答案

荀正谊
2023-03-14

您正在经历的行为是规范的一部分(http://www.w3.org/TR/html401/struct/text.html ) :

对于除PRE以外的所有超文本标记语言元素,空格序列分开单词(我们在这里使用术语单词来表示非空格字符序列)。当格式化文本时,用户代理应该识别这些单词,并根据特定书面语言(脚本)和目标媒体的约定来布局它们。

这种布局可能涉及在单词之间放置空格(称为单词间空格),但单词间空格的约定因脚本而异。例如,在拉丁语脚本中,字间空间通常呈现为ASCII空间(),而在泰语中,它是零宽度的字分隔符(​). 在日语和汉语中,通常根本不呈现单词间空间。

因此,通过在标记中添加一个后跟空白(换行符)的元素(img),您指示代理将您的图像解释为“单词”,并根据代理设置的语言添加空白。如果要从结果中删除此空白,则需要将其从标记中删除。

或者,您可以从标记中完全删除图像,并将其作为锚上的背景,从而从标记中删除任何演示片段。这里的例子:

<a href='#' class="imglink">
There is
<em>no</em>
underlined whitespace at beginning of this text</a>

CSS:

.imglink {
min-height: 50px;
background: transparent url("http://www.cadcourse.com/winston/Images/SoccerBall.jpg") no-repeat;
background-size: 50px 50px;
display: block;
padding-left: 55px;
line-height: 50px
}

当然,这种方法有一些缺点,但它是一种潜在的解决方案,这取决于您的其他约束条件。

http://jsfiddle.net/hellslam/pvHK8/

欧阳向文
2023-03-14

您可以使用一些CSS模拟效果:

img {
    border: 1px solid #CCC;
    padding: 10px;
    vertical-align: middle;
    float:left;
}

a {
    display:block;
    height:70px;
    line-height:70px;
}

http://jsfiddle.net/DNhAk/8/

暴招
2023-03-14

您可以为a元素设置CSS,如下所示:

a {
    display: inline-block;
}
 类似资料:
  • 问题内容: 我想用字符串中的下划线替换空格,以创建漂亮的URL。因此,例如: 我在Django中使用Python。可以使用正则表达式解决吗? 问题答案: 您不需要正则表达式。Python有一个内置的字符串方法可以满足您的需要:

  • 问题内容: Python教程说:“在运算符周围和逗号后使用空格,但不要直接在括号结构内使用:a = f(1,2)+ g(3,4)”。“不直接在包围结构内”到底是什么意思? 问题答案: 这可能来自PEP 8-Python代码样式指南 。具体来说,请参见“表达式和语句中的空白”部分。 从该部分:

  • 我有一个图形,我想在文本周围显示一个边框。对于添加或删除边框,我的代码工作了一次,但是我的事件mouseEnter/mouseLeave工作了多次。这是为什么? 所有BarChart(Recharts API): 显示我需要将边框放置在其上的条形图旁边的文本的代码:

  • 问题内容: 我正在尝试使用此代码用_替换空格,它适用于字符串中的第一个空格,但所有其他空格实例均保持不变。有人知道为什么吗? 问题答案: 尝试 编辑 :或者如果您对RE厌恶 如果您要通过静态搜索和静态替换来搜索和替换字符串,则使用.split(“match”)。join(“replace”)来执行操作会更快,这似乎违反直觉,但它可以正常工作在大多数现代浏览器中都是这样。(在下一版本的Firefox

  • 问题内容: 我有一个PHP脚本,用户将输入一个名称,例如:, 但是,某些用户将使用空格而不是下划线,因此我的问题是: 如何在PHP中使用下划线自动替换空格? 问题答案:

  • 如果有人问起 Python 程序员他们最喜欢 Python 哪一点,他们一定会提到 Python 的高可读性。确实,对于 Python 来说,其高可读性一直是 Python 这门语言设计的核心。一个不争的事实是,相对于写代码而言,读代码才是更加平常的事情。 Python 代码有高可读性的一个原因就是其有着相对而言更加完善的编码风格准则和 「Python化」习语。 当 Python 老手(Pytho