LINUX.ORG.RU

Стиль текста и :before/:after в FF

 ,


0

2

Имеется CSS:

tag:before { content: "<tag>"; }
tag:after { content: "</tag>"; }
tag {
  text-decoration: line-through;
  font-weight: bold;
  font-style: italic;
}
Можно ли дописать/переписать этот стиль, чтобы отменить перечеркивание, жирность и курсив у обрамляющих тегов <tag> и </tag> (но не у того текста, что внутри тегов)?

Вот так не получается:

tag:before, tag:after {
  text-decoration: none;
  text-weight: normal;
  font-style: normal;
}

Неа. :before и :after работают как будто они внутри контента элемента. Можно решить задачу на Java Script.

Black_Roland ★★★★
()

Не нужно пытаться решать задачи разметки средствами стиля. Да и не выйдет в данном случае.

thesis ★★★★★
()

Ты уверен, что в content сможешь запихать HTML и это будет работать? Или это так и задумано?

anonymous
()
Ответ на: комментарий от Black_Roland

:before и :after работают как будто они внутри контента элемента.

В том-то и дело, что не совсем. Я могу сделать их другого цвета, могу сделать им отдельный :hover - и они будут менять цвет при наведении мыши на элемент. А вот стиль текста почему-то не получается сделать отдельный.

anonymous
()
Ответ на: комментарий от anonymous

Не, ты не понял. Почитай спеку:

text-decoration

This property describes decorations that are added to the text of an element using the element's color. When specified on an inline element, it affects all the boxes generated by that element; for all other elements, the decorations are propagated to an anonymous inline box that wraps all the in-flow inline children of the element, and to any block-level in-flow descendants. It is not, however, further propagated to floating and absolutely positioned descendants, nor to the contents of 'inline-table' and 'inline-block' descendants.

Underlines, overlines, and line-throughs are applied only to text (including white space, letter spacing, and word spacing): margins, borders, and padding are skipped. If an element contains no text, user agents must refrain from rendering these text decorations on the element. For example, images will not be underlined.

The 'text-decoration' property on descendant elements cannot have any effect on the decoration of the ancestor. In determining the position of and thickness of text decoration lines, user agents may consider the font sizes of and dominant baselines of descendants, but must use the same baseline and thickness on each line. Relatively positioning a descendant moves all text decorations affecting it along with the descendant's text; it does not affect calculation of the decoration's initial position on that line.

anonymous
()
Ответ на: комментарий от xorik

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

anonymous
()
Ответ на: комментарий от anonymous

Где там ancestor и descendants? Рассмотрим один-единственный тег с текстом внутри. Как вышеизложенное применимо к нему?

anonymous
()
Ответ на: комментарий от anonymous

Это работает в том смысле, что текст экранируется.

Ну разумеется. Оно мне и надо - чтобы визуально было видно, что за теги там.

Это xml-редактор, если чё. Один из его режимов.

anonymous
()
Ответ на: комментарий от anonymous

Мне ещё и before/after копипастить? :)

12.1 The :before and :after pseudo-elements

The formatting objects (e.g., boxes) generated by an element include generated content. So, for example, changing the above style sheet to:

p.note:before { content: "Note: " }
p.note        { border: solid green }

would cause a solid green border to be rendered around the entire paragraph, including the initial string.

The :before and :after pseudo-elements inherit any inheritable properties from the element in the document tree to which they are attached.

The :before and :after pseudo-elements elements interact with other boxes, such as run-in boxes, as if they were real elements inserted just inside their associated element.

anonymous
()
Ответ на: комментарий от anonymous

Не читай & сразу отвечай что ли? Стиль текста и :before/:after в FF (комментарий)

+

as if they were real elements inserted just inside their associated element

Это тебе и дают. Объясняю на пальцах. p:before { content: «x» } это, условно говоря такое хитрое

<p><span>x</span> (тут обычное содержимое параграфа)</p>

Только «спана» (точнее там анонимный бокс) ты не видишь, как суслика, а он есть.

anonymous
()
Ответ на: комментарий от anonymous

Ну так объясни мне, ради аллаха и его семнадцати пророков, какого чёрта одни свойства переопределить можно, а другие нельзя? Твой span я запросто могу отстилизовать независимо от родителя, просто переопределив свойства.

anonymous
()
Ответ на: комментарий от anonymous

А вот для :before, например, color: работает, а text-decoration: - почему-то нет.

anonymous
()
Ответ на: комментарий от anonymous

Oops, а ведь для p/span тоже не получается сделать отдельные text-decoration. Похоже, разработчики FF просто не осилили…

anonymous
()
Ответ на: комментарий от anonymous

Да ёлки-палки, там же выше подчёркнуто. text-decoration особенный. Это свойство самого стиля.

Представь, что у тебя несколько слоёв. На верхнем ты начертил эту зачёркивающую линию, а на нижнем браузерные эльфы кричат «не надо нас зачёркивать, а-а-а». Но смотришь то ты сверху и верхний слой от этого никуда не пропал — ты видишь линию.

anonymous
()
Ответ на: комментарий от anonymous

Ты чем читал текст выше? Перечитай.

anonymous
()
Ответ на: комментарий от anonymous

Ну и в дополнение, это свойство не наследуется. Должно наводить на мысли.

anonymous
()
Ответ на: комментарий от anonymous

И с :before/:after тоже работает. Помечаю тему как решённую. Всем спасибо.

discordia
() автор топика
Ответ на: комментарий от discordia

Это не «хорошо», по ссылке написано, что Firefox неправ. И если это так, то когда-то это пофиксят. Ну, ты понял.

Deleted
()
Ответ на: комментарий от Deleted

Написано, что FF3.6/4 неправ, когда рисует декорации для элемента с display: inline-block. И это уже починили.

discordia
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.