Ст. Ку., b тоже неверно, оба примера нарушают логику человечеческую и рекомендации html-5. На примере u:
"Спецификация HTML-5 напоминает разработчикам, что другие элементы почти всегда лучше, чем <u>" пруф
Проще говоря, сейчас рекомендуется использовать <span> и CSS.
Касательно логики человеческой:
Если по какой-то причине требуется в дивах сделать текст без абзацев (хотя я подозреваю, что вы пытаетесь сделать кнопку без тега button) и при этом текст должен быть жирным/подчёркнутым, то зачем отменять наследованный стиль? А если требуется в группе элементов сделать жирный/подчёркнутый/иной текст, то почему не создать класс и использовать CSS?
Сергей Мелодин, Не, у меня редактор. Через execCommand(underline) U вставляется в разметку. А потом, если в редакторе внутрь вставляешь элемент, - подчеркивание не убрать. И зачеркивание тоже, кстати.
Ст. Ку., в данной конструкции замена u на span ничего не даст, подчёркивание останется. Тут надо переделать именно вложенности, а уже потом правильно распорядиться семантикой. Если речь о визуальном редакторе с contenteditable, то примерно понимаю откуда растут ноги проблемы, но мне в своё время было лень с ней разбираться и я сделал редактор на textarea )
Ст. Ку., насколько мне известно, стиль родителя должен перекрывать стиль ребёнка, даже если z-index указан. Всё-таки думаю, что придётся придумать как убрать u/b или хотя бы переместить его в див, если он нужен.
В случае с u, у вас подчеркивание дается всему содержимому u, а не вложенным элементам по отдельности. У вложенного туда div как у сущности подчеркивания нет, а то, что наблюдается это подчеркивание от u.
Потому что вы инлайн-стилем задали div'у и только div'у нормальное начертание, просто перебили наследование. И в случае с u вы из стилей вложенного элемента никак не можете повлиять на свойства родителя - родитель как был подчеркнутым, так и остался, т.к. css - это каскад.