Forums Développement Multimédia

Aller au contenu

Problème bizarre avec SPry

CODE HTML CSS

7 réponses à ce sujet

#1 Benjahinfo

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 07 June 2011 - 08:09 AM

Bonjour à tous !!
Pour mon premier post sur ce site je crois que je vais peut-être posé une colle !!??
Bon je suis débutant en HTML... mais je me débrouille en info.
J'ai adobe dreamweaver CS5, et j'ajoute un menu spry avec celui-ci. Mais mon soucis est que lorsque je prévisualise mon site, mon objet spry est figé. J'ai pourtant bien rectifié les chemins menant au script... je ne comprend pas.

J'ai laissé un exemple sur mon site dans une page non référencé par les autres:
Ici le liens !!

J'espère que vous pourriez m'aider !

#2 Benjahinfo

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 07 June 2011 - 08:51 AM

Bon j'avance un peu, j'ai décoché la case animation, qui fait que maintenant le panneau s'ouvre et se ferme. Mais je suis très embêtant. Je veux corriger ce problème, une solution ?

#3 Benjahinfo

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 07 June 2011 - 09:05 AM

Encore un peu... j'ai d'abord essayer, dans le fichier de script de modifier les true en false pour "this.enableAnimation = true", mais sans succès... Mais si je modifie le "this.animator = false;" en true, l'animation marche... Le problème à l'air résolu.

#4 Eddy.vh

    Éternel apprenti.

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1194 messages

Posté 07 June 2011 - 11:03 AM

