2009-11-13 6 views
0

Ce que je veux faire:
Je veux utiliser une police non standard sur le Web dans un diverses combinaisons de taille de la police couleur de police et sans avoir à assigner individuelle configs pour chacun. Jusqu'à présent, sIFR semble prendre la taille de police sans problème. mais pas la couleur de la police, donc je travaille sur un travail autour.Sifr 3 Test Barebones - ligne inhabituelle casse

Le problème que je courais dans:
sIFR rompt le texte à la ligne suivante sans <BR> linebreak être présent.

Voici le code HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <title>sIFR 3 - barebones test</title> 
    <style type="text/css"> 
.red{color:#660000;} 
.blue{color:#006699;} 
    </style> 
    <link type="text/css" rel="stylesheet" href="sifr.css"> 
    <script type="text/javascript" src="sifr.js"></script> 
    <script type="text/javascript" src="sifr-config.js"></script> 
</head> 
<body> 
    <span class="fontName"><span class="red">Corporate brand red</span> default text <span class="blue">product brand blue</span></span> 
</body> 
</html> 

SIFR-config.js Pour une raison SIFR ne tire pas la couleur de la CSS. Donc je le spec dans le fichier de configuration. Les couleurs de la config sont intentionnellement différentes de celles du css.

/***************************************************************************** 
It is adviced to place the sIFR JavaScript calls in this file, keeping it 
separate from the `sifr.js` file. That way, you can easily swap the `sifr.js` 
file for a new version, while keeping the configuration. 

You must load this file *after* loading `sifr.js`. 

That said, you're of course free to merge the JavaScript files. Just make sure 
the copyright statement in `sifr.js` is kept intact. 
*****************************************************************************/ 

//## Create objects that point to the flash files 
var fontName = { src: 'fontName.swf' }; 

//## Set configuration settings if desired 
//sIFR.useStyleCheck = true; // read <http://wiki.novemberborn.net/sifr3/DetectingCSSLoad>. 

//## Activate sIFR 
sIFR.activate(fontName); 


//## Replace elements using sIFR 

sIFR.replace(fontName, { 
    selector: '.fontName' 
    ,css: [ 
     '.sIFR-root{color:#000000;leading:-6;}', 
     '.red{color:#FF0000;}', 
     '.blue{color:#0000FF;}' 
     ] 
    ,ratios: [8, 1.41, 10, 1.33, 14, 1.31, 16, 1.26, 20, 1.27, 24, 1.26, 25, 1.24, 26, 1.25, 35, 1.24, 49, 1.23, 74, 1.22, 75, 1.21, 79, 1.22, 80, 1.21, 81, 1.22, 1.21] 
    ,wmode:'transparent' 
}); 

Que puis-je faire pour obtenir les résultats souhaités sans rupture prématurée?
** S'il vous plaît noter que toutes les situations seront appropriées pour display: block; *


On dirait que ma question a été divisée en deux ou trois petites questions.

  1. Saut de ligne
  2. Quelle est héritée de css la page. (merci pour la réponse Mark!)

Mark et Pekka, vous mentionnez tous les deux letter-spacing dans vos réponses. J'ai peur de ne pas comprendre pourquoi puisque je ne définis pas l'espacement des lettres dans css/sifr-config. Il est laissé au navigateur par défaut. Quelle est la relation avec la largeur du texte en ce qui concerne les sauts de ligne?

J'ai modifié le code comme suit:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <title>sIFR 3 - barebones test</title> 
    <style type="text/css"> 
    .red{color:#660000;} 
    .blue{color:#006699;} 

    .sIFR-active #SpacingTest .fontName 
    { 
    letter-spacing:1px; 
    } 
    </style> 
    <link type="text/css" rel="stylesheet" href="sifr.css"> 
    <script type="text/javascript" src="sifr.js"></script> 
    <script type="text/javascript" src="sifr-config.js"></script> 
</head> 
<body> 
    <b>box model and available width tests</b><br> 

    1. <span class="fontName"><span class="red">Corporate brand red</span> default text <span class="blue">product brand blue</span></span><br> 
    2. <div class="fontName"><span class="red">Corporate brand red</span> default text <span class="blue">product brand blue</span></div> 
    3. <div style="width:1024px;"><span class="fontName"><span class="red">Corporate brand red</span> default text <span class="blue">product brand blue</span></span></div> 
    4. <div style="width:1024px;" class="fontName"><span class="red">Corporate brand red</span> default text <span class="blue">product brand blue</span></div> 
    5. <span class="fontName" style="display:block;"><span class="red">Corporate brand red</span> default text <span class="blue">product brand blue</span></span><br> 

    <hr> 
    <b>box model and available width tests</b><br> 
    <div id="SpacingTest"> 
    6. <span class="fontName"><span class="red">Corporate brand red</span> default text <span class="blue">product brand blue</span></span><br> 
    </div> 
</body> 
</html> 

Informations complémentaires:

  1. span avec une classe fontName sIFR ciblée sur elle
    largeur disponible: toute body
  2. div avec class="fontName"
    largeur disponible: entière body (via div)
  3. div avec un explicite width ensemble, contenant un span avec class="fontName"
    largeur disponible: 1024px (largeur fixe div)
  4. div w/explicite width et class="fontName"
    largeur disponible: 1024px (largeur fixe div)
  5. span w/display:block; et class="fontName"
    disponible largeur: entier body (via display:block;)

Résultats:

1,3 et 6 casse encore lors du chargement de la page.
6 occupe plus d'espace, mais se brise encore prématurément.
5 semble bien, jusqu'à ce que le navigateur est redimensionné, puis il ajoute un saut de ligne et détient sur lui, peu importe quoi.

Affichage 2 et 4 sur une seule ligne (comme prévu par cet exemple).

4 ne se rediffuse pas lorsque le navigateur est redimensionné. Ceci est attendu puisque la largeur est fixe. Pas de problème ici. Lorsque le navigateur est réduit, seul le mot «bleu» est forcé à la ligne suivante, le reste du texte reste sur la première ligne.

J'ai redimensionné le texte avec ctrl + = et ctrl + - et quelque chose d'intéressant est arrivé. Tous les cas (sauf 4 - attendus) reflétaient beaucoup plus facilement lorsque le navigateur/l'espace disponible était redimensionné.

Conclusion de ce test:

  • éléments de bloc avec une largeur fixe (fixé à cet élément ou son parent/ancêtre) sont sûres, mais votre limite à largeur fixe.
  • les éléments de bloc avec une largeur de fluide sont fragiles à des tailles de police plus petites
  • utilisation sur des éléments en ligne à vos risques et périls. Ne pas utiliser au milieu d'un paragraphe, l'objet flash lui-même ne peut être autre chose que bloquer.

Mark, pourriez-vous préciser ce que sIFR regarde largeur disponible? Je ne pouvais pas le trouver sur le wiki de sIFR 3.(sur une note de côté: tous les liens de livedoc à adobe semblent être des liens brisés, je crains de ne pas pouvoir les trouver en cherchant sur le site d'adobe). Est-ce que je regarde l'espace disponible de la mauvaise façon? L'élément entier du corps ne devrait-il pas avoir beaucoup de largeur? Pour le projet que je suis en train de travailler, il semble que le standard pour bloquer les éléments de niveau seulement avec des tailles de police de 18px et plus sera la route prise pour ne pas le maintenir plus loin, mais je continue avoir un intérêt personnel et aimerait poursuivre la compréhension de sIFR et la ligne de rupture plus loin. Je suis nouveau sur Stack Overflow et je suis préoccupé par le fait que ce soit une «discussion étendue» qui, selon la FAQ, dépasse la portée de ce site. S'il y a un endroit plus approprié pour en discuter, veuillez me le faire savoir et je le ferai si nécessaire.

Cordialement

Répondre

0

Ceci est le plus souvent parce que le HTML sous-jacent (qui est remplacé par la sortie sIFR) est trop petit, et donc trop peu d'espace est réservé pour SIFR à utiliser.

Je l'ai eu lorsque j'ai utilisé une valeur d'espacement des lettres négative sur un h1 qui a été remplacé par une sortie siFR. Essayez de donner plus d'espace à l'élément remplacé.

0

Comme span s sont des éléments en ligne, sIFR n'obtient que la largeur du texte HTML. Si le texte Flash est plus large, il ne rentre pas et provoque un saut de ligne. Vous pouvez ajouter letter-spacing aux éléments que vous êtes sur le point de remplacer avec un peu d'aide de la classe .sIFR-active. SIFR ne ramasse rien d'autre que la taille de la police de la page CSS, car 1) il est difficile de faire cela de façon fiable cross-browser et 2) sIFR ajoute quelques propriétés CSS personnalisées juste pour Flash.