【发布时间】:2019-10-29 17:20:29
【问题描述】:
我有一个 HTML“块”代码,其中包含 HTML 和 JS,因此我可以轻松地将它包含在 PHP 中。我也希望它具有 CSS 样式,但根据标准,您不能“允许”这样做 - 虽然它可以工作,但它会使页面无效。 CSS 只允许在<head> 中使用,而不是在页面中间(至少在 HTML5.2 之前)。所以我考虑在头部附加名称相似但单独的 .css 文件,但使用 PHP 和 not JS(为了性能)
<head>
<!-- PHP needs to include button.css here AFTER $App->INC("button"); has been called -->
</head>
<body>
<?php
$App->INC("button");
//This basically does 'require_once("button")';
//What do I need to add to the INC method to include css file in the head?
//Similar to $("head").append() but with PHP
?>
</body>
应将同名的 css 文件添加到 <head> 部分。
附言: 这似乎是一个设计缺陷,也可能是,但这是其背后的想法。
- 我有一段代码,当包含在
body 生成一个“加载屏幕”(或其他 UI 元素
除了
<body>之外,不能/不应该嵌套在其他任何地方 网站。 - 它的样式在一个单独的文件中
- 我发给其他用户
- 它们包含一个“App”类的方法,该方法只执行两个 things:包括文件本身和附近的css文件
- 然后他们只使用 1 行代码将其放在他们想要的位置,然后 不在其他 2-3 个地方,因此代码更易于管理
例子:
【问题讨论】:
-
为什么不能在它应该在的地方添加css?您可以使用 php 制作动态 css 文件。
-
PHP needs to include button.css here AFTER $App->INC("button"); has been called- 为什么?为什么不直接使用<link>标签包含 CSS 文件? -
@waterloomatt 这可能是一个设计缺陷,但我一直认为这样做会更好:调用 $App->INC("btn");在正文中一次并在方法中添加头部包含而不是调用 $App->INC("btn");然后还通过链接包含 css 它带有“模块化”的想法,因此我可以将这两个文件发送给需要它们的其他用户(例如加载屏幕),然后他们只需将其包含一次,而无需去其他地方也包括样式。当你需要去 2 个不同的地方启用一个“模块”/chunk 时,它就变成了某种版本的“地狱”
-
我不确定我是否正确理解您要归档的内容。对我来说,这听起来是这样的:您希望有一段代码将模块(或其他)添加到您的应用程序中,并且此模块将代码添加到
body和head。也许您的应用程序应该为您的模块提供将内容注入head/body的功能。看看 WordPress 钩子系统的思路:wpsuperstars.net/wordpress-hooks -
一种可能的方法是包含一个具有默认样式的
default.css。然后用户可以在它下面添加一个custom.css文件(在<head>中),它将覆盖样式。例如,default.css 将具有.button { color: blue; },用户可以通过添加带有.button { color: red; }的 custom.css 文件来覆盖它。这样,用户可以简单地包含一个新的 CSS 文件,而不必自己自定义/覆盖 PHP 组件。只是一个想法。