2010-08-09 6 views
1

Je ne sais pas comment faire ce qui suit en html, je préférerais que la solution soit strictement html + css, javascript/jquery est utilisé sur le site, mais je ne ' Je préfère que ma mise en page dépende de javascript.html + css largeur dynamique avec débordements

La section A est une liste de largeur indéterminée, elle est remplie à partir des données d'une base de données afin qu'elle puisse être de 9em-15em largeur. La section B comporte un texte qui déborde également. Je veux que A prenne la largeur requise pour afficher son contenu et je veux que la section B occupe le reste de la largeur.

Est-ce possible, si oui, comment? Connaissez-vous tous les bons livres qui peuvent me donner une bonne base pour html + css

--------------------------------------------- 
|   |^|        |^| 
|   | |        | | 
|   | |        | | 
|   | |        | | 
| A  | |    B    | | 
|   | |        | | 
|   | |        | | 
|   | |        | | 
|   | |        | | 
|   | |        | | 
|   |v|        |v| 
---------------------------------------------- 

C'est ce que j'ai actuellement, mais si la section B déborde alors il force la liste « A » pour réduire en faisant les divs aller à deux lignes ce qui est inacceptable.

<div id="SectionA" style="float:left"> 
<div>Just TEst data</div> 
<div>Just data</div> 
... 
<div>Just data</div> 
</div> 
<div id="SectionB" style="float:left"> 
    <!-- A bunch of content here --> 
</div> 

Répondre

0
<div id="SectionA" style="float:left;width:auto;max-width:NUMBERpx"> 
<div>Just TEst data</div> 
<div>Just data</div> 
... 
<div>Just data</div> 
</div> 
<div id="SectionB" style="float:left;width:auto;max-width:NUMBERpx"> 
    <!-- A bunch of content here --> 
</div> 

Peut-être que cela peut fonctionner

-1

Je voudrais utiliser un peu de CSS pour

flotteur .a {

: left;

}

b écrira autour d'un.

Ne contrôlez pas la largeur du tout, et il se réglera automagiquement sur les bonnes largeurs pour les informations que vous ramenez de votre db.

Contrôlez la hauteur afin de vous assurer que b ne se faufile pas en dessous de a.

2

Regardez une autre façon:

<div id="SectionB"> 
<div id="SectionA"> 
    <div>Just TEst data</div> 
    <div>Just data</div> 
    ... 
    <div>Just data</div> 
</div> 
<!-- A bunch of content here --> 
</div> 

div#SectionA {max-width:15em; float:left;} 

div#SectionB {width:100%;} 

cela devrait fonctionner parfaitement

+0

Dans cette solution, si le contenu de B est suffisamment important pour que la colonne de B soit plus longue que la colonne de A ...le contenu B coulera sous le contenu de A. L'OP pourrait envisager de rechercher sur le Web des «mises en page multi-colonnes css». –

0
<style> 
#sectiona{ 
float:left; 
overflow:auto} 
#sectiona>div{ 
white-space:no-wrap} 

</style> 

<div id="sectiona" style="float:left"> 
<div>Just TEst data</div> 
<div>Just data</div> 
... 
<div>Just data</div> 
</div> 
<div id="sectionb" style="float:left"> 
    <!-- A bunch of content here --> 
</div> 

Je pense que cela devrait fonctionner.

Votre schéma montre cependant que les colonnes doivent avoir la même hauteur. Cela est difficile à réaliser en utilisant css seulement

0

Corrigez-moi si je me trompe, mais votre schéma semble exiger des barres de défilement indépendantes pour chaque section, semblable aux cadres de la génération précédente de HTML. Si c'est le cas, vous aurez besoin du div conteneur parent pour les deux sections avec une hauteur fixe, et définissez la hauteur des deux sections sur 100%.

<style> 
#frameset { 
    background-color: lightBlue; 
    position: absolute; /* this is my way of emulating frameset */ 
    bottom: 0; /* you can specify height instead if you're */ 
    top: 0; /* not using absolute positioning */ 
    left: 0; right: 0; 
} 
#menu, width { 
    width: auto; 
    height: 100%; 
} 
#menu { 
    background-color: bisque; 
    max-width: 15em; 
    float: left; 
    overflow-y: scroll; /* feel free to change to auto, but remember: 
    scrollbar is appended from inside. If you use script to change its 
    content, sentences that previously just fit in one line may suddenly need 
    a line break in the middle when the scrollbar appears */ 
} 
#content { 
    overflow-y: auto; 
} 
</style> 

<div id="frameset"> 
    <div id="menu">aaaaaaaaaaa</div> 
    <div id="content">b</div> 
</div> 
0

Je vais donner un coup de celui-ci:

<!DOCTYPE html> 
<head> 
    <title>Testing Columns</title> 
    <style type="text/css"> 
    #a { float: left; } 
    #b { overflow: hidden; } 
    </style> 
</head> 
<body> 
<div id="a"> 
    <ul> 
     <li>This is</li> 
     <li>Some variable width</li> 
     <li>content</li> 
     <li>for testing</li> 
     <li>stuff</li> 
    </ul> 
</div> 
<div id="b"> 
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent mauris erat, porta et pulvinar vel, iaculis sed arcu. Vestibulum non eros quis eros congue scelerisque in sed tortor. Vivamus scelerisque, lorem auctor faucibus tempor, magna diam porttitor leo, vel tempor elit sapien accumsan mauris. Sed interdum est at elit cursus euismod. Donec et erat est, non molestie urna. Nam sollicitudin turpis in nunc viverra tempus. Mauris gravida viverra massa vitae ornare. Integer interdum aliquam viverra. Vivamus ut libero elit, at semper ligula. Sed iaculis risus ut ligula molestie tincidunt. Ut ac felis libero, aliquam mattis tellus. Proin non massa a odio bibendum laoreet in eu ligula. Aliquam ac elit a nisl laoreet commodo. Integer ullamcorper tempor mauris in adipiscing. Suspendisse ultrices enim vel orci adipiscing tincidunt. Praesent justo dui, ullamcorper ut venenatis posuere, molestie in arcu. Sed libero justo, facilisis sit amet luctus sit amet, cursus vel leo.</p> 
    <p>Curabitur quis felis sit amet enim congue euismod vel a nibh. Sed auctor justo in nulla ullamcorper malesuada. Duis eu purus nec quam ornare congue vitae vel dui. Cras faucibus suscipit tincidunt. Nunc rutrum pretium diam ac venenatis. Proin non dui ligula, quis eleifend massa. Phasellus condimentum fringilla velit. Sed aliquet sodales tortor, ut pharetra mauris imperdiet vel. Etiam tempor augue non felis fermentum varius. Praesent facilisis condimentum commodo. Ut mollis tristique eros, non dapibus enim sollicitudin quis. In hac habitasse platea dictumst. Maecenas enim nibh, sollicitudin sit amet adipiscing vitae, aliquet pretium dui. Vivamus lacus quam, fermentum eget adipiscing et, malesuada eget urna.</p> 
</div> 
</body> 
</html> 

assez facile. #a flotte autour sans un attribut, parce que son contenu a de la largeur. #b n'empiète pas sur l'espace #a dû à overflow: hidden. Cette solution ne fonctionnera pas dans IE moins de 7.