Таблицы с ограниченным стилем без HTML5

Мне нужен подход, где я могу объединить CSS файлы на определенную часть страницы. Теоретически этот пример должен делать то, что мне нужно:

<html>
<head>
</head>
<body>

    <div>
        <style scope>
            @import url("style1.css");
        </style>
        <div class="testText">Test with Style 1</div>
    </div>
    <div>
        <style scope>
            @import url("style2.css");
        </style>
        <div class="testText">Test with Style 2</div>
    </div>
</body>
</html>

Однако я узнал, что элемент области доступен только в некоторых браузерах прямо сейчас (Firefox 21+ в основном). Итак, я ищу ленивый выход или проблему. Мне нужно интегрировать некоторый контент с разными стилями в сайт. Мы попытались загрузить оба набора файлов css, но есть некоторые имена стилей, которые появляются в обеих таблицах стилей, поэтому будет очень много работы, чтобы переименовать имена стилей в один набор файлов и в соответствующее содержимое html, особенно потому, что вы не можете просто реорганизовать с помощью Eclipse...:)

Есть ли какое-либо другое решение, которое может сделать такой результат широко совместимым?

Привет

Ответ 1

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

Единственный способ, которым вы действительно можете добиться того, что вам нужно, - использовать уникальное имя класса (или идентификатор) для каждого раздела, а затем использовать наследование для сортировки пространства имен вашего CSS. Поэтому, если вы хотите настроить таргетинг на один конкретный раздел страницы, дайте ему родителям имя класса (например: class="testone"), а затем убедитесь, что любые стили, которые вы хотите применить к этому разделу, добавляются вместе с этим именем класса:

.testone .title{...}
.testone h1{...}
.testone a{...

и др.

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

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

Ответ 2

Имя атрибута в черновиках HTML5 scoped, а не scope.

Поддержка этого медленно внедряется, но нет оснований для использования атрибута или таблиц стилей с областью. Большинство браузеров возьмут <style scoped> просто как <style> и применит его ко всему документу.

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