2017-03-27 1 views
0

J'ai une table html 3x3. Dans la deuxième ligne, la première et la troisième colonne contiennent des div qui sont pivotés pour afficher le contenu verticalement. D'autres cellules montrent le contenu normalement. Ces divs verticaux débordent de la hauteur TD. Je veux augmenter dynamiquement la hauteur TD en fonction de la hauteur Div (largeur verticale).Auto expand TD selon contenu DIV

Voici le code de fiddle

MISE À JOUR

HTML

<table> 

    <tr> 
    <td> 
     <div> 
     ? 
     </div> 
    </td> 
    <td> 
     <div> 
     <input placeholder="some text"> 
     <button>X</button> 
     </div> 
    </td> 
    <td> 
     <div> 
     ? 
     </div> 
    </td> 
    </tr> 

    <tr> 
    <td class="expand"> 
     <div class="vertical"> 
     <input placeholder="some text"> 
     <button>X</button> 
     </div> 
    </td> 
    <td> 
     <div> 
     <input placeholder="some text"> 
     <button>X</button> 
     </div> 
    </td> 
    <td class="expand"> 
     <div class="hw vertical"> 
     <input placeholder="some text"> 
     <button>X</button> 
     </div> 
    </td> 
    </tr> 

    <tr> 
    <td> 
     <div> 
     ? 
     </div> 
    </td> 
    <td> 
     <div> 
     <input placeholder="some text"> 
     <button>X</button> 
     </div> 
    </td> 
    <td> 
     <div> 
     ? 
     </div> 
    </td> 
    </tr> 

</table> 

CSS

table td { 
    border: 2px solid lightgray; 
} 

.hw { 
    width: 208px !important; 
    height: 20px; 
} 

.expand { 
    white-space: pre; 
} 

.vertical { 
    /* writing-mode: vertical-rl; */ 
    transform: rotate(90deg); 
} 

Merci d'avance.

Répondre

1

Utilisation white-space: pre; dans td.

édite

Cochez cette extrait mis à jour. J'ai utilisé 'writing-mode: tb-rl' pour rendre le texte vertical.

Vérifiez Can I Use pour le soutien de broswer

table td { 
 
    border: 2px solid lightgray; 
 
    white-space:nowrap 
 

 
    } 
 
.vertical { 
 
    writing-mode: tb-rl; 
 
}
<table> 
 

 
<tr> 
 
    <td> 
 
    <div> 
 
     ? 
 
    </div> 
 
    </td> 
 
    <td> 
 
    <div> 
 
     lorem ipsum 
 
    </div> 
 
    </td> 
 
    <td> 
 
    <div> 
 
     ? 
 
    </div> 
 
    </td> 
 
</tr> 
 

 
<tr> 
 
    <td> 
 
    <div class="vertical" > 
 
     vertical text 
 
    </div> 
 
    </td> 
 
    <td> 
 
    <div> 
 
    lorem ipsum 
 
    </div> 
 
    </td> 
 
    <td> 
 
    <div class="vertical"> 
 
    vertical text 
 
    </div> 
 
    </td> 
 
</tr> 
 

 
<tr> 
 
    <td> 
 
    <div> 
 
     ? 
 
    </div> 
 
    </td> 
 
    <td> 
 
    <div> 
 
     lorem ipsum 
 
    </div> 
 
    </td> 
 
    <td> 
 
    <div> 
 
     ? 
 
    </div> 
 
    </td> 
 
</tr> 
 

 
</table>

+0

Génial. Mais cela a également élargi d'autres cellules comme celles avec '?' dedans en première et dernière rangée. Ou en d'autres termes, je veux adapter la cellule avec contenu contenu largeur/hauteur. – Jawaid

+0

génial. Merci. Cela a fonctionné parfaitement. Mais quand je l'ai utilisé dans mon application, il n'affiche pas le contenu verticalement ni ajuster la hauteur. – Jawaid

+0

Comme vous pouvez le voir sur http://caniuse.com/#search=writing-mode, cette propriété n'est pas supportée par Opera Mini. est-ce votre cas? – aje

0

Vous pouvez y parvenir avec jQuery:

var height = $('.vertical').width(); $('.vertical').css({'height':height+'px'});

Il prend la largeur de ce que la TD aurait été si horizontal et l'applique à la hauteur au lieu.

Jsfiddle here

+0

Je préfère utiliser CSS au lieu de jQuery/Javascript. La raison est que JS doit s'exécuter chaque fois que la page est chargée ou lorsque des lignes/colonnes sont ajoutées/supprimées. Depuis, cela fait partie d'une application où les lignes/cols de la table seront ajoutés/supprimés dynamiquement. – Jawaid