2013-06-04 27 views
37

Jestem w Londynie, pracuję nad aplikacją, a facet html/css jest w Nowym Jorku. Wysyła mi aktualizacje codziennie przez e-mail, ponieważ nie mamy skonfigurowanej kontroli źródła, z której możemy korzystać jednocześnie, ciągle wprowadzam małe zmiany w jego css, więc za każdym razem, gdy otrzymuję od niego nowy plik, muszę ponownie zastosować wszystkie moje zmiany do tego, i oczywiście im więcej pracy wykonuję, tym dłużej trwa to.Czy jeden plik CSS może mieć wyższy priorytet niż inny plik CSS?

Wpadłem na pomysł stworzenia własnego arkusza stylów, ale czy jest jakiś sposób, aby powiedzieć przeglądarce, aby nadała mojemu szablonowi wyższy priorytet i nadpisać dowolny styl, który ma tę samą nazwę klasy i atrybuty?

To nie będzie strona publiczna, więc będziemy obsługiwać najnowsze przeglądarki.

+2

tuż obejmują Twój arkusz stylów jako ostatni w strony i skorzystać z wyższą specyficzność dla twoich reguł – fcalderan

+2

Dopóki reguły mają tę samą specyfikację, ostatni ładowany będzie miał pierwszeństwo. –

+0

prawdopodobny duplikat [Jaka jest kolejność ładowania plików CSS na stronie HTML?] (Http://stackoverflow.com/questions/3067455/what-is-the-order-of-loading-the-css-files -in-a-html-page) –

Odpowiedz

55

To zależy od sposobu ustawienia ich w nagłówku. Tak więc coś takiego zadziała:

<link rel="old stylesheet" href="path/to/style.css" /> 
<link rel="newer stylesheet" href="path/to/style.css" /> 
<link rel="newest stylesheet" href="path/to/style.css" /> 

Ten ostatni zostanie odebrany.

i jako związek o stylów tutaj: http://www.w3.org/TR/html401/present/styles.html#h-14.3.2

Zobacz także: Precedence in CSS Jeśli powyższe nie działa dla Ciebie.

Mam nadzieję, że jest jasne.

+1

To rozwiązanie jest tak oczywiste że czuję się trochę głupio, że o tym nie myślę od razu – Owen

+1

Nie ma problemu, Czasami zadaję też oczywiste pytania. Czasami to może się zdarzyć. :) –

+2

Działa jak zaklęcie – Daria

4

Reguły CSS są stosowane sekwencyjnie. Tak więc, wszystko co musisz zrobić, to dołączyć swój CSS na końcu, po wszystkich innych.

+1

[Niezupełnie prawdziwe] (http://www.vanseodesign.com/css/css-specificity-inheritance-cascaade/) – Andrew

2

CSS sekwencyjny, należy zrobić dwie rzeczy na plikach html

  1. Dołącz CSS jako ostatni css
  2. Dodaj! Ważny na wszystkie atrybuty CSS w pliku css Eg: position : absolute !important;

Które powinny służyć Twojemu celowi

+8

Staram się nie używać! Ważne, chyba że muszę, ale dziękuję – Owen

+0

jest to rodzaj obowiązkowy dla atrybutów, jeśli twój element ma "! Important" wcześniej dodany do niego. więc na wypadek, gdyby twoje poprzednie css nie miało żadnego ważnego, nie jest to wymagane, ale na wypadek, gdyby miały one ważność, niż będziesz musiał uważać z css – Varun

+0

@ Varun: Jedynym sposobem na przesłonięcie '! important' jest napisanie bardziej szczegółowy '! important'. Może to być trudne, nie jest zalecane. – Esteban

9

Osobisty bezwzględnie zniechęcam do użycia! Dowiedz się, co jest naprawdę ważne od here.

Powinieneś wiedzieć:

.some-class .some-div a { 
    color:red; 
} 

jest zawsze ważniejsza niż (rzędu wyglądem nie ma znaczenia w tym przypadku):

.some-class a { 
    color:blue; 
} 

Jeśli masz (dwie deklaracje o tym samym poziomie) :

.some-class .some-div a { 
    color:red; 
} 

.some-class .some-div a { 
    color:blue; 
} 

Późniejsza deklaracja jest używana. To samo dotyczy plików zapisanych w nagłówku, tak jak napisał @Kees Sonnema.

+3

Uzgodnione. ważna jest ostatnia ostoja zdesperowanych. –

+0

Ten był naprawdę użyteczny dzięki! – Ogdila

1

Znalazłem post tutaj w stackoverflow. Myślałem, że to może ci pomóc.

An efficient way to merge 2 large CSS files

Jeśli szukasz faktycznie scalić pliki potem będzie to przydatne, chyba.

Pomocne będzie również określenie CSS w bardziej szczegółowy sposób.

jak:

td.classname{} 
table.classname{} 
2

Gdzieś czytałem, że nie chodzi tu o których CSS plik nazywa się przed lub po, ale w rzeczywistości, która ładuje pierwszy. Na przykład, jeśli twój pierwszy plik CSS jest wystarczająco długi, aby kontynuować ładowanie, a ten pod (który według podstawowej teorii powinien mieć wyższy priorytet) już załadowany, te wiersze załadowane po będą miały wyższy priorytet. To trudne, ale musimy być tego świadomi ! Technika ze specyfiką wydaje mi się uzasadniona. Tak więc bardziej szczegółowy (#someid .someclass div zamiast .someclass div) wyższy priorytet.

0

To działa tak:

<link rel="stylesheet" type="text/css" href="first-style.css"> 
<link rel="stylesheet" type="text/css" href="second-style.css"> 

drugiej style.css:

@import 'third-style.css'; 

Ostatni styl importowany jest jeden, że wszystkie zasady trzymać. Np

pierwszej arkusz.css:

body{ 
    size:200%; 
    color:red; 
} 

drugiej arkusz.css:

@import 'third-style.css'; 
p{ 
    color:red; 
} 

trzeciego arkusz.css:

p{ 
    color:green; 
    size:10% 
} 

Uzyskane stylów byłoby być:

body{ 
    size:200%; 
    color:red; 
} 
p{ 
    color:green; 
    size:10% 

Uwaga: jeśli dodasz! Ważne zasady, to jest inne. Na przykład:

pierwszej arkusz.css:

body{ 
    size:200% !important; 
    color:red !important; 
} 

drugiej arkusz.css:

@import 'third-style.css'; 
p{ 
    color:red; 
} 

trzeciego arkusz.css:

p{ 
    color:green; 
    size:10% 
} 

wynik byłby być:

body{ 
    size:200% !important; 
    color:red !important; 
} 

Mam nadzieję, że to pomoże!

0

używam CSS priorytetową zasadę jak poniżej:

  1. Pierwsza reguła jako inline CSS z HTML, który będzie Marge żadnego kinda css.

  2. Druga zasada jako użycie słowa kluczowego! Ważna w deklaracji css po wartości.

  3. Trzecia zasada jako kolejność priorytetów nagłówka stylu nagłówka HTML (główny arkusz stylów CSS po niestandardowym arkuszu stylów CSS).

Zasadniczo użytkownik chce korzystać z trzecią regułę również chcą marge bootstrap CSS niestandardowych css, przykład poniżej:

<!-- Bootstrap CSS --> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 

<!-- App Custom CSS --> 
<link rel="stylesheet" href="assets/css/custom-style.css">