webForumDet fria alternativet

Visa göm lager på rätt sätt

HTML & CSS

3 svar · 526 visningar · startad av Fuel

Medlem sedan okt. 20001 285 inlägg
Frågan#1

Har en sida där jag har ett par <div> som gömms som default.

<div id="picture-ecard" class="be-unhidden"></div>

Sidan ska fungera med eller utan js.

Gömmer <div> med ett javascript i slutet på sidan, inte med en css klass så dom syns utan js.

document.getElementById('picture-ecard').className = "be-hidden";

Länkarna ser ut så här:

<a href="#picture-ecard" onclick="show_hide('picture-ecard'); return false" title="Send as ecard">

För att fungera utan js.

Frågan är : är detta det bästa sättet? zcorpan? ;)

Medlem sedan dec. 20042 245 inlägg
#2

Finns det nåt innehåll i diven? :)

Ur en semantisk synpunkt borde du kanske använda irrelevant="" från HTML5 så väl som, eller i stället för, class="be-hidden". I dagsläget gör det dock ingen skillnad då ingen har implementerat irrelevant="" än, vad jag vet. Däremot är det tydligen nödvändigt att ange både display:none och visibility:hidden för att vissa skärmläsare ska tycka att det verkligen är "gömt".

Vidare kanske du inte borde använda return false, då det kan vara användbart att låta elementet få "fokus" så att skärmläsare hamnar där du vill och inte är kvar vid länken (men om diven är precis efter länken så är det ok ändå). Jag är medveten om att det kan orsaka ett hopp för visuella användare; om det är ett problem kan du lägga en länk eller nåt i diven och låta ett skript focus()era den.

Medlem sedan okt. 20001 285 inlägg
#3

Ja, det är mest olika formulär och sådant som tillhör ett huvudobjekt som jag döljer för att spara utrymme i sidebar:en

Exempel:

<div id="sidebar">

<h2>Subject menu</h2>

<ul>
<li><a href="#div1" onclick="show_hide('div1'); document.getElementById('fokus1').focus();" title="div1">Div 1</a></li>
<li><a href="#div2" onclick="show_hide('div2'); return false" title="div2">Div 2</a></li>
<li><a href="#div3" onclick="show_hide('div3'); return false" title="div3">Div 3</a></li>
<li><a href="#div4" onclick="show_hide('div4'); return false" title="div4">Div 4</a></li>
</ul>

<div id="div1" irrelevant>
<form>
<p id="fokus1">
<label for="text1">Hey</label>
<input type="text" name="text1" id="text1" />
<p>
</form>
</div>
<div id="div2" irrelevant><h2>Data</h2></div>
<div id="div3" irrelevant><p>Annat</p></div>
<div id="div4" irrelevant><form></form></div>

</div>

<div id="main-content">

<h1>Subject</h1>

</div>

<script type="text/javascript"><!--//--><![CDATA[//><!--
document.getElementById('div1').className = "be-hidden";
/*
document.getElementById('div1').irrelevant = true;
*/
//--><!]]></script>

Tack för informationen :bire

Medlem sedan dec. 20042 245 inlägg
#4

Notera att om du vill att informationen ska vara synlig utan js så borde det vara skriptet som lägger till irrelevant="", och inte ha det i HTML-koden från början, precis som med class="". :)

478 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
309 ms — deklarationer (db)
0 ms — hämta statistik (cache)
154 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)