webForumDet fria alternativet

oOnMouseOver med border i <tr>?

13 svar · 871 visningar · startad av SugarDaddy

SugarDaddyMedlem sedan apr. 20021 155 inlägg
#1

Aloha, trodde i min enfald att :
onmouseover="this.style.border = '1px solid black';" onmouseout="this.style.borderstyle = 'none';" skulle fungera men inte? Pillat med lite olika varianter border-bottom osv med samma klena resultat. På en <td> fungerar det ju finfint.
this.style.background fungerar på <tr> men inte tillämpligt f min del, är detta det enda man kan påverka?

DTD HTML 4.01 Transitional//EN
FF 1 & IE 6.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Kan inte annat än att bekräfta och även tillägga att inte funkar med CSS heller. Jag letade lite och det verkar inte som tr är ett inline-element och därför inte kan ta border-attributet.

jarvkloMedlem sedan juli 20013 378 inlägg
#3

nitro2k01 skrev:

Kan inte annat än att bekräfta och även tillägga att inte funkar med CSS heller.

Hmm
Om man kör CSS funkar det i Mozilla och andra vettiga webbläsare om man sätter

border:inherit;

på de <td> och <th> som ligger inuti den <tr> det gäller och bara manipulerar just border-attributet ;)

Prova:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Ett exempel</title>
</head>
<body>

<table>
  <tr
    style="1px solid transparent"
    onmouseover="this.style.border = '1px solid black';"
    onmouseout="this.style.border = '1px solid transparent';">
    <td style="border:inherit">Flygande bäckasiner söka hwila på mjuka tufvor</td>
  </tr>
</table>

</body>
</html>

Fast det är väl egentligen akademiskt iom att Opera och MSIE inte hanterar detta... :bire

SugarDaddyMedlem sedan apr. 20021 155 inlägg
#4

Bockar och bugar för svaren, satt precis och harvade igenom w3c för att hitta en CSS-bakväg. Å ena sidan känns det ju "skönt" att det inte var jag som var helt dum/blind, å andra sidan värdelöst att det inte funkar. :)
- Men Jarvklo, din lösning är riktigt vacker :bire, bara att beklaga att det inte fungerar för "gemene man".

nitro2k01Medlem sedan aug. 20039 342 inlägg
#5

Problemet är väl då också att om man har två td bredvid varandra, så får väl de varsin border, istället för en border runt hela tr'en?

ImpactMedlem sedan sep. 20041 551 inlägg
#6

Något liknande det här?
http://forums.devshed.com/archive/t-130635

SugarDaddyMedlem sedan apr. 20021 155 inlägg
#7

om man har två td bredvid varandra, så får väl de varsin border

Jo, och det ser kaka ut.. :)
Att min uppdragsgivare kör FFdär Jarvklos lösning funkar spelar mindre roll då kunderna inte gör det.
- Äsch, det som kändes som ett enkelt problem i morse visade sig vara "ömöjligt", ain't lifr a motherf*cker.. ;)

jarvkloMedlem sedan juli 20013 378 inlägg
#8

Hmm...
Omöjligt borde det väl iofs inte vara - Antag att du kan klura ut hur du med Javascript och HTML-DOM tar reda på
* "first-child" (= första td:n) för en tr och sedan ställer in border för top, left och bottom på den
* "last-child" (=sista td:n) och ställer in border top, right och left
* och sedan klurar ut hur du kan loopa igenom alla td-taggar som inte är "first" eller "last" och ställa in border-top och border-bottom på dem.

Antag sedan att du kan klura ut hur du lägger detta i en funktion som tar "this" och en border-definition som argument och koppla denna (med rimliga argument) till onmouseover och onmouseout ....

Nu till problemet - Jag är inte Javascriptare nog att kunna klura ut detta - men det finns ju experter på sådant i andra forum här, eller hur (iaf borde det kunna finnas någon här som kan tala om för oss om detta är en omöjlig idé eller ej ;) )

:bire

SugarDaddyMedlem sedan apr. 20021 155 inlägg
#9

Jarvklo - jo, om man visste sånt, jag skulle hacka mot något som gav mig odd/even i ren html tillbaka, första sista är "härligt" okänt.
Nåja, de med FF kommer att se andra saker än de me IE. All funktionalitet kvarstår dock :)

SugarDaddyMedlem sedan apr. 20021 155 inlägg
#10

Nå Jarvklo, efter att ha tuggat ännu en "beyond knowledge" standard till frukost - har du någon förklaring till att <tr> inte är ett inline-element och inte tar border i IE enligt ditt tidigare förslag? Jag är mest bara nyfiken :e
I FF märkte jag däremott att 1px solid transparent inget gav extra padding förrän efter mouseover?

jarvkloMedlem sedan juli 20013 378 inlägg
#11

har du någon förklaring till att <tr> inte är ett inline-element och inte tar border i IE enligt ditt tidigare förslag?

Nä, det jag först hittade i standarden om "border-properties" var att "these properties applies to all elements" vilket jag snabbt började tvivla på efter att ha provat påståendet genom att försöka lägga en border på en <br /> §e

Men vara hur det månde med det - i tabell-delen av CSS2.1 står det uttryckligen

Rows, columns, row groups, column groups, and cells may have borders drawn around them (there are two border models in CSS 2.1).

och sedan ges det flera exempel på hur man lägger border på <tr> med CSS... Så enligt standard skall det funka (antar alltså att bristen på stöd för detta i MSIE är en bugg :e )

Min gissning är att du finner det egentliga svaret på varför det verkar som att man behöver "border:inherit" på <td> för att det skall funka i Moz/FF i den del av CSS2-standarden som beskriver vad som skall hända om två element i en tabell måste hantera konflikter i border på "motstående sidor" (t.ex. om CSS:en för <tr> säger 1px solid black, och <td> säger "none" )

Och BTW - det där med att det skulle kunna bero på att <tr> inte är ett inline-element var inte min idé :p

frankofMedlem sedan jan. 20016 874 inlägg
#12

jarvklo skrev:

Nä, det jag först hittade i standarden om "border-properties" var att "these properties applies to all elements" vilket jag snabbt började tvivla på efter att ha provat påståendet genom att försöka lägga en border på en <br /> §e

Totalt OT, men frugan undrade på vad jag garvade åt, detta är humor ;) :e

nitro2k01Medlem sedan aug. 20039 342 inlägg
#13

jarvklo skrev:

Nä, det jag först hittade i standarden om "border-properties" var att "these properties applies to all elements" vilket jag snabbt började tvivla på efter att ha provat påståendet genom att försöka lägga en border på en <br /> §e

Rent tekniskt sett borde ju br inte vara en tagg utan en entity för att passa in i standarden...

jarvkloMedlem sedan juli 20013 378 inlägg
#14

Kan så vara - det är väl kanske därför w3c verkar fundera på att ersätta den med den nya taggen line

<l>....</l>

i xhtml2, men det är en annan historia ;)

137 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)