Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
749 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Un moyen propre d'appliquer un style

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Un moyen propre d'appliquer un style

n°1880004
manu f
L'art ephémère.
Posté le 01-05-2009 à 06:44:49  profilanswer
 

Bonjour,
 
Mon but est d'appliquer un effet slideDown() du framework JQuery sur des news gérer dynamiquement (PHP+MySQL), j'y connais pas grand chose en JavaScript donc voilà comment j'ai fais :

Code :
  1. ...
  2.         <link rel="stylesheet" type="text/css" href="css/design.css" />
  3.         <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
  4.     <!--
  5.     <script type="text/javascript">
  6.     $(document).ready(function(){
  7.    
  8.     $("<?php echo '.newsM'.$numNews;?>";).click(function () {
  9.       if ($("<?php echo '.descriNews'.$numNews;?>";).is(":hidden";))
  10.       {
  11.         $("<?php echo '.descriNews'.$numNews;?>";).slideDown("slow";);
  12.       }
  13.       else
  14.       {
  15.         $("<?php echo '.descriNews'.$numNews;?>";).hide();
  16.       }
  17.     });
  18.     });
  19.    </script>
  20.     -->
  21.     </head>
  22.     <body>
  23.         <div id="news">
  24.         <h2>News</h2>
  25.             <ul>
  26.             </ul>
  27.         </div>


en gros j'ai été obligé d'ajouter une instruction php ajoutant lenuméro de la news à mes class .descriNews et .newM, histoire d'identifier chaque news et d'associer l'effet slideDown()au bon descriptif.
 
le système de news ajoutera dans le div news (entre les balise ul) ce truc :

Code :
  1. <li class="<!--<?php echo 'newsM'.$numNews;?>-->">Alain bernard sort sont requins </li>
  2.               <div class="<!--<?php echo 'descriNews'.$numNews;?>-->">description de la news</div>


et le style que je cherche à appliquer sur mon div .descriNews[numero_de_la_news] est :

Code :
  1. .descriNews[numero_de_la_news]{
  2. display:none;
  3. margin-left:10%;
  4. border-left:1px solid #d6e1ec;
  5. border-right:1px solid #d6e1ec;
  6. background-color:#fff5ff;
  7. padding:3px;
  8. }


vous l'aurez compris le problème c'est que mon .descriNews est suivis du numéro de la news pour qu'il soit associé à la bonne news donc impossible de placer les style dans une feuille css, je cherche donc un moyen pas trop lourd d'appliquer ce style car il y a pas mal d'attribut et mettre tout ça dans ma balise div j'ai peur que ça face un peu "too much".


Message édité par manu f le 01-05-2009 à 06:50:48

---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
mood
Publicité
Posté le 01-05-2009 à 06:44:49  profilanswer
 

n°1880028
FlorentG
Unité de Masse
Posté le 01-05-2009 à 11:38:29  profilanswer
 

N'oublie pas que tu peux mettre plusieurs classes :

Code :
  1. <li class="descriNews35 news bidule pouet">


Aussi vu que chaque news a sa propre classe, autant la convertir en id :

Code :
  1. <li id="descriNews35" class="descriNews">

n°1880147
manu f
L'art ephémère.
Posté le 02-05-2009 à 08:50:21  profilanswer
 

J'ai finalement abandonné le système que je voulais faire pour le moment, trop de problème et je maitrise pas assez le JavaScript donc je pense que ça nuit à ce que je souhaite faire :D
 
Mon but été de géré un affichage dynamique d'un système de news dynamique lui aussi.
 
Le système de news j'ai aps eu de soucis à le développer, le problème viens de ce que je souhaite faire lors de l'affichage, à savoir :
- afficher les 5 première news de la BDD
- lors du clic sur le titre de la news, un descriptif de celle ci apparait juste en desous de la news en question
 
Voilà comment j'affiche les news en question :
 
       

Code :
  1. <div id="news">
  2.         <h2>News</h2>
  3.             <?php
  4.             include("conexion.php";);
  5.          
  6.             $reponse= mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5');
  7.              
  8.             while($donnee = mysql_fetch_array($reponse))
  9.             {
  10.             ?>
  11.             <h5 class="titre"><?php echo $donnee['nom']; ?><span class="date"><?php echo date('d/m/Y', $donnee['timestamp']); ?></span></h5>
  12.             <div class="contenu">
  13.                 <?php echo $donnee['description']; ?>
  14.             </div>
  15.             <?php
  16.             }
  17.             mysql_close();
  18.             ?>
  19.         </div>


Le soucis réside dans le fait que lors du clic sur le titre d'une news un descriptif (mon div .contenu) de la news s'affiche juste en dessous de celle ci.
 
