2011-07-23 4 views
27

Я читал через сброс CSS Эрика Мейера и увидел это:`Содержание:«» 'против' содержания: none`

blockquote:before, blockquote:after, 
q:before, q:after { 
    /* ? */ content: ''; 
    /* ? */ content: none; 
} 

Я предполагаю, что некоторые браузеры поддерживают content: '' и некоторые content: none, действительно ли это так? И какие браузеры поддерживают?

ответ

33

Meyer кредитует Paul Chaplin с этой версией стилей blockquote/q reset.

Chaplin's post по данному предмету содержит следующий блок стиля, полезный аннотированный.

blockquote, q 
{ 
    quotes: none; 
} 

/* 
Safari doesn't support the quotes attribute, so we do this instead. 
*/ 
blockquote:before, blockquote:after, q:before, q:after 
{ 
    /* 
    CSS 2; used to remove quotes in case "none" fails below. 
    */ 
    content: ""; 
    /* 
    CSS 2.1; will remove quotes if supported, and override the above. 
    User-agents that don't understand "none" should ignore it, and 
    keep the above value. This is here for future compatibility, 
    though I'm not 100% convinced that it's a good idea... 
    */ 
    content: none; 
} 

Кипятить его вниз: текущие версии большинства браузеров просто поддерживают quotes: none стиль, который устраняет необходимость использования :before и :after селекторов. Нечетным человеком был Safari/WebKit, который не уважал quotes: none. Следующий способ решить это был с псевдоэлементами :before/, но на момент написания этой статьи WebKit не поддерживал content: none, поэтому требовалось content: "".

Однако этот пост был в 2008 году, а quick test с текущими браузерами WebKit (Safari 5.1 и Chrome 12) показывает, что quotes: none отлично работает на обоих. По какой-то причине content: none bug against WebKit по-прежнему открыт, а bug for the quotes property был закрыт совсем недавно.

Итак, длинный рассказ, дополнительные стили, похоже, существуют для поддержки более старых версий Safari (и, возможно, Chrome). Немного сложнее пригвоздить, когда они получили поддержку, но текущие версии всех браузеров, похоже, имеют дело с quotes: nonecontent: none).

+0

Так что нет * реального * преимущества использования 'content: none'? –

+9

'content: none' и' content: "" 'не совсем то же самое. 'content: none' для явного запрета генерации псевдо-элемента' before' или 'after' (на самом деле используется только для переопределения другого стиля, который бы сгенерировал контент), тогда как' content: "" 'создает дополнительные элементы , но они пусты. Что касается * реального * преимущества, сочетание стилей на ': before: или': after' сделает видимым разницу (например, некоторое дополнение и фоновый цвет), но, вероятно, это скорее «чистота» или «правильность». Во всяком случае, нет никакого вреда для наличия «content: none» для поддержки браузеров. –

+0

просто сказать, что я натолкнулся на это, переопределив прежний стиль. Я обнаружил, что контент «" определенно перенес некоторые из предыдущих стилей с ним, а контент «none» не работал в ipad, который я использую для тестирования (как указано в комментарии выше). Я использовал display none на псевдоэлементе как переопределение «пояса и фигурных скобок» (вместо того, чтобы сбросить каждый стиль) – user1010892

Смежные вопросы