2009-10-16 2 views
0

Есть ли способ указать на класс CSS по умолчанию для объекта?Как указать класс по умолчанию CSS, используя атрибут класса

Например, если пользователь зарегистрирован, я хочу указать другой класс CSS для управления стилем заголовка.

 
$css_class = ""; 
if($logged_in) 
    $css_class = "success" 

echo "[h1 class=".$css_class."] My Title [/h1]" 

Если пользователь вошел в класс CSS установлен на «успех»»в противном случае, он установлен в положение„“.

Я знаю, что это неприлично w3c иметь пустой класс, но есть способ, которым я могу просто указать на свойство H1 по умолчанию, а не на создание отдельного «не вошедшего в систему» ​​класса css?

+0

Вы используете серверный язык для своего проекта? –

+0

Да, я использую PHP. – justinl

+0

Пустой класс проверяет. –

ответ

0
$css = $logged_in ? 'success' : 'dummy-undefined-css-value'; 
echo "<h1 class=\"$css\">My Title</h1>"; 
+0

Спасибо Мэтт. Это подтверждается. Неправильная практика заключается в том, чтобы использовать такой фиктивный неопределенный класс? Или это приемлемая практика? (извините, что я новичок). – justinl

1

<h1 class="">My Title</h1> будет работать нормально (не уверен, что он пройдет проверку W3C, но он будет работать в все основные браузеры).

+0

Пустой класс CSS не будет проверяться. – 2009-10-16 21:16:15

+1

Если пустой CSS-класс не будет проверяться, вы можете просто использовать фиктивное значение CSS, то есть тот, у которого нет определенного определенного стиля. –

+0

Да, он отображается нормально, но он не проверяется. Мне просто интересно, есть ли способ ссылаться на базовый класс. например class = "self" или что-то в этом роде. что-то, что будет проверено :) – justinl

2

Почему бы просто не опустить атрибут класса, если i t пусто?

$css_class = ""; 
if($logged_in) 
    $css_class = " class=""success""" 

echo "[h1.$css_class.] My Title [/h1]" 

(Не уверен, истекающего кавычек в строке ... Я понятия не имею, какой язык вы используете ...)

+0

Он использует PHP, который ускользает с обратным слэшем, т. Е .: $ css_class = "class = \" success \ ""; –

+0

Привет, Guffa. Благодарю. Я делаю это в нескольких других местах, но в некоторых случаях copmlex я использую более одного класса для определения css объекта, поэтому наличие внутри класса var = "" не всегда работает. Однако это большая альтернатива большинству приложений решения. – justinl

2

Это не инвалид, чтобы иметь пустой string для имени класса. Атрибут class - это cdata-list, так что все может пойти туда, и оно все равно будет проверяться.

Однако вам нужно будет использовать кавычки вокруг значений ваших атрибутов, иначе вы не сможете выполнить пустой синтаксический анализ. Это все, что нужно сделать, чтобы всегда включать цитаты в любом случае.

echo '<h1 class="'.htmlspecialchars($css_class).'"> My Title </h1>' 
3

Пустой атрибут класса является недопустимым только при XHTML 1.1. Используя DOCTYPE XHTML 1.0, HTML 4.01 и HTML 5 подтвердят правильность.

Я бы не стал слишком болтаться на валидации, это очень полезно, но это не все и все, что нужно для веб-разработки. Единственный экземпляр, где я абсолютно уверен, что мои проверки на 100% в HTML на самом начале HTML и CSS-сборке, так как на этом этапе недопустимая разметка может привести к хауку с CSS. Как только я начинаю добавлять серверные и Javascript-взаимодействия, я не слишком беспокоюсь об этом.

Конечно, вы не должны просто игнорировать его, но пока вы знаете, что такое ошибки проверки, понять их и приняли непростое решение не исправить их, я думаю, что все в порядке.

+0

Спасибо, Рори. Приятно слышать, что, хотя валидация - отличный инструмент, это не «все-все-все», как вы говорите. И все в порядке, если все не на 100% – justinl

+1

Да. Валидация может быть очень удобной в диагностике проблем отображения, но есть моменты, когда вы можете посмотреть на ошибку проверки и сказать: «Я знаю, что это не вызывает проблем, я могу игнорировать ее». Это будет один из них. – ceejayoz

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>'; 
Смежные вопросы