Bonjour.
Je viens de me rendre sur ton lien, et l'animation des box ne se fait pas, le contenu de 1 et 2 sont affichés simultanément !
Peut-on voir la structure de ton site dans DW ? (capture d'écran)

J'espère que tes couleurs ne sont pas définitives parce que le vert des liens sur fond gris sombre, on n'y voit rien ! De même qu'à droite, le texte gris clair sur fond gris plus sombre, faut vraiment forcer pour lire.

#5 Benjahinfo

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 07 June 2011 - 11:54 AM

Voir le messageedfred, le 07 June 2011 - 11:03 AM, dit :

Bonjour.
Je viens de me rendre sur ton lien, et l'animation des box ne se fait pas, le contenue 1 et 2 sont affichés simultanément !
Peut-on voir la structure de ton site dans DW ? (capture d'écran)

J'espère que tes couleurs ne sont pas définitives parce que le vert des liens sur fond gris sombre, on n'y voit rien ! De même qu'à droite, le texte gris clair sur fond gris plus sombre, faut vraiment forcer pour lire.
Bonjour et merci de m'avoir répondu.
Ok je prends note de tes conseils pour les couleurs, je voulais que mon site soit plus sobre c'est pour ça...

Sinon pour l'élement Spry sa remarche, parce que dans le script du Spry j'ai changé le paramètre de "this.animator ="
que j'ai mis sur false. Pour ce qui est de la structure sur le site dans DW, le problème n'apparaissait pas. Je reviens de tester en remettant true à cette options, rien ne change visuellement dans DW, je peux cliquer sur l'oeil etc. Fichier joint  888.png   29.75 Ko   18 téléchargement(s). Le problème n’apparaît que lors de la prévisualisation sur un navigateur. Je vous laisse aussi le code source de ma page Fichier joint  AideCS.html   9.24 Ko   45 téléchargement(s) Fichier joint  AideCS.css   10.61 Ko   24 téléchargement(s) .
J'ai constaté ce problème sur tout les éléments Spry sur les menus déroulants, etc...
Cette option ne m'a pas l'air utile pour moi, je me suis pas encore renseigner sur sa fonction.
Si vous avez d'autres conseils, je les acceptent volontiers. Merci

Modifié par Benjahinfo, 07 June 2011 - 11:55 AM.


#6 Eddy.vh

    Éternel apprenti.

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1194 messages

Posté 07 June 2011 - 12:44 PM

Sur le lien que tu poste en début de topic, le spry ne fonctionne pas on a onglet 1 et onglet 2 puis dessous : Contenu 1 et Contenu 2
Je soupçonne le chemin vers le dossier des scripts mais sans la structure du site comme demandé, on ne peut vérifier.

Aussi, tu dis être débutant en html, si tu crées un srpy, il doit fonctionner avec sa config par défaut, pourquoi allez chipoter dans le code javascript ??? Je ne dis pas que c'est mal hein mais sans savoir, on fait souvent pire que mieux.

#7 Benjahinfo

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 07 June 2011 - 13:27 PM

Voir le messageedfred, le 07 June 2011 - 12:44 PM, dit :

Sur le lien que tu poste en début de topic, le spry ne fonctionne pas on a onglet 1 et onglet 2 puis dessous : Contenu 1 et Contenu 2
Je soupçonne le chemin vers le dossier des scripts mais sans la structure du site comme demandé, on ne peut vérifier.

Aussi, tu dis être débutant en html, si tu crées un srpy, il doit fonctionner avec sa config par défaut, pourquoi allez chipoter dans le code javascript ??? Je ne dis pas que c'est mal hein mais sans savoir, on fait souvent pire que mieux.

Parce que c'est justement cette config par défaut qui m'a causé problème, dans le code javascript, le paramètre que j'ai changé en false est en true par défaut, c'est juste ça que j'ai changé.
En fait j'ai surement posté le sujet un peu trop vite, mais je pouvais pas savoir que j'allais trouvé une partie de la solution.
Je suis débutant en HTML, mais j'ai commencé la programmation Batch, et j'ai décidé de passer au JAVA, mais avant j'en fini avec tous ce que j'ai crée. c'est pour ça que j'arrive à comprendre quelques trucs en générale.

La structure de mon site:
index.html
index.css
SpryAssets > SpryCollapsiblePanel.js
> SpryCollapsiblePanel.css
aideCS > aideCS.html ( page actuellement en travail )
> aideCS.css
...

Le chemin doit être bon, j'ai pensé à rajouter les ".." devant le chemin comme montré dans le code source.
Et puis même sûr qu'il soit bon puisque quand je désactive le paramètre en question cela remarche...
Mais lorsque le paramètre est activé, mon onglet se bloque, et c'est la même chose pour les autres éléments Spry.
Ce paramètre en fait, à l'air de me servir à rien, je sais que c'est lié à l'animation, et donc je soupçonne plutôt un paramètre manquant dans le script java du Spry à la fin de ma page html.
C'est drôle parce que quand je regarde des tutos, les personnes qui l'utilise le Spry n'ont pas besoin de faire ça... Alors c'est peut-être le script fournis par CS5 qui serait corrompu ?? je le fourni au cas ou, ci dessous.
Ceci n'étant pas primordiale pour moi, tu n'est pas obligé de continuer à m'aider. Mais si tu trouve la réponse, je suis preneur, et comme ça ce sujet sera plus complet !!

// SpryCollapsiblePanel.js - version 0.8 - Spry Pre-Release 1.6.1
//
// Copyright (c) 2006. Adobe Systems Incorporated.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
//   * Redistributions of source code must retain the above copyright notice,
//     this list of conditions and the following disclaimer.
//   * Redistributions in binary form must reproduce the above copyright notice,
//     this list of conditions and the following disclaimer in the documentation
//     and/or other materials provided with the distribution.
//   * Neither the name of Adobe Systems Incorporated nor the names of its
//     contributors may be used to endorse or promote products derived from this
//     software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.

(function() { // BeginSpryComponent

if (typeof Spry == "undefined") window.Spry = {}; if (!Spry.Widget) Spry.Widget = {};

Spry.Widget.CollapsiblePanel = function(element, opts)
{
        this.element = this.getElement(element);
        this.focusElement = true;
        this.hoverClass = "CollapsiblePanelTabHover";
        this.openClass = "CollapsiblePanelOpen";
        this.closedClass = "CollapsiblePanelClosed";
        this.focusedClass = "CollapsiblePanelFocused";
        this.enableAnimation = true;
        this.enableKeyboardNavigation = true;
        this.animator = false; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> voici le paramètres que j'ai du changé.
        this.hasFocus = true;
        this.contentIsOpen = true;

        this.openPanelKeyCode = Spry.Widget.CollapsiblePanel.KEY_DOWN;
        this.closePanelKeyCode = Spry.Widget.CollapsiblePanel.KEY_UP;

        Spry.Widget.CollapsiblePanel.setOptions(this, opts);

        this.attachBehaviors();
};

Spry.Widget.CollapsiblePanel.prototype.getElement = function(ele)
{
        if (ele && typeof ele == "string")
                return document.getElementById(ele);
        return ele;
};

Spry.Widget.CollapsiblePanel.prototype.addClassName = function(ele, className)
{
        if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) != -1))
                return;
        ele.className += (ele.className ? " " : "") + className;
};

Spry.Widget.CollapsiblePanel.prototype.removeClassName = function(ele, className)
{
        if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) == -1))
                return;
        ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
};

Spry.Widget.CollapsiblePanel.prototype.hasClassName = function(ele, className)
{
        if (!ele || !className || !ele.className || ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)
                return false;
        return true;
};

