Dotted border onder linkjes, maar niet onder afbeeldingen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Menesis
  • Registratie: April 2004
  • Laatst online: 21:42
Voor een website wil ik graag een dotted streep onder een link als je er met de muis overheen hovered, dat heb ik zo opgelost in mijn css stylesheet:
code:
1
2
3
a:hover{
  border-bottom: 1px dotted #82B02A;  
}


het probleem is dat afbeeldingen met een link nu ook een streepje onder de afbeelding tonen en het lukt me niet om dit weg te halen. Het <a> element staat namelijk om het <img> element, dus ik kan geen onderscheid maken tussen een <a> om een plaatje of om een tekst...
Iemand enig idee hoe dit opgelost kan worden?

dit werkt namelijk niet:
a:hover img{
border:none !important;
}
Ter validatie: als ik het volgende uitvoer krijg ik een groene border om het plaatje te zien, met daarbij ook nog eens die dotted border eronder...
a:hover img{
border: 1px solid #00ff00;
}

[ Voor 0% gewijzigd door Menesis op 07-08-2012 14:34 . Reden: !important tag toegevoegd ]

Mixed Reality dev


Acties:
  • 0 Henk 'm!

  • Mike2k
  • Registratie: Mei 2002
  • Laatst online: 22-08 11:59

Mike2k

Zone grote vuurbal jonge! BAM!

Dan zou je een <div> of <span> om je <a href><img /></a> kunnen zetten...

Daarna kun je doen:
#div-of-span a:hover {
border:none;
}

Toch ?

You definitely rate about a 9.0 on my weird-shit-o-meter
Chuck Norris doesn't dial the wrong number. You answer the wrong phone.


Acties:
  • 0 Henk 'm!

  • Alternative
  • Registratie: November 2008
  • Laatst online: 10-04-2022
Probeer eens
a img{
border: none !important;
}

Acties:
  • 0 Henk 'm!

  • Menesis
  • Registratie: April 2004
  • Laatst online: 21:42
@Mike: ja dat zou zeker kunnen, maar ik vind dat niet de 'mooiste' oplossing, het zou toch simpeler moeten kunnen?
@Alternative: helaas, werkt niet..

Mixed Reality dev


Acties:
  • 0 Henk 'm!

  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 01-08 10:05
Dit verbergt het bordertje. Smerig, maar het werkt. Het doet simpelweg je afbeelding over het bordertje laten lopen. Het nadeel hiervan is dat het niet werkt met transparante afbeeldingen. Je zult dan de afbeelding een achtergrond moeten geven.

Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
a {
    border-bottom: 1px solid black;
    display: inline-block;
}
a img {
    position: relative;
    top: 1px;
    display: inline-block;
    vertical-align: bottom;
}


Afbeeldingslocatie: http://i.imgur.com/N5Lut.png

[ Voor 67% gewijzigd door Gamebuster op 07-08-2012 14:38 ]

Let op: Mijn post bevat meningen, aannames of onwaarheden


Acties:
  • 0 Henk 'm!

  • 8088
  • Registratie: December 2000
  • Niet online

8088

NaN

Menesis schreef op dinsdag 07 augustus 2012 @ 14:24:
dit werkt namelijk niet:
a:hover img{
border:none;
}
Je spreekt het verkeerde element aan: de border is van toepassing op a, niet img. !important toevoegen heeft daarom ook geen zin.

Waarom niet een aparte class gebruiken?

Do you seek to engage in or have you ever engaged in terrorist activities, espionage, sabotage, or genocide?


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Mike2k schreef op dinsdag 07 augustus 2012 @ 14:28:
Dan zou je een <div> of <span> om je <a href><img /></a> kunnen zetten...

Daarna kun je doen:
#div-of-span a:hover {
border:none;
}

Toch ?
Ik zou voor een variatie op deze oplossing gaan: geef de <a> waar een image in zit een extra class.
Alternative schreef op dinsdag 07 augustus 2012 @ 14:32:
Probeer eens
a img{
border: none !important;
}
De "!important" is sowieso onnodig. Verder zit daar het probleem niet.
Gamebuster schreef op dinsdag 07 augustus 2012 @ 14:35:
Dit verbergt het bordertje. Smerig, maar het werkt. Het doet simpelweg je afbeelding over het bordertje laten lopen. Het nadeel hiervan is dat het niet werkt met transparante afbeeldingen. Je zult dan de afbeelding een achtergrond moeten geven.

Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
a {
    border-bottom: 1px solid black;
    display: inline-block;
}
a img {
    position: relative;
    top: 1px;
    display: inline-block;
    vertical-align: bottom;
}


[afbeelding]
Ik zou echt veel liever een extra class toevoegen aan een paar <a>'s dan een oplossing als deze, eerlijk gezegd.

