Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CSS] Obrazek jako link - dziedziczenie stylów, IMG będący linkiem dziedziczy formatowanie tekstowego - jak zapobiec?
dolby
post 4.12.2008, 22:15:53
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 3.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witajcie,

Mam następujący problem:

Na stronie mam zarówno hiperłącza tekstowe, jak i w formie obrazków.

Z tekstowymi jest ok (zmienia sie kolor border-bottom dla linka aktywnego), natomiast w przypadku obrazków (niebędących display:block) ... również pojawia się linia poziomia (przecina obrazek co wygląda fatalnie).

W związku z tym mam pytanie - jak w CSS wpisać inne zachowanie dla linków obrazkowych (tak aby tej poprzecznej linii nie było)?

Oto schemat kodu strony:
  1. <div id="cont">
  2. <div class="box">
  3. <h2 class="white">Tytuł</h2>
  4. <div id="post">
  5. <p>Text text text <a href="x"> link txt </a> text text text</p>
  6. <p><a href="x2"><img src="z" /></a><a href="x3"><img src="z2" /></a><p>
  7. </div>
  8. </div>
  9. </div>
  10. </html>


A to CSS'ki:
  1. .box div a{border-bottom:1px solid #999;font-weight:700}
  2. .box div a:hover{border-bottom:1px solid #000}
  3. .box div img{padding:2px;border:1px solid #eee}


Oczywiście mógłbym dać display:block, ale chcę mieć oba obrazki w tej samej linii, wyśrodkowane.

Na rysunku poniżej widać poprawny link tekstowy ("edytuj") oraz tę irytujacą linię przechodzacą przez środek ikonek - ona właśnie jest do usunięcia.


Proszę Was o pomoc! sadsmiley02.gif

Ten post edytował dolby 4.12.2008, 22:22:31
Go to the top of the page
+Quote Post
piotrooo89
post 4.12.2008, 22:22:22
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




  1. .box div img a{i tu co tam chcesz}


--------------------
Go to the top of the page
+Quote Post
hiszpanespaniol
post 4.12.2008, 22:27:24
Post #3





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

Ostrzeżenie: (0%)
-----


ja widzę dwa wyjścia:

1. możesz dać obrazek jako tło linka, w css ( z tego co widzę, nie wyświetlasz galerii zdjęć) i za pomocą padding'u odsunąć tekst odnośnika na tyle, żeby tła nie zasłonił. w ten sposób podkreślenie będzie widoczne tylko pod tekstem.

2. Umieszczaj obrazki i tekst w linku w następujący sposób: obrazek<br />tekst odnośnika
to także daje pożądany skutek

edit:
właśnie przyjrzałem się Twojemu kodowi i widzę, że obrazek i tekst to osobne linki. nie rozumiem więc jak doszło do tego, że podkreślenie się pojawia pod obrazkami, zamiast border'u (domyślnie niebieskiego). Obrazek będący odnośnikiem nie ma podkreślenia, ale border. Może coś przeoczyłeś?

EDIT2:
Aby pozbyć się odstępu musisz wywalić wszystkie białe znaki pomiędzy obrazkami (albo "nie białe"). Najlepiej Nie dawaj więcej niż jeden obrazek wewnątrz jednego odnośnika

Ten post edytował hiszpanespaniol 4.12.2008, 22:38:22


--------------------
Go to the top of the page
+Quote Post
dolby
post 4.12.2008, 22:46:05
Post #4





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 3.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@piotrooo89: niestety, np.: taki kod nie daje żadnego rezultatu sadsmiley02.gif
  1. .box div img a{border:0px !important}


@hiszpanespaniol:
Mi się wydaje, że to jest taki tok "problemu":

dla linków (A) mam zdefiniowane border-bottom: 1px i jakiś kolorek.
W efekcie dla tekstu daje to efekty podobny do text-decoration:underline i jest git.

Natomiast w sytuacji, gdy w A mam włożone IMG, to wówczas wtedy również przeglądarka rysuje linie (po "linii" na której generowałaby tekst), co w efekcie daje efekt mizerny ("przekreśla" obrazek). No i logicznie to się zgadza (w końcu ma zadeklarowane, że dla A ma rysować border-bottom).

Pytanie polega teraz na tym: jak napisac w CSS'ie że dla A w których jest IMG ma nie być dolnej linii?

Ew. czy jest możliwość dania obrazkom display:block i położenia ich w tym samym wierszu obok siebie?

Help...

EDIT2:

w CSS mam nt. linków i obrazków jeszcze tylko to:
Kod
a{color:#000;outline:0;text-decoration:none}
img{vertical-align:middle}


Jaki odstęp? między obrazkami nie mam odstepu, tak to wyglada w kodzie (odpowiedzialny za genrowanie obrakza+ linka w jego postaci)

  1. <p><a title="xxx" href="http://xx"><img class="size-full wp-image-47 alignnone" src="http://xx" alt="xxx" width="32" height="32" /></a><a title="yyy" href="http://yy"><img class="size-full wp-image-48 alignnone" src="http://yy" alt="yyy" width="32" height="32" /></a></p>


Ten post edytował dolby 4.12.2008, 22:54:45
Go to the top of the page
+Quote Post
hiszpanespaniol
post 4.12.2008, 22:56:14
Post #5





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

Ostrzeżenie: (0%)
-----


jeżeli chcesz uzależnić css rodzica od obecności/nieobecnosci odpowiedniego dziecka, to wtedy rozwiązaniem problemu będzie js. Z tego co piszesz wynika wprost, że o to Ci chodzi. Zakładam więc, ze nieprecyzyjnie piszesz i tak naprawdę chodzi Ci o coś innego.

Jeżeli natomiast chcesz pozbyć się dolneo borderu pod obrazkiem, zrób podkreślenie w sposób "normalny" i za pomocą przeznaczonych do tego narzędzi. Użyj text-decoration (albo zostaw domyślne i wtedy pod tekstem będziesz miał podkreślenie, a wokół obrazka border który css'em możesz usunąć smiało)

edit:
Cytat
img{vertical-align:middle}

to pewnie wyjaśnia dlaczego border przekreśla obrazki.

edit2:
zauważ, że border odnośnika jest widoczny pomiędzy obrazkiem, a border'em obrazka. jeżeli dasz jakiś kolor tła w tym miejscu (czyli dla img), to wtedy ten kolor tła obrazka zasłoni Ci krechę pod spodem. Może się to przyda.

Ten post edytował hiszpanespaniol 4.12.2008, 23:03:41


--------------------
Go to the top of the page
+Quote Post
dolby
post 4.12.2008, 23:18:11
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 3.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Właśnie tego sie obawiałem - myślałem jednak, że jest jakiś "hack" na CSS'a smile.gif

Zastosowałem border-bottom zamiast text-decoration:underline z tego powodu, że zależało mi na tym by "efektem" hiperłączy była tylko zmiana koloru podkreślenia ich. Tego "dekoracją" nie uzyskam - dobrze mówię ?

Pomysł z tłem jest bdb, lecz że ja mam półprzeźroczystość generowaną za pomoca filtrów sad.gif Czyli tak czy siak będzie przebijało conieco sad.gif

Troche googlowałem i wydaje mi sie, że nie ma na to mocnych. Wszyscy próbują blokować border IMG, ale to nie obrazek go generuje, tylko A - czy zatem pozostaje mi tylko dorzucanie specjalnej klasy do linków w których beda obrazki, z deklaracją w CSS "border:none"?

hiszpanespaniol - słowa uznania za Twoją chęć pomocy - dawno na forum nie spotkałem się z takim zaangażowaniem smile.gif Za celne rady i pomoc otrzymujesz pkt. smile.gif

PS. Sorx za niecelne określenia - prosze o wyrozumiałość z racji pory dnia winksmiley.jpg
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: 24.04.2025 - 04:40