Если у всех ваших дополнительных 12 классов есть дефис, вы можете назначить их с помощью селектора атрибутов с подстановочными знаками , примененного к классу .banner
, например:
.banner[class*="-"] p
Демо :
.banner[class*="-"] p {
color: red;
}
Вы также можете использовать .banner[class*=" "] p
, но это будет «неудачно» технически и применимо к любому ситуации, когда у вас есть class="banner "
(например, исходный класс banner
, за которым следует пробел) ... в случае, если вы можете динамически добавлять или удалять классы с помощью JavaScript, PHP или чего-то еще.
Если между 12 классами нет общего символа, вам может потребоваться использовать JavaScript для их выбора или применить третий класс к элементам, которые имеют по крайней мере .banner
и еще один класс, и просто выбрать этим классом. Перестройка HTML может быть лучшим решением, так что вы можете сделать свой CSS простым.
Да, ваша версия является самой безопасной / наиболее совместимой. Вы по-прежнему можете использовать его с любыми ресурсами, не только с доступом к данным, но и с веб-службами, файлами и т. Д.
Обратите внимание, что с версией IQueryable вы по-прежнему получаете возможность работать на основе ваших классов POCO, но вы привязаны к IQueryable. Также учтите, что у вас может быть код, который использует IQueryable, а затем оказывается, что вы столкнулись с ситуацией, когда один из ORM хранилища не справляется с этим хорошо.
Я использую тот же шаблон, что и вы. Мне это очень нравится. Вы можете получать свои данные из любых ресурсов.
Но преимущество использования IQuerable заключается в том, что вам не нужно кодировать свой собственный API критериев, такой как OrangeCriteria.
Когда NHibernate получит полную поддержку Linq, я могу переключиться на IQueryable. .
Тогда вы получите
public class OrangeRepository: IOrangeRepository {
public IQueryable<Orange> GetOranges();
}