CSS en rollover

Status
Niet open voor verdere reacties.

Pellekaart

Gebruiker
Lid geworden
25 jun 2012
Berichten
48
dag helpmij.nl-forum,

Voor mijn website wil ik mijn rollover aanpassen zodat de ''hoover'' niet de actieve AP-elementen overlappen.
Nu werken de rollover(afbeeldingen) wel maar als je de items dicht bij elkaar plaatst dan overlappen de ''hoover''-items(zegmaar de balonnen) de AP-elementen (de te scrollen woorden).

Dit is waarschijnljk op te lossen door de ''hoover'' te splitsen in twee elementen? (antwoord-woord en tekstballon)
Je hebt dan zegmaar 3 rollover-elementen
1) scoll-item (vraag)
2a) antwoord
2b) tekstballon

Hoe zou je dit nu goed kunnen maken in Dreamweaver?
Ik zou graag de rollover willen hebben binnen de externe stylesheet.

http://robertheemskerk.nl/testsite.html

HTML:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>image sprite</title>
</head>


<link href="testsite.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">

</script>


<div id="logo"></div><!--end image-sprite-->
<div id="watmaakik"></div><!--end image-sprite-->
<div id="wiebenik"></div><!--end image-sprite-->
<div id="inspiratie"></div><!--end image-sprite-->
<div id="vorm"></div><!--end image-sprite-->
<div id="contact"></div><!--end image-sprite-->


</head>

</html>
Externe Stylesheet:
Code:
@charset "UTF-8";


#logo
{
	background:url(logo.png);
	width:399px;
	height: 87px;
	top: 10px;
	position: absolute;
	z-index: 1;
		}

#watmaakik
{
	width:182px;
	height:37px;
	top: 300px;
	position: absolute;
	z-index: 1;
	left: 50px;
	background-image: url(watmaakik-1.png);
	background-repeat: no-repeat;
		}
		
#watmaakik:hover {
	width:225px;
	height:40px;
	background-image: url(watmaakik-2a.png);
	position: absolute;
	top: 297px;
	left: 47px;
	background-repeat: no-repeat;
}


		
#wiebenik
{
	width:182px;
	height:37px;
	top: 400px;
	position: relative;
	background-image: url(wiebenik-1.png);
	float: left;
	left: 250px;
	z-index: 2;
	background-repeat: no-repeat;
}

#wiebenik:hover
{
	width:469px;
	height:267px;
	background-image: url(wiebenik-2.png);
	position: absolute;
	top: 	220px;
	left: 250px;
}

#inspiratie
{
	width:279px;
	height:66px;
	top: 550px;
	position: absolute;
	background-image: url(Inspiratie.png);
	float: left;
	z-index: 2;
	left: 800px;
	background-repeat: no-repeat;
}

#inspiratie:hover
 {
	width:500px;
	height:468px;
	background-image: url(Inspiratie2.png);
	position: absolute;
	top: 350px;
	left: 800px;
	cursor: auto;
	background-repeat: no-repeat;
}

#vorm
{
	width:469px;
	height:119px;
	top: 300px;
	position: absolute;
	background-image: url(Vorm1.png);
	left: 500px;
	background-repeat: no-repeat;
}

#vorm:hover
 {
	width:469px;
	height:267px;
	background-image: url(Vorm2.png);
	position: absolute;
	top: 152px;
	left: 500px;
	cursor: crosshair;
}

#contact
{
	width:92px;
	height:30px;
	top: 250px;
	position: absolute;
	background-image: url(contact1.png);
	left: 500px;
	background-repeat: no-repeat;
}

#contact:hover
 {
	width:469px;
	height:267px;
	background-image: url(contact2.png);
	position: absolute;
	top: 50px;
	left: 500px;
	cursor: default;
}
/* CSS Document */


body {
	background-color: #F30;
	background-image: url(cirkel.png);
	background-repeat: no-repeat;
	background-position: 200px 50px;

Suggesties en opmerkingen zijn welkom!

groeten Robert
 
Laatst bewerkt door een moderator:
Ik heb inmiddels een vrij goede oplossing voor dit ''probleempje''

Deze zal ik later hier nog plaatsen

Robert
 
Hoi Pellekaart,
Wat er nu gebeurt, is dat bij een hover het hele gebied van het hover-oppervlak uitgebreid wordt:

css-hoverprobleem.png

Die gebieden van de verschillende items overlappen elkaar, en dan kan je nooit bij een item komen dat in een laagje eronder zit. Maar hoe je het ook wendt of keert, altijd zal de ene laag boven de andere liggen, dus wijzigen van de volgorde kan niet helpen: dan gaat het ergens anders mis.

Inderdaad zullen de hovers opgeslitst moeten worden, per stuk in het echte hover-gebiedje en een "css popup" gedeelte dat daar los van staat. Beweeg je dan buiten het hover-gebied, dan verdwijnt de css popup meteen, en kan je bij de andere hover-gebieden komen.

Dit kan je realiseren door een <span></span> binnen de hover-div op te nemen waar de tekstballon in zit, bv.:

HTML:
...
<div id="watmaakik"><span></span></div> 
...

De <div> geef je een relatieve positie, de <span> een absolute positie.
Vervolgens zet je de span buiten beeld:
Code:
#watmaakik span {
    ...
    left: -9999px;
    }
En dan laat je een hover over het kleine #watmaakik-gebiedje de <span> met inhoud triggeren:
Code:
#watmaakik:hover span,
#watmaakik:focus span {
    left: 0; /* of wat er maar nodig is */
    }
Dit kan allemaal in het externe stylesheet opgenomen worden, dat is geen enkel probleem.

=======
Iets anders (1)
Door het alles absoluut positioneren, zoals nu, kunnen er problemen ontstaan bij kleinere beeldschermen. Dan kunnen delen van de pagina niet meer bereikbaar worden. Kijk maar wat er gebeurt bij een kleiner browser-window.

Iets anders (2)
De gebruikte kleuren voldoen op geen stukken na aan de standaarden: de tinten liggen veel te dicht bij elkaar om ook voor bezoekers met minder contrastvermogen (ca. 40% van de surfers) goed of überhaupt leesbaar te zijn.

Iets anders (3)
Alle teksten (zowel de links als in de tekstballonnen) zijn images, en geen echte teksten. Dat heeft verschillende nadelen:
  • Voor een aantal bezoekers zullen de letters in de tekstballonnen te klein zijn, maar met vergroting van het letterformaat op hun browser zijn images niet te vergroten. Dat kan alleen door in te zoomen op de hele pagina tegelijk, en dat is (a) niet gebruiksvriendelijk, en (b) het levert weinig verbetering op, want de letters worden daardoor onscherper.
  • De pagina is 100% ontoegankelijk voor mensen die een pure tekstbrowser of voorleesbrowser gebruiken. Die kunnen hooguit de (toekomstige) links naar vervolgpagina's opmerken, en verder helemaal niets. Dit resultaat komt er in een tekstbrowser.
  • Het is in images onmogelijk om teksten te selecteren, bv. het e-mail adres (even snel een mailtje maken met copy/paste in het mailprogramma is er niet bij) of het telefoonnummer. Nu moet je dat gaan opschrijven of ergens anders intikken, in plaats van in één klap alle contactgegevens te kunnen copy/pasten.
  • Google! :eek: Die kan geen images lezen, dus alles wat op de pagina staat gaat aan Google voorbij. Er zijn geen woorden, er zijn geen trefwoorden, helemaal niets... Dat zal geen hoge score opleveren, want Google moet het van teksten hebben.
Conclusie: de images omzetten in echte letters! :)

Met vriendelijke groet,
CSShunter
____________
PS: Je tussentijdse bericht nr. #2 niet gezien; m'n pagina stond nog open op bericht nr. #1. ;)
 
Laatst bewerkt:
dag CSShunter,

