有没有办法指向对象的默认CSS类?
例如,根据用户是否登录,我想指定一个不同的CSS类来控制标题的样式。
$css_class = ""; if($logged_in) $css_class = "success" echo "[h1 class=".$css_class."] My Title [/h1]"
如果用户已登录,则css类设置为“success”,否则设置为“”。
我知道有一个空白类是不合适的,但有没有办法可以指向默认的H1属性,而不是创建一个单独的“未登录”的css类?
答案 0 :(得分:3)
空类属性仅在XHTML 1.1下无效。使用XHTML 1.0的DOCTYPE,HTML 4.01和HTML 5将验证正常。
我不会对验证过于笼罩,它非常有用,但并不是Web开发的全部和最终目标。我绝对确保我的HTML 100%验证的唯一实例是在最初的HTML和CSS构建期间,因为在那个阶段无效的标记可能导致使用CSS的havock。一旦我开始添加服务器端和Javascript交互,我就不会过分担心它。
当然,你不应该只是默默地忽略它,但只要你知道验证错误是什么,理解它们,并做出一个不修复它们的巧妙决定,我认为没关系。
答案 1 :(得分:2)
为什么不省略class属性,如果它是空的?
$css_class = "";
if($logged_in)
$css_class = " class=""success"""
echo "[h1.$css_class.] My Title [/h1]"
(不确定字符串中引号的转义......我不知道你使用的语言是什么......)
答案 2 :(得分:2)
为className设置一个空字符串并不是无效的。
但是,您需要在属性值周围使用引号,否则无法进行空属性解析。无论如何,始终包括引号是正确的。
echo '<h1 class="'.htmlspecialchars($css_class).'"> My Title </h1>'
答案 3 :(得分:1)
<h1 class="">My Title</h1>
可以正常工作(不确定它是否会通过W3C验证,但它适用于所有主流浏览器)。
答案 4 :(得分:0)
$css = $logged_in ? 'success' : 'dummy-undefined-css-value';
echo "<h1 class=\"$css\">My Title</h1>";
答案 5 :(得分:0)
如果您打算在Matt Huggins' answer中有条件,并考虑您对Guffa's answer的评论,为什么不将条件转移到回声?这将为您提供最干净的HTML输出。例如:
$css_class = array();
if($logged_in)
{
$css_class[] = "success";
}
if($something_else)
{
$css_class[] = "some-class";
}
echo '<h1' .
empty($css_class)
? ''
: ' class="' . implode(' ', $css_class) . '"'
. '> My Title </h1>';