[ Voor 38% gewijzigd door OkkE op 07-08-2012 14:39 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 01-08 10:05
OkkE schreef op dinsdag 07 augustus 2012 @ 14:38:
Ik zou echt veel liever een extra class toevoegen aan een paar <a>'s dan een oplossing als deze, eerlijk gezegd.
Ik ook, maar dat was zijn vraag niet :P
Ik laat alleen zien dat het kan.

edit: Dat was zijn vraag wel.

[ Voor 10% gewijzigd door Gamebuster op 07-08-2012 14:42 ]

Let op: Mijn post bevat meningen, aannames of onwaarheden


Acties:
  • 0 Henk 'm!

  • brambo123
  • Registratie: December 2006
  • Laatst online: 11-09 21:30
Net wat 8088 zegt:
je css heeft betrekking tot A en niet IMG
Je kan beter een aparte class gebruiken.

Cascading Stylesheet:
1
2
3
.dotted a:hoover{
    border-bottom: 1px dotted #82B02A;  
}


HTML:
1
2
<a class='dotted' href='http://<>/'>blabla</a>
<a href='http://<>/'><img src="image.png"/></a>

Acties:
  • 0 Henk 'm!

  • Menesis
  • Registratie: April 2004
  • Laatst online: 21:42
Hmm, dan moet ik inderdaad maar een class toevoegen..

ik heb de a:hover nu achter p gezet (p a:hover{ } ) en dat scheelt alweer wat.

@Gamebuster: jouw oplossing werkte gek genoeg op 1 vd afbeeldingen (terwijl er 4 op dezelfde wijze door Drupal gegenereerd worden).

[ Voor 18% gewijzigd door Menesis op 07-08-2012 14:48 ]

Mixed Reality dev


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Gamebuster schreef op dinsdag 07 augustus 2012 @ 14:40:
[...]

Ik ook, maar dat was zijn vraag niet :P
Ik laat alleen zien dat het kan.
Hehe, true.

Ik vind het alleen wel nodig om in zo'n geval aan te geven dat een extra class toevoegen (in mijn ogen) een veel betere oplossing is. :)
brambo123 schreef op dinsdag 07 augustus 2012 @ 14:42:

Cascading Stylesheet:
1
2
3
.dotted a:hoover{
    border-bottom: 1px dotted #82B02A;  
}


HTML:
1
2
<a class='dotted' href='http://<>/'>blabla</a>
<a href='http://<>/'><img src="image.png"/></a>
Laten we er dan a.u.b. ten eerste een classname van maken die niets zegt over de stijl en ten tweede de uitzondering* (dus links met een image er in) juist geen border geven ipv anders om.

Ik zou alle links een :hover van 1px dotted geven en een aparte .figure:hover waarbij de border wordt weggehaald.

* Een link geen hover geven is altijd een uitzondering in mijn ogen.
Menesis schreef op dinsdag 07 augustus 2012 @ 14:46:
Hmm, dan moet ik inderdaad maar een class toevoegen..

ik heb de a:hover nu achter p gezet (p a:hover{ } ) en dat scheelt alweer wat.
Tot die <a><img></a> ook opeens binnen een <p> komt te staan ....

[ Voor 13% gewijzigd door OkkE op 07-08-2012 14:49 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • brambo123
  • Registratie: December 2006
  • Laatst online: 11-09 21:30
@OkkE
classname is altijd een eigen keuze, ik geef hier alleen maar even een snel voorbeeld...
En ik kies er toch voor dat links die je dotted wilt hebben de uitzondering is, persoonlijke keuze...

Acties:
  • 0 Henk 'm!

  • 8088
  • Registratie: December 2000
  • Niet online

8088

NaN

brambo123 schreef op dinsdag 07 augustus 2012 @ 14:42:
Cascading Stylesheet:
1
2
3
.dotted a:hoover{
    border-bottom: 1px dotted #82B02A;  
}
In dat geval zou het parent element van a de klasse dotted moeten hebben. Dan is dit logischer:
Cascading Stylesheet:
1
2
3
a.dotted:hover{
    border-bottom: 1px dotted #82B02A;  
}

Toch zou ik het eerder (zoals OkkE al aangaf) zo doen:
Cascading Stylesheet:
1
2
3
4
5
6
a:hover {
    border-bottom: 1px dotted #82B02A;
}
a.figure:hover {
    border: none;
}

[ Voor 16% gewijzigd door 8088 op 07-08-2012 15:22 ]

Do you seek to engage in or have you ever engaged in terrorist activities, espionage, sabotage, or genocide?


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

brambo123 schreef op dinsdag 07 augustus 2012 @ 14:57:
@OkkE
classname is altijd een eigen keuze, ik geef hier alleen maar even een snel voorbeeld...
Classname is uiteraard een eigen keuze. Maar ook al is het alleen even snel een voorbeeld, door dat jij nu de class "dotted" gebruikt, geef je imho het verkeerde voorbeeld.
Wat nu als er een wijziging komt waardoor het een normale streep wordt of helemaal geen streep meer maar een background-color?
En ik kies er toch voor dat links die je dotted wilt hebben de uitzondering is, persoonlijke keuze...
Dit is inderdaad vooral kwestie van smaak, persoonlijke keuze, etc... :)

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45

Bosmonster

*zucht*

Sowieso is een "dotted underline" gereserveerd voor abbr.

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Bosmonster schreef op dinsdag 07 augustus 2012 @ 20:01:
Sowieso is een "dotted underline" gereserveerd voor abbr.
Inderdaad. Op deze manier wordt de lijn der verwachting van de gebruiker met voeten getreden. Het is zeker geen goed UX design.
Pagina: 1