Spry.Widget.CollapsiblePanel.prototype.setDisplay = function(ele, display)
{
        if( ele )
                ele.style.display = display;
};

Spry.Widget.CollapsiblePanel.setOptions = function(obj, optionsObj, ignoreUndefinedProps)
{
        if (!optionsObj)
                return;
        for (var optionName in optionsObj)
        {
                if (ignoreUndefinedProps && optionsObj[optionName] == undefined)
                        continue;
                obj[optionName] = optionsObj[optionName];
        }
};

Spry.Widget.CollapsiblePanel.prototype.onTabMouseOver = function(e)
{
        this.addClassName(this.getTab(), this.hoverClass);
        return false;
};

Spry.Widget.CollapsiblePanel.prototype.onTabMouseOut = function(e)
{
        this.removeClassName(this.getTab(), this.hoverClass);
        return false;
};

Spry.Widget.CollapsiblePanel.prototype.open = function()
{
        this.contentIsOpen = true;
        if (this.enableAnimation)
        {
                if (this.animator)
                        this.animator.stop();
                this.animator = new Spry.Widget.CollapsiblePanel.PanelAnimator(this, true, { duration: this.duration, fps: this.fps, transition: this.transition });
                this.animator.start();
        }
        else
                this.setDisplay(this.getContent(), "block");

        this.removeClassName(this.element, this.closedClass);
        this.addClassName(this.element, this.openClass);
};

Spry.Widget.CollapsiblePanel.prototype.close = function()
{
        this.contentIsOpen = false;
        if (this.enableAnimation)
        {
                if (this.animator)
                        this.animator.stop();
                this.animator = new Spry.Widget.CollapsiblePanel.PanelAnimator(this, false, { duration: this.duration, fps: this.fps, transition: this.transition });
                this.animator.start();
        }
        else
                this.setDisplay(this.getContent(), "none");

        this.removeClassName(this.element, this.openClass);
        this.addClassName(this.element, this.closedClass);
};

Spry.Widget.CollapsiblePanel.prototype.onTabClick = function(e)
{
        if (this.isOpen())
                this.close();
        else
                this.open();

        this.focus();

        return this.stopPropagation(e);
};

Spry.Widget.CollapsiblePanel.prototype.onFocus = function(e)
{
        this.hasFocus = true;
        this.addClassName(this.element, this.focusedClass);
        return false;
};

Spry.Widget.CollapsiblePanel.prototype.onBlur = function(e)
{
        this.hasFocus = false;
        this.removeClassName(this.element, this.focusedClass);
        return false;
};

Spry.Widget.CollapsiblePanel.KEY_UP = 38;
Spry.Widget.CollapsiblePanel.KEY_DOWN = 40;

Spry.Widget.CollapsiblePanel.prototype.onKeyDown = function(e)
{
        var key = e.keyCode;
        if (!this.hasFocus || (key != this.openPanelKeyCode && key != this.closePanelKeyCode))
                return true;

        if (this.isOpen() && key == this.closePanelKeyCode)
                this.close();
        else if ( key == this.openPanelKeyCode)
                this.open();
       
        return this.stopPropagation(e);
};

Spry.Widget.CollapsiblePanel.prototype.stopPropagation = function(e)
{
        if (e.preventDefault) e.preventDefault();
        else e.returnValue = false;
        if (e.stopPropagation) e.stopPropagation();
        else e.cancelBubble = true;
        return false;
};

Spry.Widget.CollapsiblePanel.prototype.attachPanelHandlers = function()
{
        var tab = this.getTab();
        if (!tab)
                return;

        var self = this;
        Spry.Widget.CollapsiblePanel.addEventListener(tab, "click", function(e) { return self.onTabClick(e); }, false);
        Spry.Widget.CollapsiblePanel.addEventListener(tab, "mouseover", function(e) { return self.onTabMouseOver(e); }, false);
        Spry.Widget.CollapsiblePanel.addEventListener(tab, "mouseout", function(e) { return self.onTabMouseOut(e); }, false);

        if (this.enableKeyboardNavigation)
        {
                // XXX: IE doesn'
t allow the setting of tabindex dynamically. This means we can't
                // rely on adding the tabindex attribute if it is missing to enable keyboard navigation
                // by default.

                // Find the first element within the tab container that has a tabindex or the first
                // anchor tag.
               
                var tabIndexEle = null;
                var tabAnchorEle = null;

                this.preorderTraversal(tab, function(node) {
                        if (node.nodeType == 1 /* NODE.ELEMENT_NODE */)
                        {
                                var tabIndexAttr = tab.attributes.getNamedItem("tabindex");
                                if (tabIndexAttr)
                                {
                                        tabIndexEle = node;
                                        return true;
                                }
                                if (!tabAnchorEle && node.nodeName.toLowerCase() == "a")
                                        tabAnchorEle = node;
                        }
                        return false;
                });

                if (tabIndexEle)
                        this.focusElement = tabIndexEle;
                else if (tabAnchorEle)
                        this.focusElement = tabAnchorEle;

                if (this.focusElement)
                {
                        Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "focus", function(e) { return self.onFocus(e); }, false);
                        Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "blur", function(e) { return self.onBlur(e); }, false);
                        Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "keydown", function(e) { return self.onKeyDown(e); }, false);
                }
        }
};

Spry.Widget.CollapsiblePanel.addEventListener = function(element, eventType, handler, capture)
{
        try
        {
                if (element.addEventListener)
                        element.addEventListener(eventType, handler, capture);
                else if (element.attachEvent)
                        element.attachEvent("on" + eventType, handler);
        }
        catch (e) {}
};

Spry.Widget.CollapsiblePanel.prototype.preorderTraversal = function(root, func)
{
        var stopTraversal = false;
        if (root)
        {
                stopTraversal = func(root);
                if (root.hasChildNodes())
                {
                        var child = root.firstChild;
                        while (!stopTraversal && child)
                        {
                                stopTraversal = this.preorderTraversal(child, func);
                                try { child = child.nextSibling; } catch (e) { child = null; }
                        }
                }
        }
        return stopTraversal;
};

Spry.Widget.CollapsiblePanel.prototype.attachBehaviors = function()
{
        var panel = this.element;
        var tab = this.getTab();
        var content = this.getContent();

        if (this.contentIsOpen || this.hasClassName(panel, this.openClass))
        {
                this.addClassName(panel, this.openClass);
                this.removeClassName(panel, this.closedClass);
                this.setDisplay(content, "block");
                this.contentIsOpen = true;
        }
        else
        {
                this.removeClassName(panel, this.openClass);
                this.addClassName(panel, this.closedClass);
                this.setDisplay(content, "none");
                this.contentIsOpen = false;
        }

        this.attachPanelHandlers();
};

Spry.Widget.CollapsiblePanel.prototype.getTab = function()
{
        return this.getElementChildren(this.element)[0];
};

Spry.Widget.CollapsiblePanel.prototype.getContent = function()
{
        return this.getElementChildren(this.element)[1];
};

Spry.Widget.CollapsiblePanel.prototype.isOpen = function()
{
        return this.contentIsOpen;
};

Spry.Widget.CollapsiblePanel.prototype.getElementChildren = function(element)
{
        var children = [];
        var child = element.firstChild;
        while (child)
        {
                if (child.nodeType == 1 /* Node.ELEMENT_NODE */)
                        children.push(child);
                child = child.nextSibling;
        }
        return children;
};

Spry.Widget.CollapsiblePanel.prototype.focus = function()
{
        if (this.focusElement && this.focusElement.focus)
                this.focusElement.focus();
};

/////////////////////////////////////////////////////

Spry.Widget.CollapsiblePanel.PanelAnimator = function(panel, doOpen, opts)
{
        this.timer = null;
        this.interval = 0;

        this.fps = 60;
        this.duration = 500;
        this.startTime = 0;

        this.transition = Spry.Widget.CollapsiblePanel.PanelAnimator.defaultTransition;

        this.onComplete = null;

        this.panel = panel;
        this.content = panel.getContent();
        this.doOpen = doOpen;

        Spry.Widget.CollapsiblePanel.setOptions(this, opts, true);

        this.interval = Math.floor(1000 / this.fps);

        var c = this.content;

        var curHeight = c.offsetHeight ? c.offsetHeight : 0;
        this.fromHeight = (doOpen && c.style.display == "none") ? 0 : curHeight;

        if (!doOpen)
                this.toHeight = 0;
        else
        {
                if (c.style.display == "none")
                {
                        // The content area is not displayed so in order to calculate the extent
                        // of the content inside it, we have to set its display to block.

                        c.style.visibility = "hidden";
                        c.style.display = "block";
                }

                // Clear the height property so we can calculate
                // the full height of the content we are going to show.

                c.style.height = "";
                this.toHeight = c.offsetHeight;
        }

        this.distance = this.toHeight - this.fromHeight;
        this.overflow = c.style.overflow;

        c.style.height = this.fromHeight + "px";
        c.style.visibility = "visible";
        c.style.overflow = "hidden";
        c.style.display = "block";
};