Je m'étais orienté vers le framework JQuery, j'avais réussi à faire un semblant d'effet de ce que je voulais mais le problème c'est que celui ci doit être géré de facon dynamique.
En gros, je devais signaler à JavaScript que tel contenu est lié à tel titre de news de manière à ce que le bon descriptif s'affiche en fonction de la news cliqué.
 
Et ce problème couplé au soucis de mise en forme de mon contenu qui impliqué du css dynamique également mon fait abandonné pour le moment, car le seul moyen que j'avais trouvé pour associé le bon descriptif au bon titre de la news était de récupéré l'id de la news dans la BDD.
 
Pour l'appliquer à mes balises <h5> (le titre de la news) et <div> le contenu de la news) de la manière suivante :
 

Code :
  1. <h5 id="<?php echo 'titre'.$donnee['id']; ?>">...</h5>
  2. <div id="<?php echo 'contenu'.$donnee['id']; ?>">...</div>


Ce qui m'aurais permis après dans un script JavaScript d'associer un titre de la news avec son contenu et d'afficher celui ci en fonction du clic effectuer.


Message édité par manu f le 02-05-2009 à 08:54:31

---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
n°1880157
FlorentG
Unité de Masse
Posté le 02-05-2009 à 11:28:08  profilanswer
 

Il faut surtout une meilleure structure sémantique. Là t'as les titres et les descriptif qui se suivent, il faut les regrouper. Genre dans la recommendation HTML4 sur les titres :

Citation :

A heading element briefly describes the topic of the section it introduces.


Note "section". Et section en HTML on utilise un div. Donc on peut s'orienter vers quelque chose comme ça :

Code :
  1. <div id="news">
  2.   <h2>News</h2>
  3.   <div class="news">
  4.     <h3>Bidule <span class="date">5 janvier 2018</span></h3>
  5.     <p class="desc">
  6.       Lorem ipsum dolor sit amet...
  7.     </p>
  8.   </div>
  9.   <div class="news">
  10.     <h3>Machin <span class="date">8 février 2019</span></h3>
  11.     <p class="desc">
  12.       Ipsum sir dolor amet
  13.     </p>
  14.   </div>
  15.   ...
  16. </div>


Note qu'une classe "titre" ne sert pas à grand chose, la balise hX l'indique déjà.

 

Niveau PHP, y'a un grave problème, tu n'escapes pas les données. On peut injecter du code HTML comme on veut. Si ce n'est pas voulu (genre si t'as un éditeur type tinyMCE ou FCKmachin), faut protéger tout ça :

Code :
  1. <h3><?php echo htmlspecialchars($donnee['nom']) ?></h3>


Donc htmlspecialchars partout.

 

Ensuite niveau JavaScript ça devient trivial, surtout avec JQuery. D'abord on planque les descriptif (très important de faire ça en script et pas en CSS. Pour les JavaScript désactivés, on laisse le texte affiché.

 

On stocke le descriptif de la news dans une variable, puis dans le click du titre, on "toggle" ce descriptif :

 
Code :
  1. $(document).ready(function() {
  2.     $('#news .news').each(function(i, news) {
  3.             var desc = $(news).find('.desc');
  4.             desc.hide();
  5.             $(news).find('h3').click(function() {
  6.                 desc.toggle();
  7.             });
  8.         });
  9. });


Et voilà :)


Message édité par FlorentG le 02-05-2009 à 11:28:35
n°1880174
manu f
L'art ephémère.
Posté le 02-05-2009 à 13:37:02  profilanswer
 

Ca fonctionne à merveille  :ouch:  merci beaucoup www.object-manu.net
et pour le html je dois avouer que c'est nettement plus jolie.  
 
Pour ce qui est du php c'est un oubli :x j'avais tout fais dans ma page de gestion mais pas dans l'index :]


Message édité par manu f le 02-05-2009 à 22:21:44

---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
n°1880176
FlorentG
Unité de Masse
Posté le 02-05-2009 à 14:06:53  profilanswer
 

Aller courage, ça viendra :D Dis-toi que ça m'a pris même pas 2 minutes pour faire ça :D Tu peux très bien y arriver aussi


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Un moyen propre d'appliquer un style

 

Sujets relatifs
comment créer son propre site de ventes privées ?[VBA EXCEL] Récupérer son propre email Outlook dans une variable
Appliquer CSS à un caractère particulier.Quel est le meilleur moyen de réaliser une grille de sudoku avec GTK ?
Ma propre SDLProblème bête, feuille de style html
problème de style de dessin d'un rectanglePort série tout ça : LA solution propre via BOOST::ASIO
Site contributif du style Blog communpbm avec le style d'un span imbriqué
Plus de sujets relatifs à : Un moyen propre d'appliquer un style


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR