2010-11-26 48 views
7

Ceci est mon code:De combien de pixels un espace est-il égal?

<div style="position:absolute;top:300px;width:50px;height:50px;background:red;color:black;word-wrap:break-word;"> 
     <div contenteditable=true> 
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      aaaaa 
      bbbbbbbbbbb 
     </div> 
</div> 

Je veux remplir tout l'espace dans la div.

Combien de pixels est le &nbsp;?

+4

Dépend du navigateur, de la police en cours de rendu, etc. Il n'y a pas de valeur garantie. Bien sûr, il y a une meilleure façon d'accomplir ce que vous essayez de faire. Qu'est-ce que vous essayez de faire exactement? – David

Répondre

5

vous pouvez créer un <div> contenant &nbsp; et affectez un id. Définissez la taille de police et les attributs.Puis lisez la largeur et la hauteur courantes en utilisant:

var space=document.getElementById("space"); 
var height=(space.clientHeight+1)+"px"; 
var width=(space.clientWidth+1)+"px"; 
+0

pourquoi +1? var height = (space.clientHeight) + "px"; , pourquoi ne pas utiliser cela? – zjm1126

+0

Pourquoi le +1? (Aussi clientWidth n'inclut pas le remplissage et la bordure? Si vous devez vous assurer que ceux-ci sont mis à 0) – edeverett

+0

merci beaucoup .... – zjm1126

1

Cela dépend de la police, de la taille, etc. Il n'y a pas d'équation/nombre direct pour les espaces en pixels.

2

Cela dépend de la taille de la police car &nbsp; est un espace blanc.

0

Il n'y a aucun moyen de répondre honnêtement à cette question, car la taille d'un espace change en fonction de la taille de la police. Essayez ceci, en changeant le "30px" à celui que vous voulez.

<div style="position:absolute;top:300px;width:50px;height:50px;background:red;color:black;word-wrap:break-word;"> 
     <div contenteditable=true style="margin-left: 30px;"> 
      aaaaa 
      bbbbbbbbbbb 
     </div> 
</div> 
0

La réponse dépend de la police que vous utilisez et des styles qui vous ont été attribués. Vous devrez donc le calculer dynamiquement dans la page.

Utilisez Javascript pour créer un div affiché sur la page (ie: left: -4000px;} qui contient un caractère  . Assurez-vous que cet élément a le même style de texte que votre div contentEditable. devrait être la largeur du caractère de l'espace (assurez-vous que vous ne y compris tout rembourrage ou frontières, etc.)

Je n'ai pas essayé, mais c'est ce que je vais essayer d'abord.

0

Vous pourriez utiliser "em" au lieu de "px". Premier lien googlé à propos de « em »: http://www.xs4all.nl/~sbpoley/webmatters/emex.html

Essayez cette construction

<div style="position:absolute;top:300px;width:{count_of_letters}em; height:50px;background:red;color:black;word-wrap:break-word;"> 
    <div contenteditable=true> 
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     aaaaa 
     bbbbbbbbbbb 
    </div> 

Mais mieux d'oublier cette idée et utiliser des règles CSS d'autres commentaires dans ce sujet.

0

Un "em" (largeur de 1 caractère) est souvent considéré comme 16 x 16 pixels. Bien sûr, si un spectateur redimensionne du texte, cela changera. Je ne suis pas sûr de ce que vous essayez de faire, mais si vous voulez juste un espace vide au-dessus de votre texte, vous pouvez mettre une autre div (pour le texte) dans votre div, puis définir un "margin-top" : 10em; "(ou autant d'ems que vous voulez) pour fournir l'espace vide.