Используя #IEroot для таргетированного стиля?

Кто-нибудь смог успешно использовать взлом IE CSS #IEroot? Я наткнулся на это от эта статья, но, похоже, у меня это не работает.

Я пытаюсь исправить / взломать ошибку встроенного стиля для создания встроенных блоков li

#featured li {
    margin:0px;
    padding:0px;
    width:317px;
    height:310px;
    display:inline-block;
    border-left:1px #bdbdbd solid;
}
#IEroot #featured li {
    display:inline;
}

Любая помощь будет очень принята, спасибо.

он должен работать нормально, если у вас есть DIV в разметке HTML, и ТОЛЬКО для IE, как указано в статье.

scunliffe 31.12.2008 08:09

На самом деле это UL, но нет, не надо.

Chance 31.12.2008 08:17

Не пробовал использовать это в вашем примере, но если стили неоднозначны, вы можете добавить! Important, чтобы принудительно использовать определенный стиль. Возможно, это решит вашу конкретную проблему (мой ответ не помог вам в этом).

Wouter van Nifterick 31.12.2008 08:37
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
3
3
577
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я использую бета-версию IE8, и пример на странице, о которой вы говорите, не работает. Живая демонстрация, похоже, не учитывает IE8.

Такие хаки умны, но я бы посоветовал вам держаться от них подальше.

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

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

Если вы настаиваете на использовании такого взлома, обязательно добавьте такой комментарий:

/* >>>>>>> BUTT-UGLY BROWSER HACK! FIX ME!!!!! <<<<<<<< */
#IEroot #featured li {
    display:inline;
}

:-)

Это объясняет, почему я его тоже не вижу - у меня тоже есть IE8 (забыл, что скачал ..)

Chance 31.12.2008 08:31

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

Chance 31.12.2008 08:32
Ответ принят как подходящий

ЭТО РАБОТАЕТ, точно так же, как описано, ДАЖЕ в IE8, и на самом деле является довольно умным CSS-хаком для обхода специфичных для IE ошибок.

Вы ДОЛЖЕН заменяете строку DOCTYPE на REAL DOCTYPE, хотя сначала.

Вот код из ссылки, настроенный в качестве рабочего образца.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<style>
/* all browsers make border red */
#IE { border : 2px solid red; }
/* all browsers see this, but only IE thinks #IEroot exists as an element and makes border blue */
#IEroot #IE { border-color : blue; }
</style>
</head>
<body>
<!--[if IE]>
<div id = "IEroot">
<![endif]-->
<p id = "IE">This browser is IE. (red in all, blue in IE)</p>
<p id = "notIE">This browser is not IE.</p>
<!--[if IE]>
</div>
<![endif]-->
</body>
</html>

Да. Это прекрасно работает в IE с типом документа: <ul id = "Feature"> <li> один </li> <li> два </li> </ul>

Traingamer 31.12.2008 17:35

Хороший на доктайпе. Я по-прежнему считаю это плохой практикой, хотя дизайн сайта основан на ошибке в IE. Я уверен, что эта конкретная проблема может быть решена действительно простым и элегантным альтернативным способом за считанные минуты. Списки не работают? используйте промежутки или что-то еще.

Wouter van Nifterick 01.01.2009 07:55

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