【问题标题】:Should I inject style tags into the head dynamically or include include style tags in the body?我应该动态地将样式标签注入头部还是在正文中包含包含样式标签?
【发布时间】:2017-08-01 06:32:46
【问题描述】:

我有一些通过服务器端调用嵌入到页面中的 html 内容。因此,当在服务器上编译页面的 html 时,会调用另一台服务器以返回一些 html,然后将其嵌入到正文某处的 div 中。问题是,这个内容包含它自己的 css。因此,我编写了一个脚本来将样式标签注入准备就绪的 HEAD,这在桌面浏览器上运行良好。然而,在移动设备上,有相当多的无样式内容闪现。我知道从技术上讲,您不应该在正文中包含样式标签,但是在这种情况下,将它们包含在正文中而不是将它们注入头部会产生更好的结果吗?

【问题讨论】:

  • 为什么不在一个css文件中编译所有可能的样式?
  • 或预加载样式文件,注入头部,完成后渲染 html 内容。

标签: javascript jquery css html


【解决方案1】:

在这种情况下,听起来正确的解决方案是修复您的架构,以便服务器端编译器可以在页头中包含远程页面的 CSS。这可能涉及将远程页面的 CSS 从那里的标记中分离出来,然后将其作为单独的文件抓取,以在编译期间包含在页面头中。

由于多种原因,正确的解决方案并不总是可行的,因此通常需要妥协。将 CSS 留在远程标记中,如果它产生您想要的结果,可能是您的最佳解决方案。或者,将 CSS 放入头部服务器端的其他一些技巧可能是合适的。你需要决定是否值得付出努力去做这些事情,如果你有可能在你的限制条件下完成这些事情。

【讨论】:

    【解决方案2】:

    这里有一些讨论。以我的经验,很多企业内容都是这样做的。这是否意味着这是正确的做法?我不知道。但根据我的经验,它肯定不会被拒绝。

    来源:https://www.w3.org/wiki/The_web_standards_model_-_HTML_CSS_and_JavaScript

    为什么要分开?

    代码效率:文件越大,下载时间越长,部分人查看的费用也越高(有些人仍按兆字节付费。)因此,您不希望将带宽浪费在每个 HTML 文件中的样式和布局信息杂乱无章的大页面上。一个更好的选择是使 HTML 文件精简和整洁,并在单独的 CSS 文件中只包含一次样式和布局信息。要查看此操作的实际案例,请查看 A List Apart Slashdot 重写文章,其中作者选取了一个非常受欢迎的网站并用 XHTML/CSS 重写了它。

    易于维护:接上一点,如果你的样式和布局信息只指定在一个地方,这意味着如果你想改变你只需要在一个地方进行更新您网站的外观。您希望在您网站的每个页面上更新此信息吗?我不这么认为。

    可访问性:视力受损的网络用户可以使用称为“屏幕阅读器”的软件通过声音而不是视觉来访问信息——它实际上是向他们读出页面,如果它具有适当的语义结构(例如标题和段落),它可以更好地帮助人们在您的网页中找到自己的方式。此外,如果使用最佳实践构建网页上的键盘控件(对于行动不便且无法使用鼠标的人来说很重要),它们的效果会更好。作为最后一个示例,屏幕阅读器无法访问锁定在图像中的文本,并且发现 JavaScript 的某些用途令人困惑。确保您的关键内容可供所有人使用。

    设备兼容性:由于您的 HTML/XHTML 页面只是简单的标记,没有样式信息,因此可以通过简单地应用替代方案来针对具有截然不同属性(例如屏幕大小)的不同设备重新格式化样式表——您可以通过几种不同的方式来做到这一点(查看 [dev.opera.com 上的移动文章] 获取相关资源)。 CSS 还允许您为不同的呈现方法/媒体类型指定不同的样式表(例如在屏幕上查看、打印出来、在移动设备上查看。) 网络爬虫/搜索引擎:您可能希望通过在 Google 或其他搜索引擎上搜索轻松找到您的页面。搜索引擎使用“爬虫”(一种专门的软件)来阅读您的页面。如果该爬虫无法找到您的网页内容,或者因为您没有将标题定义为标题等而错误解释了重要内容,那么您在相关搜索结果中的排名可能会受到影响。

    这只是一个好的做法:这有点“因为我这么说”的原因,但与任何专业的标准意识 Web 开发人员或设计师交谈,他们会告诉你分离内容、样式和行为是开发 Web 应用程序的最佳方式。

    其他 stackoverflow 文章:

    Using <style> tags in the <body> with other HTML

    Will it be a wrong idea to have &lt;style&gt; in &lt;body&gt;?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      • 2013-01-16
      • 2018-12-27
      • 1970-01-01
      • 2020-08-15
      • 2021-01-25
      • 2014-07-29
      相关资源
      最近更新 更多