Я согласен с ответом от zacherates.
Но вы можете сделать вызов intern () в ваших нелиберальных строках.
Из примера zacherates:
// ... but they are not the same object
new String("test") == "test" ==> false
Если вы ставите нелитеральное равенство строки, это правда
new String("test").intern() == "test" ==> true
Помимо использования !important
, что большинство ответов советуют вам использовать, это вопрос Специфика CSS
Концепция
Специфика - это способ, с помощью которого браузер решает, какие значения свойств наиболее важны для элемента и может применяться. Специфика основана только на правилах сопоставления, которые состоят из селекторов разного рода.
Как он вычисляется?
Специфика вычисляется по конкатенации счетчика каждого типа селекторов , Это вес, который применяется к соответствующему совпадающему выражению.
В случае равенства спецификаций к элементу применяется последнее объявление, найденное в CSS.
Некоторые эмпирические правила
blockquote>
- Никогда не используйте! важно на сайте css.
- Используйте только значение на странице css, которое переопределяет общесистемные или внешние css (из ExtJs или YUI для пример).
- Никогда не используйте! важно, когда вы пишете плагин / mashup.
- Всегда ищите способ использовать специфику, прежде чем даже подумать! important
может быть представлена четырьмя столбцами приоритета:
inline = 1 | 0 | 0 | 0
id = 0 | 1 | 0 | 0
class = 0 | 0 | 1 | 0
element = 0 | 0 | 0 | 1
Слева направо наибольшее число имеет приоритет.
blockquote>Вот фрагмент с Полный пример специфичности CSS
/*demo purposes*/ body {margin: 0;padding: 0} div,article {min-height: 200px;height: 100%;width: 100%} /*CSS Specificity */ /* SPECIFICITY 0/1/0/0 */ #id { background-color: green/*going to be green - overridden by style yellow */ } /* SPECIFICITY 0/0/1/0 */ .class { background-color: yellow /*going to be yellow - overridden by style blue */ } /* SPECIFICITY 0/0/0/1 */ section { background-color: blue /*going to be blue - overridden by style red */ } /* ------------ just to remove inline demo ----------- */ /*now remove background for inline elements we should use !important and a parent in order to make it more specific /* SPECIFICITY 1/0/0/1 */ section > div { background-color: purple !IMPORTANT /*going to be purple - final result */ }
<article> <div id="id"> <div class="class"> <section> <div style="background-color:red"> <!--SPECIFICITY 1/0/0/0 - overridden by style purple --> </div> </section> </div> </div> </article>
Теперь вот полный фрагмент шаг за шагом
ID: GREEN
/*demo purposes*/ body {margin: 0;padding: 0} div,article {min-height: 200px;height: 100%;width: 100%} /*CSS Specificity */ /* SPECIFICITY 0/1/0/0 */ #id { background-color: green }
<article> <div id="id"> <div class="class"> <section> <div> </div> </section> </div> </div> </article>
КЛАСС: ЖЕЛТЫЙ
/*demo purposes*/ body {margin: 0;padding: 0} div,article {min-height: 200px;height: 100%;width: 100%} /*CSS Specificity */ /* SPECIFICITY 0/0/1/0 */ .class { background-color: yellow }
<article> <div id="id"> <div class="class"> <section> <div> </div> </section> </div> </div> </article>
ELEMENT: BLUE
/*demo purposes*/ body {margin: 0;padding: 0} div,article {min-height: 200px;height: 100%;width: 100%} /*CSS Specificity */ /* SPECIFICITY 0/0/0/1 */ section { background-color: blue }
<article> <div id="id"> <div class="class"> <section> <div> </div> </section> </div> </div> </article>
INLINE STYLE: RED
/*demo purposes*/ body {margin: 0;padding: 0} div,article {min-height: 200px;height: 100%;width: 100%}
<article> <div id="id"> <div class="class"> <section> <div style="background-color:red"> <!--SPECIFICITY 1/0/0/0 --> </div> </section> </div> </div> </article>
OVERRIDDEN INLINE STYLE: PURPLE
/*demo purposes*/ body {margin: 0;padding: 0} div,article {min-height: 200px;height: 100%;width: 100%} /*CSS Specificity */ /* SPECIFICITY 1/0/0/1 */ section > div { background-color: purple !IMPORTANT }
<article> <div id="id"> <div class="class"> <section> <div style="background-color:red"> <!--SPECIFICITY 1/0/0/0 --> </div> </section> </div> </div> </article>
Вы можете вычислить специфичность вашего элемента (ов) здесь
< hr>Примечание:
A необходимо прочитать на эту тему
К сожалению, я должен согласиться с phari .
Цитата:
1) Вы не можете полностью изменить HTML-страницу страницы , и поэтому не может содержать другой файл CSS. 2) Вы можете изменить файлы CSS, но разработчики могут позже их модифицировать и удалить любые сделанные вами изменения. Следовательно, вы не можете постоянно изменять файлы CSS. 3) Вы не можете / не хотите использовать Javascript и JQuery). Если все это верно, нет решения вашей проблемы.
blockquote>Комментирует phari 26 марта в 14:29
Позвольте мне сломать это. Я попытаюсь изо всех сил объяснить, почему нет решения (исправьте меня, если я ошибаюсь в любом из этих вариантов);
Вариант 1: Использование jQuery или Javascript. Вы не можете изменить HTML страницы вообще! Вы не хотите использовать jquery или javascript. Это означает, что все ответы на ваш вопрос, упомянутые на этой странице, которые включают jquery или javascript, не учитываются. Это не означает, что ответы, приведенные на этой странице, неверны. В вашем случае это невозможно.
Вариант 2:
@import url(css4.css);
На вашем веб-сайте есть 3 файла css, которые автоматически включаются как часть веб-сайта, но, к сожалению, у вас нет доступ к ЛЮБОЙ из этих файлов css. Вы не можете поместить этот фрагмент кода в css3.css или в любой из этих файлов. Вы можете изменить файлы CSS, но разработчики могут позже их модифицировать и удалить любые сделанные вами изменения, что означает, что@import url(css4.css);
также можно удалить. Также использование@import url(css4.css);
было бы совершенно бесполезным. Вам нужно будет поместить@import url(css4.css);
в конец css3.css, но это не сработает, потому что правила @import всегда должны быть первыми в документе. Если я не ошибаюсь, Илья (который прокомментировал 23 марта в 9:42) означал, что код может быть размещен в любом месте файла.@import url(css4.css);
должен быть наверху. Ссылка ilia, представленная как «доказать», также указывает, что это требование , чтобы поместить его в начале .. Проверьте две ссылки ниже. Подробнее посетите http://webdesign.about.com/cs/css/qt/tipcssatimport.htm или https://developer.mozilla.org/en/docs/Web/CSS / @ импорт # Технические характеристики . Вариант 2 также игнорируется.Я не думаю, что может быть другой способ сделать то, что вы хотите сделать. Следовательно, решения вашей проблемы нет.
Если я понимаю, что вы правильно задали вопрос, добавив @import url(css4.css)
в начало css3.css
, импортируйте свою таблицу стилей в css3.css
. Но ваши стили переопределяются стилями в css3.css
. Это связано с каскадным порядком и Specificity . Чтобы ваши стили css4.css
были использованы, ваши селекторы должны иметь более высокую специфичность, чем селектор в css.3.css
, который вы пытаетесь переопределить.
Пример: теги <h1>
будут окрашены в красный цвет.
body h1 { //this is more specific
color: blue;
}
h1 { //this is less specific
color: red;
}
Но поскольку вы @import url(css4.css)
строка кода будет удаляться каждый раз, когда разработчики обновят css3.css
file это не «пуленепробиваемое решение»
У вас есть возможность добавить любой javascript на сайт? Если это так, вы можете использовать следующее решение
jQuery
$('head').append('<link rel="stylesheet" type="text/css" href="css4.css">');
Javascript
var head = document.head
, link = document.createElement('link')
link.type = 'text/css'
link.rel = 'stylesheet'
link.href = 'css4.css'
head.appendChild(link)
@import
и повторно добавить его обратно каждый раз, когда разработчики обновляют файл css3.css
– Craig Harshbarger
1 April 2015 в 16:27
Вот веселое решение, о котором никто не упомянул.
Факты:
Давайте сделаем некоторые .htacess взломать удовольствие и прибыль!
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^(.*?)css3.css(.*?) $1hackedCSS3.php$2 [L]
Результат: hackedCSS3.php беззвучно подается вместо css3.css для каждого запроса.
REF: http://httpd.apache.org/docs/2.2/howto/htaccess.html
<?php
// Send the right header information!
header("Content-type: text/css; charset: UTF-8");
// Output the css3.css file
echo file_get_contents("css3.css");
?>
// Add your CSS here with any neat !important or override tricks (read: specificity)
div { ... }
Бонус:
Вы можете расширить это решение, включив все три файла .css
в этот файл .php
(но только, скажем, css3.css и отправьте css1.css и css2.css в черную дыру с помощью .htaccess ) и использовать умные регулярные выражения для удаления / изменения CSS этого разработчика, не касаясь каких-либо их файлов. Возможности дразнят.
Можете ли вы быть более конкретным, где включать эти файлы?
blockquote>. Файл .htaccess должен быть в корневом каталоге документа на веб-сайте. Это где www.example.com/index.html будет загружать index.html
Если файл hackedCSS3.php находится в том же каталоге, что и другие css-файлы?
blockquote>Он может быть в любом каталоге, указанном в файле .htaccess. Корень документа отлично. Измените
RewriteRule ^(.*?)css3.css(.*?) $1hackedCSS3.php$2 [L]
на
RewriteRule ^(.*?)css3.css(.*?) /folders/you/want/hackedCSS3.php$2 [L]
Если наш css-контент (где вы указали // Добавить свой CSS здесь ...) должен быть в тегах стиля html?
blockquote>№. Относитесь к своему CSS-коду в этом разделе, как если бы он был .css-файлом. Вам не нужны теги
<style>
.
Используйте @import url('css4.css')
на одной из ваших существующих страниц css. Затем используйте спецификацию для выделения вашего нового кода:
Html:
<ul class='ulclass'>
<li class='liclass'>
<a class='aclass>The text</a>
</li>
</ul>
css1.css:
.aclass{
color : red;
}
css4.css:
ul.ulclass li.liclass a.aclass{
color: green;
}
Тогда у вас будет green
цвет в вашем элементе a
. Ряд решений здесь рекомендуют использовать @import
для включения вашего файла css4.css
, а затем модифицировать селектора в нем, чтобы иметь большую специфичность или для использования объявления !important
, но есть еще один способ.
Вставить все содержимое css4.css
в конце css3.css
. Таким образом, вам не нужно полагаться на !important
или специфичность, потому что каскадное наследование примет ваши правила в конце файла, если они имеют одинаковую специфичность.
С помощью этого метода вы жертвуете
<div class="mycooldiv">Hello World</div>
Однако, это было бы достаточно легко создать большую специфичность, просто добавив html
к началу каждого правила в css4.css
, если вы не хотите вставлять его в конце css3.css
. Это предпочтительнее добавления !important
, где он работает.
Пример импорта, основанный на большей специфичности:
/* @import of css4.css with greater specificity */
html .mycooldiv {
color: lime;
}
/* Contents of css3.css */
.mycooldiv {
font: bold 1.2em sans-serif;
color: tomato;
}
<div class="mycooldiv">Hello World</div>
В новом файле CSS добавьте !important
в блок кода, например:
, если у вас есть это на css1.css:
h2{
color:#000;
}
В css4 .css помещает один и тот же элемент, но с !important
следующим образом:
h2{
color:#ccc !important;
}
Поэтому !important
заставит этот стиль быть во всех отношениях стилем, установленным для элемента, применяется.
Для двойных определений CSS последнее определение будет иметь приоритет.
Если добавленный файл css4.css на самом деле ссылается после «3 css-файлов, которые автоматически включаются», тогда файл css4.css определения должны переопределять предыдущие дубликаты определений из этих других файлов.
Если вы не видите ожидаемых результатов, используйте параметр «источник просмотра» вашего браузера, чтобы подтвердить последовательность, в которой находятся файлы CSS ссылки. Также используйте «Инструменты разработчика» браузера Chrome или «Firebug» для браузера Firefox, чтобы узнать, как браузер интерпретирует определения CSS, чтобы получить результат, которого вы не ожидали. Эти инструменты должны обеспечить понимание вашей проблемы.
Я думаю, у меня есть ответ. Способ, которым я пытался достичь этого, это:
1) Скажем, мой css3 - это последний CSS в списке, и у меня есть все мои изменения в css4. Я сделал копию css3 и назвал ее «css3-Original.css» и добавил мой css4 в ту же папку. Затем я создал еще один css-файл под названием «css3.css» (потому что это последний из них, который требуется для этого списка) и добавлен сначала импорт исходного Css3, а затем мой переопределяющий файл css4.css, как указано ниже:
css3.css (новый)
@import url("css3-Original.css")
@import url("css4.css")
Это лучший способ найти работу. Таким образом, хотя я знаю, что мой css3.css-файл будет изменяться при обновлениях, но я знаю, как я могу заменить его очень легко и быстро. Я использовал! Важно в моем css4.css везде, где это необходимо (если требуется), но в основном из-за его последнего файла css, он использует этот стиль по сравнению с любыми предыдущими (если они не важны).
Спасибо за предложения, ребята. Наконец, мне удалось найти решение.
напишите новый css и используйте идентификатор элементов, а не класс. Также используйте! Important в css.
Вы можете просто перезаписать текст в доступном для вас файле css, стиль, который вы хотите от предыдущего файла css, вы можете скопировать этот код в том, что вы можете добавить с этим новым кодом, обновить ваш сайт, который вам нужен.
Чтобы использовать только CSS, лучший способ - использовать инструменты разработчика Chrome или FireFox и найти различный стиль, который вы хотите перезаписать.
Для каждого стиля, который вы найдете, который нужно настроить, используйте модификатор !important
.
.newClass {
color:red !important;
}
Другой способ - написать уникальные имена класса css и снова использовать !important
, если вам нужно , Настоящий трюк здесь в особенности. Если идентификатор более специфичен, правило будет применено.
6.4.1.4 Наконец, сортировка по порядку : если два объявления имеют одинаковый вес, происхождение и специфичность, последний указывает на выигрыши. Объявления в импортированных таблицах стилей считаются перед любыми объявлениями в самой таблице стилей.
blockquote><a class="my-most-awesome-link its-really-cool">Most awesome link</a> .my-most-awesome-link.its-really-cool { text-decoration:none !important; color:red !important; }
Если вы в отчаянии, вы можете использовать javascript для удаления нежелательных css.
См. JSBin для рабочего примера.
Я нашел эту интересную технику
<script> function removejscssfile(filename, filetype){ var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none"; //determine element type to create nodelist from var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none"; //determine corresponding attribute to test for var allsuspects=document.getElementsByTagName(targetelement); for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1){ allsuspects[i].parentNode.removeChild(allsuspects[i]); //remove element by calling parentNode.removeChild() } } } removejscssfile("css1.css", "css") ; removejscssfile("css2.css", "css") ; removejscssfile("css3.css", "css") ; </script>