recherche

Maison  >  Questions et réponses  >  le corps du texte

Pourquoi les éléments flexibles ne peuvent-ils pas être réduits à une taille inférieure à la taille du contenu ?

<p>J'ai 4 colonnes flexbox et tout fonctionne bien, mais lorsque j'ajoute du texte à une colonne et que je la règle sur une grande taille de police, la colonne est plus large qu'elle ne devrait l'être en raison de la propriété flex. </p> <p>J'ai essayé d'utiliser <code>word-break: break-word</code> et cela m'a aidé, mais lorsque j'ai redimensionné les colonnes à une très petite largeur, les lettres du texte étaient divisées en plusieurs lignes (une lettre par ligne), mais la largeur de la colonne ne sera pas inférieure à la taille d'une lettre. </p> <p>Regardez cette vidéo (Au début, la première colonne est la plus petite, mais lorsque je redimensionne la fenêtre, elle devient la colonne la plus large. Je veux juste toujours respecter les paramètres de flexion ; la taille du flex est de 1:3 : 4 :4)</p> <p>Je sais que définir la taille de la police et le remplissage des colonnes sur des valeurs plus petites aidera... mais existe-t-il une autre solution ? </p> <p>Je ne peux pas utiliser <code>overflow-x: Hidden</code>. </p> <p>JSFiddle</p> <p><br /></p> <pre class="brush:css;toolbar:false;">.container { affichage : flexible ; largeur : 100% } .col { hauteur minimale : 200 px ; remplissage : 30 px ; saut de mot : briser le mot } .col1 { flexion : 1 ; fond : orange ; taille de la police : 80px } .col2 { flexion : 3 ; fond : jaune } .col3 { flexion : 4 ; fond : bleu ciel } .col4 { flexion : 4 ; fond : rouge }</pré> <pre class="brush:html;toolbar:false;"><div class="container"> <div class="col col1">Lorem ipsum dolor</div> <div class="col col2">Lorem ipsum dolor</div> <div class="col col3">Lorem ipsum dolor</div> <div class="col col4">Lorem ipsum dolor</div> </div></pre> <p><br /></p>
P粉432906880P粉432906880466 Il y a quelques jours508

répondre à tous(2)je répondrai

  • P粉440453689

    P粉4404536892023-08-22 12:47:17

    J'ai constaté que cela m'a causé des problèmes à plusieurs reprises au cours des dernières années, tant pour le flex que pour la grille, je suggère donc ce qui suit :

    * { min-width: 0; min-height: 0; }

    Si vous avez besoin de ce comportement, utilisez simplement min-width: automin-height: auto.

    En fait, vous pouvez également ajouter des dimensions de boîte pour rendre toutes les mises en page plus raisonnables :

    * { box-sizing: border-box; min-width: 0; min-height: 0; }

    Est-ce que quelqu'un sait s'il y a des conséquences étranges ? Depuis plusieurs années d'utilisation de la méthode ci-dessus, je n'ai eu aucun problème. En fait, je ne peux penser à aucune situation dans laquelle je voudrais mettre en page du contenu vers l'extérieur en flex/grid, plutôt que de flex/grid vers l'intérieur en contenu --- et si une telle situation existe, elle est certainement rare. Cela ressemble donc à un mauvais défaut. Mais peut-être qu'il me manque quelque chose ?

    répondre
    0
  • P粉752479467

    P粉7524794672023-08-22 10:57:07

    Taille minimale automatique pour les projets Flex

    Vous rencontrez les paramètres par défaut de flexbox.

    Les éléments Flex ne peuvent pas être plus petits que la taille de leur contenu sur l'axe principal.

    Le paramètre par défaut est...

    • min-width: auto
    • min-height: auto

    ...Applicable aux éléments flexibles respectivement dans le sens des lignes et des colonnes.

    Vous pouvez définir l'élément flexible sur :

    • min-width: 0
    • min-height: 0
    • overflow: hidden(或任何其他值,除了visible)

    Spécifications Flexbox

    À propos de autovaleur...

    En d'autres termes :

    • min-width: automin-height: auto默认仅在overflowvisible et
    • ne sont applicables par défaut que lorsque overflow est visible.
    • overflow的值不是visible,则min-size属性的值为0Si
    • .
    • overflow: hidden可以替代min-width: 0min-height: 0Par conséquent, overflow: Hidden peut remplacer
    • et
    .

      et...
    • L'algorithme de taille minimale ne fonctionne que sur les broches. min-height: auto
    • Par exemple, les éléments flexibles dans des conteneurs orientés lignes ne reçoivent pas
    • par défaut.
      • Pour une explication plus détaillée, voir cet article :
      • min-width est rendu différemment dans flex-direction: row et flex-direction: column

    Vous avez appliqué min-width : 0 mais votre projet ne rétrécit toujours pas ?

    Conteneurs flexibles imbriqués

    min-width: auto / min-height: auto

    Si vous travaillez avec des éléments flexibles sur plusieurs niveaux de votre structure HTML, vous souhaiterez peut-être remplacer la valeur par défaut

    /min-width: auto的较高级别flex项目可以阻止下方嵌套的具有min-width: 0 sur les éléments de niveau supérieur.

    Fondamentalement, un élément flexible de niveau supérieur avec

    empêche l'élément imbriqué ci-dessous avec
    La propriété CSS des espaces blancs est en conflit avec la mise en page flexible


    Démo révisée

    .container {
      display: flex;
    }
    
    .col {
      min-height: 200px;
      padding: 30px;
      word-break: break-word
    }
    
    .col1 {
      flex: 1;
      background: orange;
      font-size: 80px;
      min-width: 0;   /* NEW */
    }
    
    .col2 {
      flex: 3;
      background: yellow
    }
    
    .col3 {
      flex: 4;
      background: skyblue
    }
    
    .col4 {
      flex: 4;
      background: red
    }
    <div class="container">
      <div class="col col1">Lorem ipsum dolor</div>
      <div class="col col2">Lorem ipsum dolor</div>
      <div class="col col3">Lorem ipsum dolor</div>
      <div class="col col4">Lorem ipsum dolor</div>
    </div>

    répondre
    0
  • Annulerrépondre