W CSS jaka jest różnica między "."i" # " przy deklarowaniu zbioru stylów?
Jaka jest różnica między #
a .
podczas deklarowania zestawu stylów dla elementu i jakie są semantyki, które wchodzą w grę przy podejmowaniu decyzji, którego z nich użyć?
9 answers
Tak, są różne...
#
jest selektorem id , używanym do kierowania pojedynczego określonego elementu z unikalnym identyfikatorem, ale . jest selektorem klasy używanym do targetowania wielu elementów z określoną klasą. Ująć to inaczej:
-
#foo {}
będzie stylować pojedynczy element zadeklarowany z atrybutemid="foo"
-
.foo {}
będzie stylować wszystkie elementy z atrybutemclass="foo"
(możesz mieć wiele klasy przypisane również do elementu, po prostu oddzielają je spacjami, np.class="foo bar"
)
Typowe zastosowania
Ogólnie rzecz biorąc, używasz # do stylizacji czegoś, co wiesz, że pojawi się tylko raz, na przykład rzeczy takie jak divy wysokiego poziomu, takie paski boczne, obszary banerów itp.
Klasy są używane, gdy styl jest powtarzany, np. powiedzmy, że kierujesz specjalną formą nagłówka dla komunikatów o błędach, możesz utworzyć styl h1.error {}
, który będzie miał zastosowanie tylko do <h1 class="error">
Specyficzność
Innym aspektem, w którym selektory różnią się między sobą, jest ich specyficzność - selektor id jest uważany za bardziej specyficzny niż selektor klas. Oznacza to, że gdy style są sprzeczne na elemencie, te zdefiniowane w bardziej specyficznym selektorze nadpisują mniej specyficzne selektory. Na przykład, podane <div id="sidebar" class="box">
dowolne reguły dla #sidebar
z nadrzędnymi sprzecznymi regułami dla .box
Dowiedz się więcej o SELEKTORACH CSS
Zobacz Selectutorial aby uzyskać więcej świetnych podkładów na selektorach CSS - są niesamowicie potężne , a jeśli twoja koncepcja jest po prostu taka, że "# jest używany do Div", dobrze byłoby przeczytać dokładnie, jak efektywniej używać CSS.
EDIT: wygląda na to, że Selectutorial mógł trafić na dużą stronę na niebie, więc spróbuj zamiast tego link do archiwum.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-09 10:14:28
#
oznacza, że pasuje do id
elementu. .
oznacza nazwę klasy:
<div id="myRedText">This will be red.</div>
<div class="blueText">this will be blue.</div>
#myRedText {
color: red;
}
.blueText {
color: blue;
}
Zauważ, że w dokumencie HTML atrybut id musi być unikalny , więc jeśli masz więcej niż jeden element wymagający określonego stylu, powinieneś użyć nazwy klasy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-02 12:40:09
Kropka (.
) oznacza klasę nazwę, podczas gdy hash (#
) oznacza element z określonym atrybutem id . Klasa będzie miała zastosowanie do każdego elementu udekorowanego daną klasą, podczas gdy # style będzie miał zastosowanie tylko do elementu o tym konkretnym id.
Nazwa klasy:
<style>
.class { ... }
</style>
<div class="class"></div>
<span class="class></span>
<a href="..." class="class">...</a>
Nazwa elementu:
<style>
#name { ... }
</style>
<div id="name"></div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-22 09:39:15
Warto również zauważyć, że w kaskadzie , id (#
) Selektor jest bardziej specyficzny niż selektor b (.
). Dlatego reguły w instrukcji id nadpisują reguły w instrukcji class.
Na przykład, jeśli oba poniższe stwierdzenia:
.headline {
color:red;
font-size: 3em;
}
#specials {
color:blue;
font-style: italic;
}
Są stosowane do tego samego elementu HTML:
<h1 id="specials" class="headline">Today's Specials</h1>
Regułacolor:blue zastąpiłaby regułę color:red .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-22 09:37:55
Kilka szybkich rozszerzeń na to, co już zostało powiedziane...
An id
musi być unikalne, ale możesz użyć tego samego identyfikatora, aby uszczegółowić różne style.
Na przykład, biorąc pod uwagę ten wyciąg HTML:
<div id="sidebar">
<h2>Heading</h2>
<ul class="menu">
...
</ul>
</div>
<div id="content">
<h2>Heading</h2>
...
</div>
<div id="footer">
<ul class="menu">
...
</ul>
</div>
Możesz zastosować różne style za pomocą tych:
#sidebar h2
{ ... }
#sidebar .menu
{ ... }
#content h2
{ ... }
#footer .menu
{ ... }
Kolejna przydatna rzecz: możesz mieć wiele klas na elemencie, rozdzielając je spacjami...
<ul class="main menu">...</ul>
<ul class="other menu">...</ul>
Co pozwala na wspólną stylizację w .menu
z specyficzne style przy użyciu .main.menu
i .sub.menu
.menu
{ ... }
.main.menu
{ ... }
.other.menu
{ ... }
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-02 14:25:27
Jak prawie wszyscy już stwierdzili:
A period (.
) oznacza klasę , a hash (#
) oznacza identyfikator .
Zasadnicza różnica między tym polega na tym, że możesz wielokrotnie używać klasy na swojej stronie, podczas gdy identyfikator może być użyty raz. Oczywiście, jeśli trzymasz się standardów WC3.
Strona nadal będzie renderowana, jeśli masz kilka elementów o tym samym ID, ale napotkasz problemy, jeśli/przy próbie dynamicznego zaktualizuj wspomniane elementy, wywołując je z ich ID, ponieważ nie są one unikalne.
Warto również zauważyć, że właściwości ID zastąpią właściwości klasy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-22 09:37:14
.class
celuje w następujący element:
<div class="class"></div>
#class
celuje w następujący element:
<div id="class"></div>
Zauważ, że identyfikator musi być unikalny w całym dokumencie, podczas gdy dowolna liczba elementów może współdzielić klasę.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-02 12:41:31
# jest selektorem id. Dopasowuje tylko elementy o pasującym id. Następna reguła stylu będzie pasowała do elementu, który ma atrybut id o wartości "green":
#green {color: green}
Zobacz http://www.w3schools.com/css/css_syntax.asp więcej informacji
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-02 12:40:35
Oto moje podejście do wyjaśnienia reguł te .style
i #style
są częścią macierzy.
że jeśli nie w odpowiedniej kolejności, mogą się wzajemnie nadpisywać lub powodować konflikty.
Macierz
#style 0,0,1,0 id
.style 0,1,0,0 class
Jeśli chcesz nadpisać te dwa możesz użyć <style></style>
wiedźma ma poziom macierzy lub 1,0,0,0.
@ Media query nadpiszą wszystko powyżej...
Nie jestem tego pewien, ale myślę, że selektor ID #
może być użyty tylko raz na stronie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-20 07:25:11