Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Atrybut "a" i jego background
pietrov8
post 6.12.2010, 07:31:14
Post #1





Grupa: Zarejestrowani
Postów: 188
Pomógł: 1
Dołączył: 4.07.2009
Skąd: ...

Ostrzeżenie: (10%)
X----


Witam.

Mam oto i taki problem. Poniżej przedstawiam obiekt którym się zajmuję.



I teraz chcę tak go ostylować w css by:
  • tło było rozciągane w zależności od ilości tesktu,
  • był użyty aby atrybut a (<a href="#">Strona główna</a>).


Mam zrobione tak na tej stronie: Hassist lecz atrybut a jest wsadzony w sekcję <li></li> i tam ładnie można nimi pomanewrować. Zaś gdy pozostaje sam atrybut a to nic nie idzie z tym zrobić....

Z góry dziękuję
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
phpion
post 6.12.2010, 08:37:10
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Na jednym znaczniku tego nie zrobisz. Musisz mieć "tło główne" czyli lewe zaokrąglenie + długi pasek tła środkowego oraz drugi plik z kończącym zaokrągleniem. Jeśli chcesz w kodzie mieć samo <a> to musisz poprzez JavaScript dodawać do tego elementu np. <span>. W <a> robisz tło główne, a w <span> wstawiasz tło kończące.
Go to the top of the page
+Quote Post
batman
post 6.12.2010, 09:40:41
Post #3





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Da się zrobić, ale IE6 (IE7 chyba też) może mieć problemy.
Ustawiasz w stylach dla znacznika a display: block. Do tego dochodzi height i ewentualne line-height. Jako tło ustawiasz jednopikselowy obrazek, który sam się "rozciągnie". Zaokrąglenia uzyskujesz przy pomocy border-radius (dla IE z pomocą przychodzi Javascript - http://blog.wilgucki.pl/2010/09/rubensowsk...e-czyli-o.html).


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
phpion
post 6.12.2010, 09:44:59
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




@batman:
Zauważ, że boki przycisku to nie są zwykłe zaokrąglenia. Jest tam też lekka szara poświata (ciemniejsza w środku przycisku), więc border-radius nie załatwi sprawy.
Go to the top of the page
+Quote Post
batman
post 6.12.2010, 09:56:54
Post #5





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




~phpion
Masz na myśli ten gradient? Jeśli tak, to border radius poradzi sobie z nim bez najmniejszego problemu.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
phpion
post 6.12.2010, 10:04:37
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Tak, miałem na myśli tą "otoczkę". Jeśli faktycznie jest tak jak piszesz (a pewnie wiesz co piszesz) to przynajmniej dowiedziałem się czegoś nowego smile.gif
Go to the top of the page
+Quote Post
batman
post 6.12.2010, 10:21:00
Post #7





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Border radius dobrze radzi sobie z gradientami. Fx, Chrome i Opera poprawnie wyświetlają zaokrąglone rogi. Do IE trzeba użyć javascript. O ile dobrze pamiętam, to w IE6 może być problem z wylewaniem się tła poza zaokrąglone rogi.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
pietrov8
post 6.12.2010, 12:50:50
Post #8





Grupa: Zarejestrowani
Postów: 188
Pomógł: 1
Dołączył: 4.07.2009
Skąd: ...

Ostrzeżenie: (10%)
X----


Ok dzięki wszytskim za wypowiedzi. Niedługo pokażę jaki efekt powstanie z sposobu który napisał: batman

Poprawiony projekt

Zmiany możecie zauważyć pod CZYTAJ WIĘCEJ.

Grafika mogłaby nawet tak zostać winksmiley.gif

Tylko jak zniwelować by atrybut a nie osiągał szerokości 100% boxu w którym się znajduje....
Go to the top of the page
+Quote Post
batman
post 6.12.2010, 12:54:41
Post #9





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Ustaw dla tego znacznika float: left i odpowiedni padding-right. Prawdopodobnie w IE6 będziesz musiał podać szerokość.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
pietrov8
post 6.12.2010, 12:57:57
Post #10





Grupa: Zarejestrowani
Postów: 188
Pomógł: 1
Dołączył: 4.07.2009
Skąd: ...

Ostrzeżenie: (10%)
X----


Ok gotowe winksmiley.gif Dzięki wielkie. A czy da się jeszcze te zaokrąglenia jakoś "podrasować"...

Poniżej kod tego elementu.
Kod
                div.box a{
                    float:left;
                    padding-right:13px;
                    display:block;
                    color:#5d91b5;
                    font-family:Verdana, Geneva, sans-serif;
                    text-transform:uppercase;
                    font-size:12px;
                    height:29px;
                    line-height:29px;
                    text-decoration:none;
                    padding-left:10px;}
                    div.box a:hover{
                        -moz-border-radius: 30px;
                        border-radius: 30px;
                        color:#FFF;
                        background:url(images/bg_a_03.png) repeat-x;}


Ten post edytował pietrov8 6.12.2010, 12:58:16
Go to the top of the page
+Quote Post
batman
post 6.12.2010, 13:08:51
Post #11





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Niestety nie da się tego bardziej podrasować. Możesz jeszcze pokusić się o dodanie ramki (border) w kolorze zbliżonym do koloru tła i pokombinować z różnymi stylami ramki, np inset, outset, itp.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
thek
post 6.12.2010, 13:36:54
Post #12





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Gdybyś mógł olać stare przeglądarki, to mógłbyś jeszcze pobawić się z pseudoklasami :before i :after. Tam jako tło ustawiałbyś owe obrazki, a jako tło elementu wielokrotnie powtarzany w poziomie pasek. Miałbyś więc tylko w CSS:
  1. a.klasa:before {
  2. background: url(sciezka_do_lewego_zaokrąglenia) transparent 0 0 no-repeat;
  3. }
  4. a.klasa:after {
  5. background: url(sciezka_do_prawego_zaokrąglenia) transparent 0 0 no-repeat;
  6. }
  7. a.klasa {
  8. background: url(sciezka_do_paska_srodka) transparent repeat-x;
  9. }
i drobne zmiany w atrybutach display, width, height, margin i padding, zależnie gdzie to miało by być na stronie i w jakiej konfiguracji użyte. Wywołanie zaś byłoby w postaci:
<a class="klasa" href="adres">Link</a>
czyli mniej więcej o co Ci chodzi. Niestety sam tego z racji niekompatybilności jeszcze nie używam. Stąd mogę mieć błędy pewne w tym co podałem. Na bank jednak w necie coś na ten temat powinno być szerzej opisane.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
pietrov8
post 6.12.2010, 13:56:30
Post #13





Grupa: Zarejestrowani
Postów: 188
Pomógł: 1
Dołączył: 4.07.2009
Skąd: ...

Ostrzeżenie: (10%)
X----


Ok lecz atrybuty :befor i after są mniej kompatybilne z przeglądarkami niż border radius winksmiley.gif I chciałem też uzyskać efekt znacznika "a" bez niepotrzebnych klas.
Go to the top of the page
+Quote Post
thek
post 6.12.2010, 14:08:58
Post #14





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A czym szkodzi zamiast definicji i wpisania klasy podać jego umiejscowienie w hierarchii? Ja użyłem jedynie a.klasa by było uniwersalniejsze. Jeśli zrobiłbym tak jak Ty div.box a to też nie powinno być problemu. Co do zaś reszty, czyli interpretacji przez przeglądarki :after i :before to masz rację. Z tym, że pełna kompatybilność radiusa może być osiągnięta jedynie poprzez jednoczesne użycie własnych atrybutów CSS przeglądarek, a więc: border-radius, -moz-border-radius, -webkit-border-radius (dla starszych wersji webkita) - khtml-border-radius, -o-border-radius smile.gif Z tym ostatnim są małe jaja, ponieważ Opera miała kiedyś obsługę zaokrągleń poprzez to co podałem, potem na kilka wersji ją usunęła całkowicie, a po jakimś czasie znów przywróciła w wersji border-radius (czyli już bez -o). Ogólnie trzeba uważać z tym jaką wersją jakiej przeglądarki oglądamy. Ogólnie zerknij sobie tu: http://csshover.pl/css/css-circles-czyli-r...-border-radius/


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 5.07.2025 - 11:55