【问题标题】:How can I hide a CSS div using php when the div has no information in it?当 div 中没有信息时,如何使用 php 隐藏 CSS div?
【发布时间】:2012-03-19 08:20:53
【问题描述】:

我已经问过了,但我觉得我不够具体!

我正在寻找一种非常简单的方法来隐藏没有任何信息的 div。 - 它需要对客户来说很简单,这样他们就不必担心了。

Div 包含某些类别的 joomla 信息。

例如,在我的主模板上,我可能在左侧导航下方有一个 div,我可以选择它在哪些页面中显示模块,但当它不使用时,它仍然显示它的边框。

我也不想为网站使用许多不同的模板,只是能够使用许多模块位置,但是当它们不使用时,它们会被隐藏。

http://msc-media.co.uk/

看看,在我左边的导航下面。

如果有帮助,如果 joomla 没有在该页面上输出任何数据,我会尝试隐藏以下代码:

    <div id="lnav2">
    <jdoc:include type="modules" name="left2" />
    </div>

提前致谢

【问题讨论】:

  • 与其粘贴一堵文字墙并期待我们找出答案,不如直接指出您希望隐藏哪些 div?
  • 理论上,它们中的任何一个,样式都是完全相同的。我现在将其编辑下来。

标签: php css joomla joomla-template


【解决方案1】:

在 Joomla 中!模板您可以使用countModules 来确定是否为该职位设置了模块。所以你的代码可以这样包装:

<?php if ($this->countModules('left2')): ?>
    <div id="lnav2">
        <jdoc:include type="modules" name="left2" />
    </div>
<?php endif; ?>

这样&lt;div id="lnav2"&gt; 只有在该位置有活动模块时才会呈现。

【讨论】:

  • 完美无缝地工作,正是我正在寻找的解决方案,谢谢!
【解决方案2】:

查看 jquery :empty 选择器

http://api.jquery.com/empty-selector/

&lt;script&gt;$("div:empty").css('display', 'none');&lt;/script&gt;

将最新的 jquery 库加载到您的

&lt;head&gt;
&lt;script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"&gt;&lt;/script&gt;
&lt;/head&gt;

并将&lt;script&gt;$("div:empty").css('display', 'none');&lt;/script&gt; 上方的代码放在html 的头部或结束标记之前。这将检测空标签的所有实例。根据您要检测的内容相应地更改 div。

【讨论】:

  • 我不太确定如何在我的网站上实现此代码,我曾尝试过,但老实说,我根本没有深入研究过 javascript/jquery。你能看一下吗?
  • 嗯,现在好像已经实现了,但是一旦我添加了它,它就会从页面中删除 twitter 模块,而不是 nav 下方的 div...为什么会发生这种情况?
【解决方案3】:

您可以在页面上放置 jQuery 代码。比如:

$(function() {
    $('div').each(function() {
        if($(this).html() == '') {
            $(this).css('display','none');
        }
    }
});

【讨论】:

  • 它将在页面加载后运行。
  • 使用 :empty,正如@ckaufman 所说,要好得多。我学到了一些新东西:)
【解决方案4】:

您可以在您不想显示的标签内执行以下操作(如果为空):

<div id="rnav1a" <?php if(empty($variable)||!isset($variable)) echo 'style="display: none;"'; ?>>   <jdoc:include type="modules"
 name="right1" />
</div>

只需添加一个 css style="display:none;"摆脱那个障碍。

【讨论】:

    【解决方案5】:

    虽然在页面加载时隐藏 div 很好,但默认情况下将 div 设置为 display: none 并在它有内容时显示它会更简洁。此外,仍应将其包装在 .ready 中以确保所有内容都已加载。

    jQuery( function( ) {
        jQuery( '#divid:not(:empty)' ).css( 'display', 'block' );
    });
    

    【讨论】:

    • 你基于什么理论认为默认隐藏每个 div 更好(或者你说的“更干净”)?在我看来,情况要糟糕得多——近乎荒谬。
    • @Madmartigan 因为如果您默认显示,则 div 可以在 jQuery 运行之前出现在用户屏幕上,然后闪烁消失。与FOUC基本相同。由于 OP 的目标是避免显示空 div,因此最好不显示 div 并在有内容时将其弹出。你到底是从哪里得到这个“隐藏每个 div”的想法的?我从来没有说过类似的话。我说要隐藏“div”——这是单数,意思是 ONE。不是全部。
    • 抱歉,我误会了。但是,我仍然不明白:set the div to display: none by default, and show it if it does have content... 为什么不只是 not 具有 内容的元素上设置 display: none ?我认为 OP 没有可行的方法来检查服务器端的内容是否为空,所以无论如何它都没有实际意义。这是一个令人困惑的问题,没有多大意义,所以我不知道如何处理它。
    • 简单地说,我有一个 html/css 布局,其中包含一组 Div。如果其中一个 div 有信息,我希望它没有显示。
    猜你喜欢
    • 2013-04-29
    • 1970-01-01
    • 2012-08-05
    • 2011-07-10
    • 2011-10-11
    • 1970-01-01
    • 2018-02-01
    • 2015-08-04
    • 1970-01-01
    相关资源
    最近更新 更多