Der IE6 macht hier Probleme indem er nur die letzten beiden rating_container mit a.rating selected.gerade und ungerade nimmt.
Durch rumgoogeln bin ich draufgekommen, das er ein Problem mit verknüpften Klassen hat und hier deswegen immer nur die letzte jeweilge Klasse nimmt…
Gibt es hierfür einen BugFix bzw. kennt jemand einen Workaround!?
[HTML].rating_container a.rating_off.gerade{
background-image:url(„…/images/sterne/grau_rechts.gif“);
background-repeat: no-repeat;
width: 15px;
}
.rating_container a.rating_off.ungerade{
background-image:url(„…/images/sterne/grau_links.gif“);
}
.rating_container a.rating_on.gerade{
background-image:url(„…/images/sterne/gruen_rechts.gif“);
background-repeat: no-repeat;
width: 15px;
}
.rating_container a.rating_on.ungerade{
background-image:url(„…/images/sterne/gruen_links.gif“);
}
.rating_container a.rating_selected.gerade{
background-image:url(„…/images/sterne/gruen_rechts_blass.gif“);
background-repeat: no-repeat;
width: 15px;
}
.rating_container a.rating_selected.ungerade{
background-image:url(„…/images/sterne/gruen_links_blass.gif“);
}[/HTML]
Puccini
18. November 2009 um 10:45
2
zeig mal das html dazu.
wäre schön zu sehen wie du die klassen dann auch nutzt!
vielleicht macht diesmal ja der IE alles richtig (ich glaubs aber kaum:twisted:)
Wenn du den code zeigst, könnte man das viellecith sehen wo es einen workaround geben könnte!
Nicht ganz so leicht zu zeigen da es durch Javascript generiert wird
[PHP]
[/PHP]
Control.Rating = Class.create({
initialize: function(container,options){
Control.Rating.instances.push(this);
this.value = false;
this.links = [];
this.container = $(container);
this.container.update('');
this.options = {
min: 1,
max: 10,
rated: false,
input: false,
reverse: false,
capture: true,
multiple: false,
classNames: {
off: 'rating_off',
half: 'rating_half',
on: 'rating_on',
selected: 'rating_selected'
},
updateUrl: false,
updateContainer: false,
updateParameterName: 'value',
afterChange: Prototype.emptyFunction
};
hier steht noch einiges… was aber den ganzen Code nur unnötig lang macht… hab ich rausgeschnitten für hier…
[CODE]render: function(rating,force_selected){
(this.options.reverse ? this.links.reverse() : this.links).each(function(link,i){
if(link.value <= Math.ceil(rating)){
link.className = this.options.classNames[link.value <= rating ? ‚on‘ : ‚half‘];
if(link.value%2==0)
link.addClassName(„gerade“);
else
link.addClassName(„ungerade“);
if(this.options.rated || force_selected)
link.addClassName(this.options.classNames.selected);
}
else{
link.className = this.options.classNames.off;
if(link.value%2==0)
link.addClassName(„gerade“);
else
link.addClassName(„ungerade“);
}
}.bind(this));
},[/CODE]
threadi
18. November 2009 um 11:39
4
Der IE6 unterstützt verknüpfte Klassen definitiv nicht. Aus diesem Grund musst Du für diesen Browser darauf verzichten und wirklich einzelne Klassennamen verwenden.
system
18. November 2009 um 12:30
5
Was sind denn verknüpfte Klassen?
threadi
18. November 2009 um 13:19
6
Z.B. das hier:
a.rating_on.ungerade { [Eigenschaften] }
Der Code sagt:
Die nachfolgenden Eigenschaften betreffen alle Links () die sowohl die Klasse „rating_on“ als auch „ungerade“ zugewiesen haben.
threadi
18. November 2009 um 15:05
8
Diese Schreibweise gibt es sehr wohl:
Selectors
Und welche Probleme der IE6 damit hat kannst Du hier nachlesen:
Multiple CSS-Klassenvergabe | Labuschin Webdesign
Und hier auch mal selbst testen:
Untitled Page
system
18. November 2009 um 15:17
9
Oh, hab ich noch nie gesehen