Spry.Widget.CollapsiblePanel.PanelAnimator.defaultTransition = function(time, begin, finish, duration) { time /= duration; return begin + ((2 - time) * time * finish); };

Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.start = function()
{
        var self = this;
        this.startTime = (new Date).getTime();
        this.timer = setTimeout(function() { self.stepAnimation(); }, this.interval);
};

Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stop = function()
{
        if (this.timer)
        {
                clearTimeout(this.timer);

                // If we'
re killing the timer, restore the overflow property.

                this.content.style.overflow = this.overflow;
        }

        this.timer = null;
};

Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stepAnimation = function()
{
        var curTime = (new Date).getTime();
        var elapsedTime = curTime - this.startTime;

        if (elapsedTime >= this.duration)
        {
                if (!this.doOpen)
                        this.content.style.display = "none";
                this.content.style.overflow = this.overflow;
                this.content.style.height = this.toHeight + "px";
                if (this.onComplete)
                        this.onComplete();
                return;
        }

        var ht = this.transition(elapsedTime, this.fromHeight, this.distance, this.duration);

        this.content.style.height = ((ht < 0) ? 0 : ht) + "px";

        var self = this;
        this.timer = setTimeout(function() { self.stepAnimation(); }, this.interval);
};

Spry.Widget.CollapsiblePanelGroup = function(element, opts)
{
        this.element = this.getElement(element);
        this.opts = opts;

        this.attachBehaviors();
};

Spry.Widget.CollapsiblePanelGroup.prototype.setOptions = Spry.Widget.CollapsiblePanel.prototype.setOptions;
Spry.Widget.CollapsiblePanelGroup.prototype.getElement = Spry.Widget.CollapsiblePanel.prototype.getElement;
Spry.Widget.CollapsiblePanelGroup.prototype.getElementChildren = Spry.Widget.CollapsiblePanel.prototype.getElementChildren;

Spry.Widget.CollapsiblePanelGroup.prototype.setElementWidget = function(element, widget)
{
        if (!element || !widget)
                return;
        if (!element.spry)
                element.spry = new Object;
        element.spry.collapsiblePanel = widget;
};

Spry.Widget.CollapsiblePanelGroup.prototype.getElementWidget = function(element)
{
        return (element && element.spry && element.spry.collapsiblePanel) ? element.spry.collapsiblePanel : null;
};

Spry.Widget.CollapsiblePanelGroup.prototype.getPanels = function()
{
        if (!this.element)
                return [];
        return this.getElementChildren(this.element);
};

Spry.Widget.CollapsiblePanelGroup.prototype.getPanel = function(panelIndex)
{
        return this.getPanels()[panelIndex];
};

Spry.Widget.CollapsiblePanelGroup.prototype.attachBehaviors = function()
{
        if (!this.element)
                return;

        var cpanels = this.getPanels();
        var numCPanels = cpanels.length;
        for (var i = 0; i < numCPanels; i++)
        {
                var cpanel = cpanels[i];
                this.setElementWidget(cpanel, new Spry.Widget.CollapsiblePanel(cpanel, this.opts));
        }
};

Spry.Widget.CollapsiblePanelGroup.prototype.openPanel = function(panelIndex)
{
        var w = this.getElementWidget(this.getPanel(panelIndex));
        if (w && !w.isOpen())
                w.open();
};

Spry.Widget.CollapsiblePanelGroup.prototype.closePanel = function(panelIndex)
{
        var w = this.getElementWidget(this.getPanel(panelIndex));
        if (w && w.isOpen())
                w.close();
};

Spry.Widget.CollapsiblePanelGroup.prototype.openAllPanels = function()
{
        var cpanels = this.getPanels();
        var numCPanels = cpanels.length;
        for (var i = 0; i < numCPanels; i++)
        {
                var w = this.getElementWidget(cpanels[i]);
                if (w && !w.isOpen())
                        w.open();
        }
};

Spry.Widget.CollapsiblePanelGroup.prototype.closeAllPanels = function()
{
        var cpanels = this.getPanels();
        var numCPanels = cpanels.length;
        for (var i = 0; i < numCPanels; i++)
        {
                var w = this.getElementWidget(cpanels[i]);
                if (w && w.isOpen())
                        w.close();
        }
};

})(); // EndSpryComponent
 


#8 Eddy.vh

    Éternel apprenti.

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1194 messages

Posté 07 June 2011 - 22:04 PM

Normalement tu n'as pas à ajouter les .. puisque ton index est au même niveau que ton dossier Spryte.
J'ai fais un test de spry à onglets comme tu l'as sur ton lien en début de post et tout fonctionne par défaut.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP