将 HTML 属性值拆分为多行

Posted

技术标签:

【中文标题】将 HTML 属性值拆分为多行【英文标题】:Break up HTML attribute values into multiple lines 【发布时间】:2021-09-24 17:15:30 【问题描述】:

有没有办法格式化 html 属性值,使它们跨越多行? 本质上,我问的是有没有办法在常规类型的 HTML 属性值中转义返回。

例如,在下面这个工作代码中,我们在一行中有href 属性值。

<head>
  <!-- Bootstrap CSS -->
  <link
    rel="stylesheet" 
    href= "https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"
  > <!-- href value above spans 1 line and wraps normally with text editors width -->
</head>
<body>
  <h1>Bootstrap has successfully applied because this font is sans-serif</h1>
</body>

我怎样才能让这种格式的unworking代码具有跨越multiple行的属性值才能工作?:

<head>
  <!-- Bootstrap CSS -->
  <link
    rel="stylesheet" 
    href= "https://cdn.jsdelivr.net/npm/
           bootstrap@5.0.2/dist/css/
           bootstrap.min.css"
  > <!-- href value above spans 3 lines -->
</head>
<body>
  <h1>
    Bootstrap hasn't applied due to the amount of 
    <mark>enter</mark> characters used in the <mark>href</mark> attribute
  </h1>
</body>

似乎一旦你将返回值添加到一个值中,整个值就会失败。我尝试了常规的 javascript 转义字符,但没有成功。

如何在 HTML 属性中成功添加返回(新行)价值观?

【问题讨论】:

我认为从规范的角度来看,您可以在 html 属性中添加新行,但它们无法被浏览器中的 link script 或其他标签识别 @ashishmaurya 所以这可以在不同的标签上工作吗?可能是 h1 标签上的类名? 是的,只是不要破坏你的类名(否则 CSS 将不起作用) 我不相信 HTML 属性有一个 line continue 构造。 即使它删除了换行符,我希望它用一个空格替换它,比如class='make-the- text-purple'(实际上,属性中还有空格,而不仅仅是换行符) .浏览器被告知有空格需要考虑,所以它会考虑,即使它对待其中的一些是特殊的。 【参考方案1】:

我不相信 HTML 属性具有“属性” continue 构造,例如 Javascript 或命令行中的 line continue。

所以这真的行不通:

// This is just whitespace, so I assume the browser will encode it
href="https://cdn.jsdelivr.net/npm/
      bootstrap@5.0.2/dist/css/
      bootstrap.min.css"

// Javascript variety
href="https://cdn.jsdelivr.net/npm/" +
     "bootstrap@5.0.2/dist/css/" +
     "bootstrap.min.css"

// Command line variety
href="https://cdn.jsdelivr.net/npm/" \
     "bootstrap@5.0.2/dist/css/" \
     "bootstrap.min.css"

它只是属性中的空格,或者像上面示例中那样与属性无关的引用字符串。

这是我能想到的最好的:

<script>
let link = document.createElement('link')

link.rel = 'stylesheet'
link.href = 'https://cdn.jsdelivr.net/' +
            'npm/bootstrap@5.0.2/' +
            'dist/css/bootstrap.min.css'

document.head.append(link)
</script>

也许可以做一些整理来查找和删除某些标签属性中不必要的空格。但是,如果重点是格式化浏览器的 View Source 标记以提高可读性,那将无法实现这一目的。

【讨论】:

是的,看起来 JavaScript 是这里唯一可能的途径。谢谢:jsfiddle.net/v653tuns【参考方案2】:

能否请您分解一下您的问题!我很难理解,但是如果您询问格式化代码,我会使用代码编辑器并查看它们是否是格式化代码的功能。在 vs code 中,它们是格式化代码的功能。但我不确定你有没有!对不起,如果你没有得到你所说的,但很高兴提出问题。继续努力吧!!! ?

【讨论】:

我不是在问文本编辑器如何格式化您的代码。我在问我是否可以使用转义字符等技术在属性值中使用enter 键。

以上是关于将 HTML 属性值拆分为多行的主要内容,如果未能解决你的问题,请参考以下文章

将“Section”中的一长行记录拆分为两行或多行

将单元格中的多个值拆分为多行 - Oracle SQL

通过解析列中的字符串值将表中的一行拆分为多行

将 pandas 中的一个单元格拆分为多行

使用 SSIS 将单个字段值拆分为第二个表中的多行

如何在 VS 代码拆分属性中阻止 Prettier 到多行?