Codeigniter:CSS 文件中的 base_url() 不起作用

Posted

技术标签:

【中文标题】Codeigniter:CSS 文件中的 base_url() 不起作用【英文标题】:Code Igniter : base_url() at CSS file doesn't work 【发布时间】:2013-02-14 06:38:55 【问题描述】:

base_url() 不适用于 CSS 文件...

这是我的 php

<link rel="stylesheet" type="text/css" href="<?=base_url()?>css/style.css"/>
<body>
</body>

这是我的 css/style.css :

body 
  background:#356aa0 url(<?=base_url()?>img/background.png) repeat-x;
  color:#fff;

文本颜色变为白色,但图像不显示... 如果我使用 url(../img/background.png),它会出现...... 但是当我打开 url localhost/project/index.php/control/function/var1/var2 时,它没有显示出来......

已经解决了,谢谢大家... :]

我在视图文件夹中创建 php 文件,如下所示:

<?php header("content-type: text/css"); ?>

body 
    background:url(<?=base_url()?>img/background.png);

然后我加载我刚刚在控制器上使用函数制作的 php 文件,然后我链接它:

<link type="text/css" rel="stylesheet" href="<?=base_url()?>control/style.php"/>

成功了,谢谢大家...

【问题讨论】:

您的短标签启用了吗?你能发布你的链接标签在浏览器的视图源中输出时的样子吗?而且你知道,你不能在 css 文件中发布 PHP 标签。 你能在.css文件中使用php吗? 没有。仅当文件是 php 生成的但不是。 【参考方案1】:

你应该这样做

文件结构

myapp/
    application/
    system/ 
    css/
    img/

然后在 css 中写这个

body 
  background:#356aa0 url(../img/background.png) repeat-x;
  color:#fff;
 

现在叫它

<link rel="stylesheet" type="text/css" href="<?=base_url()?>css/style.css"/>

这是标准的做法。此外,您的 css 不是动态的,因此您不必担心其中使用 php 代码。我在答案中提出的结构肯定会正确使用样式并加载图像。

【讨论】:

【参考方案2】:

CSS 文件不会被解析为 PHP 文件。如果您真的想做这样的事情,请将您的文件重命名为styles.php

打开页面并添加

header("content-type: text/css");

这告诉页面被视为基于文本的 CSS 文件。然后你可以简单地回显你剩余的 CSS,比如

echo "
body 
....
....
";

要修复无法从styles.php 访问的base_url(),请设置一个会话变量来保留它。您可以将其保存在您的 index.php 的 codeignitor 上。

$_SESSION['base_url'] = base_url();

现在,在 styles.php 中使用它。

background: url("<?php echo $_SESSION['base_url']; ?>"/../../some.jpg");

【讨论】:

我使用 php 中的 include 函数或 ?? @EsgiDendHigherCloud,是这样的 @EsgiDendHigherCloud,但请确保 base_url() 可以从 styles.php 中访问 为什么会这样?那styles.php(即使重命名为php)不是codeigniter PHP代码的一部分?请解释一下。 :// 我尝试了 ,但是 base_url() 没有'不起作用...但我尝试在视图中制作 php 文件并使用功能调用它,它的工作...谢谢男人...【参考方案3】:

从 CSS 文件中获取你的 base_url()。那将解决问题。您不能将 PHP 代码放在 CSS 文件中。

【讨论】:

【参考方案4】:

您不需要将 php 文件制作为 css。只需将您的图像文件放在“应用程序”文件夹之外,例如在 assets/img 上。然后编辑你的css文件

.error 
  color: #D8000C;
  background-color: #FFBABA;
  background-image: url('../img/error.png');
  background-size: 20px 20px;

调用css文件

  <link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/style.css" media="all">

这绝对会有效!。

【讨论】:

【参考方案5】:

如果您的文件夹结构是:

YourAppFolder/
    application/
           public/
               css/
               img/
         system/

然后在你的视图中使用它:

<link rel="stylesheet" type="text/css" href="<?=base_url()?>public/css/style.css"/>

并在 css 中将其用于图像:

background:#356aa0 url(../img/background.png) repeat-x;

【讨论】:

【参考方案6】:

试试这个..

替换这个:

<link rel="stylesheet" type="text/css" href="<?=base_url()?>css/style.css"/>
<body>
</body>

有了这个:

<link rel="stylesheet" type="text/css" href="<?php base_url(CSS/style.css)?>"/>
<body>
</body>

同时替换 css/style.css 中的以下内容:

body 
  background:#356aa0 url(<?=base_url()?>img/background.png) repeat-x;
  color:#fff;

有了这个:

body 
  background:#356aa0 url(../img/background.png) repeat-x;
  color:#fff;

注意:如果不起作用,请尝试使用一个点 (.) -> ./img/background.png

假设你的文件结构是这样的:

-ci
--application
--CSS
---file.css
--img
---background.png
--system
.
.
.

还有你的base_url() : " http://localhost/sitename/ "

【讨论】:

【参考方案7】:

或者你可以写...

 <link rel="stylesheet" type="text/css" href="<? echo base_url('your css file from base url') ?>/>

这是你的外部 css 文件

    body 
  background:url(<? echo base_url('your image path from base url')?>) repeat-x;
  color:#fff;

【讨论】:

以上是关于Codeigniter:CSS 文件中的 base_url() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 codeigniter 4 中加载 css 或 js 文件?

CodeIgniter资产目录字符串助手

无法访问 CodeIgniter 资产文件夹中的 CSS 文件,显示 404 错误

codeigniter 基目录中的 css/image/js 文件问题

我的 CSS 页面未在 codeigniter 中加载

CodeIgniter CSS 文件