Ik had een script gemaakt die werkte d.m.v. afbeeldingen maar na het lezen van jouw commentaar ben ik begonnen om het te maken uit 'puur' CSS.
Het lukt me nu redelijk, het is nu i.e.g uit tekst opgebouwd dat niet korselig wordt bij vergroten.
Verder ben ik nog niet op het verdere commentaar ingegaan (maar zal daar zeker aandacht aan geven waar ik dat nodig vind)


In CSS Rollover met (soort van) speechballon gemaakt;

http://robertheemskerk.nl/Hover3.html

Ik probeer nu het ''aanhangsel'' te maken, aan de speechballon.
Dat lukt me niet. Het mag een heel eenvoudig soort aanhangseltje zijn.

Op het internet vindt ik wel allerlei voorbeelden van mooie speechballonnen(CSS) maar die zijn vooralsnog moeilijk te integreren in wat ik heb gemaakt.

Deze is wat tot nu toe het meest in de buurt komt:
http://robertheemskerk.nl/Hover.html

Maar dan zit ik met één hoek(rechtsonder) en dat de rand vh kader een uitsparing laat zien in de achtergrond (in de rode cirkel).

Ik ben op zoek naar een ''simpele'' oplossing?
Of hoe ik een speechballon kan integreren in mijn situatie? (met rollover)

groeten Robert
 
Hoi Robert,
Ik denk dat je voor het aanhangseltje het beste een "border-slant" kunt gebruiken. Dat is een element van 0*0 pixels dat alleen maar borders heeft, zodat je daarvan bv. alleen de bovenste en linker border van kunt gebruiken in de gewenste kleur, terwijl de andere twee op transparant worden gezet. Daar mee krijg je een mooi driehoekje.



Vervolgens kan zo'n driehoekje als apart element onder de tekstballon gehangen worden.

Met vriendelijke groet,
CSShunter
___________
*) Deze pagina dateert van een jaar of 10 geleden, zodat de daar genoemde browserversies al lang niet meer in omloop zijn.
Maar het werkt nog steeds! :)
Sterker nog, dankzij browser-verbeteringen doet het javascript van de met border-slants gemaakte Rotating Star het nu heel aardig, zelfs in de gecombineerde rotatie en animatie. Vroeger was de beweging erg hortend en stotend.
 
Laatst bewerkt:
Hartelijk bedankt!

Ik heb inmiddels zo'n aanhangseltje samen kunnen stellen en het werkt prima.
Vreemd genoeg zag het er op mijn computer nog wat pixelig uit (de schuine rand vh aanhangsel) maar nu ik het ge-upload heb zijn deze pixels niet meer te zien.
In Firefox ziet het er iets pixelig uit, in Safari is het helemaal strak.

http://robertheemskerk.nl/Hover3.html

Ik heb achtergrond transparant gemaakt, gewoon ''transparant'' invullen.
Verder nog wat geroteerd.

Fijn dat het werkt!
Nogmaals dank!

Robert
 
Laatst bewerkt:
Hoi Robert,
Ja, dat ziet er mooi uit.
In Chrome doet ie het ook vlekkeloos, en ook in Internet Explorer 9 (en 10).

Opera heeft er wat moeite mee:
aanhangsel-opera.png
(2x vergroot)

Maar, hm, Internet Explorer 8 weet helemaal niets van deze html5 en css3 te bakken *).
In IE8 dus helemaal geen tekstballon te zien... :shocked:

Nu is IE8 op dit moment in gebruik bij 13% van de Nederlandse surfers (zie deze), oftewel 33% van de NL surfers met Internet Explorer kunnen geen tekstballonnen zien.

Helaas is deze versie dus niet geschikt voor het grote publiek.
Ik denk dat je met Conditional Comments aan de slag moet (ken je die?) om een alternatieve presentatie voor IE8 te maken.

Met vriendelijke groet,
CSShunter
_________
*) NB: Voor html5 moet een ander !Doctype dan XHTML1.0 gebruikt worden, zie hier (Transitional is sowieso af te raden, zie hier). Een XHTML1.0 Strict doctype kan eventueel wel voor html5-pagina's, maar wordt door w3c afgeraden (zie hier).
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan