6

我目前正在隐藏一个基于 if 语句的 div。我使用的方法是,使用echo一种css风格display: none

这是我正在做的具体事情:

<style>
  #content{
    <?php
      if(condition){
          echo 'display:none';
      }
    ?>
  }
</style>
<body>
    <div id="content">
       Foo bar
    </div>
</body>

我的问题是,这是隐藏 div 的好方法吗?浏览器是否有可能缓存样式并因此忽略echo-ed outcss样式?

4

6 回答 6

13

在你的 CSS(层叠样式表)中使用 Php 是不“正确的”,

此外,您可以在 HTML 中使用 Php:

<body>
    <?php if (condition){ ?>
        <div id="content">
           Foo bar
        </div>
    <?php } ?>
</body>

使用此代码,不会出现 div 块,(并且您不会将它与 JavaScript 一起使用),您可以使用它来隐藏您的 div :

 <body>
    <div id="content" <?php if (condition){ echo 'style="display:none;"'; } ?>>
       Foo bar
    </div>
</body>
于 2012-08-07T23:33:29.987 回答
2

为什么不创建一个类:

<style>
    .hidden {
        display: none;
    }
</style>

而不是用 PHP 应用它:

<div id="content" <?php print ( condition ? 'class="hidden"' : '' ); ?> >
于 2012-08-07T23:33:18.743 回答
1

这不是隐藏 div 的最佳方式。由于 PHP 是在服务器端解析的,因此您不妨让 if 语句包含或排除 div,而不是回显 CSS 类。唯一对 CSS 类有用的情况是,如果您打算稍后使用 JavaScript 在页面上显示 div,而用户在页面本身上。

于 2012-08-07T23:33:21.017 回答
0

你可以:

<div runat="server" id="theDiv"> 

Code behind is
{
theDiv.Visible = False;
}

或者

大多数人会使用javascript

这是以前的帖子,可以帮助您:

Javascript if else 语句隐藏和显示 div

于 2012-08-07T23:33:31.697 回答
0

是的,这是隐藏 div 的标准方式。关于浏览器缓存,它不应该缓存它,因为它不在外部样式表中。

于 2012-08-07T23:34:19.560 回答
0

我通常尽量避免在 CSS 中使用 PHP 条件;尤其是内联 CSS(在同一页面上的 CSS)。

我会将你的 CSS 保存在它自己的 CSS 文件中,并使用 PHP 条件来向 DIV 添加一个“隐藏”类 - 或者 - 根本不回显 DIV。

<link rel="stylesheet" type="text/css" href="style.css" />
<body>
    <div id="content" <?php if(conditional) : ?>class="hide"<?php endif;?>>
       Foo bar
    </div>
</body>

或者

<?php $class = (conditional) ? "hide" : ""; ?>

<link rel="stylesheet" type="text/css" href="style.css" />
<body>

    <div id="content" class="<?=$class?>">
       Foo bar
    </div>
</body>

或者

<link rel="stylesheet" type="text/css" href="style.css" />
<body>

    <?php if (conditional) : ?>
    <div id="content">
       Foo bar
    </div>
    <?php endif; ?>
</body>

很多时候需要输出 div 以便可以使用 JavaScript 重新显示(例如轮播、滑块等)

于 2012-08-07T23:38:37.307 回答