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 资产文件夹中的 CSS 文件,显示 404 错误