Подчеркивание надстрочного текста в IE

Я буду краток, потому что у меня мало времени, поэтому прошу прощения, если это не так подробно, как хотелось бы.

У меня есть код:

print("<a href='#'>Some text<sup>&reg;</sup> some more text</a>");

В FF это работает как хотелось бы, ссылка в целом подчеркнута. Однако в IE ссылка подчеркнута, за исключением символа ®, где она выглядит как символ над дефисом и выглядит довольно нелепо.

Я попробовал несколько предложений, которые нашел в Google, но ни одно из них не помогло добиться желаемого эффекта. К сожалению, добавление границы снизу не вариант. Пока что лучшим решением является полное снятие подчеркивания в теге sup с помощью CSS, что по-прежнему позволяет ему нормально работать в FF, но при этом выглядеть менее глупо в IE.

Если бы кто-нибудь мог помочь с этим, я был бы очень признателен, я бы предпочел не проходить через сайт, удаляя теги <sup>, поскольку мне сказали, что мне придется это сделать, если я не решу эту дилемму.

ОБНОВЛЕНИЕ: Пошел с решением sup {"text-decoration: none"}, на данный момент подойдет. Повсюду есть отметки reg, поэтому пришлось бы обновить весь сайт, а это было больше проблем, чем того стоило, как мы все решили. Спасибо тем, кто ответил.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
4
0
9 967
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Ответ принят как подходящий

Тег <sup> не подходит для таких вещей, как товарные знаки и символы регистрации.

Я предпочитаю делать это с помощью css:

<span style='font-size:75%;vertical-align:super;text-decoration:none'>&reg</span>

Если вы можете настроить класс .reg:

.reg {
    font-size:75%;
    vertical-align:super;
    text-decoration:none
}

Для:

<span class='reg'>&reg;</span>

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

Blair Scott 07.01.2009 19:03

похоже, что CSS оказывает на меня точно такой же эффект?

annakata 07.01.2009 19:07

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

Blair Scott 07.01.2009 19:13

У этого решения та же проблема, что и у <sup>, по крайней мере, в Chrome 11.

mhenry1384 16.05.2011 22:14

Что ж, я согласен, это выглядит ужасно, но, похоже, именно так IE сочетает подчеркивание и надстрочный индекс. Я предлагаю вам воспользоваться своим планом CSS, чтобы удалить подчеркивание для a sup, если вы не можете обмануть рамку. Есть только свойство IE под названием text-underline-position, но оно не имеет никакого значения, которое, я боюсь, здесь тоже помогает.

Для тех, кто еще не знает, это будет:

a sup{text-decoration:none;}

Как говорит Диодей, и небольшое исследование, как правило, согласится с этим, я понимаю, что метка reg в любом случае не войдет в элемент sup.

Итак, предполагая, что мы решаем только проблему sup / подчеркивания и забываем, что мы имеем в виду отметку reg, единственные известные мне решения, чтобы заставить их выглядеть одинаково, - это сделать vertical-align: baseline или убить text-decoration на sup. .

Да, отметка reg в элементе sop - это совсем другая проблема, которая просто усложняет ситуацию. Это связано с тем, что шрифты, которые мы используем, в основном непоследовательны в трактовке указанного знака.

Blair Scott 07.01.2009 22:10

Ну, это не изящное решение, в основном используйте рамку вместо подчеркивания. Вам нужно будет закодировать его цвет на основе "Активный, посещенный и т. д."

<style type = "text/css">
   a.u {
       text-decoration: none; 
       border-bottom: 1px solid black;
       display: inline;
   }
</style>

<a href = "#123" class = "u">CHEESE<sup>&reg;</sup></a>

Эрик

Это не идеальное решение, потому что нижняя граница в 1 пиксель толще, чем подчеркивание. По крайней мере, в Chrome 11 он вдвое толще.

mhenry1384 16.05.2011 22:28

это решило мою проблему. Нижняя граница определенно не идеальное решение, но выполняет довольно приличную работу.

Snowalker 29.11.2012 01:23

Решение Эрика самое близкое. Ему не нужно иметь display: inline, поскольку элементы <a> являются встроенными элементами. Единственное, чего ему не хватает, это line-height, так что вы можете видеть нижнюю границу в IE 6 и IE 7. В противном случае вы не увидите линии.

<style type = "text/css">
   a.u {
       text-decoration: none; 
       border-bottom: 1px solid black;
       line-height: 1.5em;
   }
</style>

<a href = "#123" class = "u">CHEESE<sup>&reg;</sup></a>

Я заставил это работать вот так

print(< a href='#' class = "underline">Some text< sup >&reg;< /sup > some more text< /a >)  
.underline {text-decoration:none; border-bottom:1px solid #FFF;}

Решение с нижним краем поместит линию под любыми буквами «p», «q» или «y», а не через нижние ножки букв. Это на 2 пикселя ниже, чем было бы подчеркивание.

Альтернативный вариант - сделать позицию <a>: relative
сделайте позицию <sup> абсолютной; верх: -3px; текстовое оформление: нет;

добавить дополнительный & nbsp; после </sup>

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

В этом случае вы можете использовать что-то вроде этого:

  1. Оставьте подчеркивание как для Firefox (все в порядке)
  2. Используйте такой стиль для Chrome (у него те же проблемы, что и у IE, даже сложнее):

    [style]
    a sup {
        text-decoration: none;
        display: inline-block; // without this previous property will not work
        border-bottom: 1px solid;
        line-height: 1.5em;    // this and following properties are used to shift
        margin-top: -1em;      // an element to make border aligned with underline
                           // can be used relative position or something else.
    }
    a sub {
        text-decoration: none;
        display: inline-block;
        vertical-align: middle;
        border-bottom: 1px solid;
        line-height: 0.7em;
    }
    [/style]
    [a href = "what-aczone-can-do-for-you.aspx"]Text-Jj_Jj[sub]Jj[/sub][sup]Jj[/sup]moreText[/a]
    
    • извините за [] в тегах, я до сих пор не могу понять, как эта гребаная система делает образцы кода - когда я пытаюсь отформатировать так, как она хочет, я получаю беспорядок.

Другие вопросы по теме