2017-09-28 2 views
0

Je crée un site web en utilisant un éditeur en ligne. J'ai une table simple avec deux colonnes et une rangée. Sur le bureau, ça a l'air génial, mais sur mobile, je dois faire défiler vers la gauche et la droite pour voir le contenu.Comment rendre une table à deux colonnes réactive avec la deuxième colonne qui passe sous la première?

Je voudrais le rendre réactif avec la deuxième colonne en vertu de la première sur un petit écran.

Voici mon code:

<div style="overflow-x: auto;"> 
 
    <table style="height: 452px; width: 821px; margin-left: auto; margin-right: auto;"> 
 
    <tbody> 
 
     <tr style="height: 143.6px;"> 
 
     <td style="width: 280px; height: 143.6px;"><img src="https://storage.googleapis.com/sc-support-web/en-US/GIF/OnBoarding_Snap_Map" width="250" height="409" /></td> 
 
     <td style="width: 439px; height: 143.6px;"> 
 
      <h3 style="text-align: left;"><span style="color: #333333;"><b>It all starts with a test</b></span></h3> 
 
      <br /> 
 
      <p style="line-height: 1.6; text-align: left;"><span style="color: #333333; font-size: large;">This is an example. This is an example. Testing and testing again.</span></p> 
 
     </td> 
 
     </tr> 
 
    </tbody> 
 
    </table> 
 
</div>

Donc cet exemple, je voudrais avoir la partie de texte en passant sous l'image sur petit écran. Comment puis-je faire ça s'il vous plait?

Merci à tous!

Répondre

1

Vous ne devriez pas utiliser de tables pour cela. Les tableaux sont chose très gênant dans les termes de responsabilité.

Utilisez la disposition de grille CSS pour cela. Dans mon exemple, essayez de redimensionner l'écran. Quand il devient étroit, les colonnes se déplacent l'une sous l'autre. Lorsque la fenêtre est relativement large, vous pouvez les voir côte à côte.

https://jsfiddle.net/33fLLdzr/1/

<div class="wrapper"> 
    <div class="box sidebar"><img src="https://storage.googleapis.com/sc-support-web/en-US/GIF/OnBoarding_Snap_Map" width="250" height="409" /></div> 
    <div class="box sidebar2"> 
     <h3 style="text-align: left;">It all starts with a test</h3> 
     <p style="line-height: 1.6; text-align: left;">This is an example. This is an example. Testing and testing again.</p> 
    </div> 
</div> 

<style> 
body { 
    margin: 40px; 
} 

.sidebar { 
    grid-area: sidebar; 
} 

.sidebar2 { 
    grid-area: sidebar2; 
} 

.wrapper { 
    background-color: #fff; 
    color: #444; 
} 

.wrapper { 
    display: grid; 
    grid-template-areas: 
     "sidebar" 
     "sidebar2" 
} 

@media only screen and (min-width: 600px) { 
    .wrapper { 
     grid-template-columns: 50% 50%; 
     grid-template-areas: 
     "sidebar sidebar2" 
    } 
} 
</style> 
+0

Merci John! Tu as fait ma journée et ça marche. Mais je voudrais le personnaliser un peu plus. Je veux que le texte soit verticalement centré avec les images et pour le rapprocher de la photo comme illustré sur cette photo: https://res.cloudinary.com/hrscywv4p/image/upload/c_limit,fl_lossy,h_9000,w_1200 , f_auto, q_auto/v1/949589/PrtScr_capture_ypwjve.jpg Comment faire? – Sebastien

+0

@Sebastien Check it: https://jsfiddle.net/33fLLdzr/3/ –

+0

@Sebastien Aussi, une autre version à jouer avec: https://jsfiddle.net/33fLLdzr/5/ –

1

Vous pouvez utiliser une requête média dans lequel vous appliquez display: block; width: 100%; height: auto; à table, tr et td. De cette façon, vous en faites tous les éléments de bloc réguliers où les td vont s'écouler les uns sous les autres.

Définissez le point d'arrêt comme vous le souhaitez. Dans mon extrait, je l'ai mis à 600px;

Et essayez d'éviter les styles en ligne. Si vous souhaitez utiliser des requêtes des médias, ils sont vraiment sur votre chemin ...

html, body { 
 
margin: 0; 
 
} 
 
table { 
 
    height: 452px; 
 
    width: 821px; 
 
    margin-left: auto; 
 
    margin-right: auto; 
 
} 
 
tr { 
 
height: 143.6px; 
 
} 
 
td.x { 
 
    width: 280px; 
 
    height: 143.6px; 
 
} 
 

 
td.y { 
 
    width: 439px; 
 
    height: 143.6px; 
 
} 
 

 
@media screen and (max-width: 600px) { 
 
    table, 
 
    tr, 
 
    td.x, 
 
    td.y { 
 
    display: block; 
 
    width: 100%; 
 
    height: auto; 
 
    } 
 
}
<div style="overflow-x: auto;"> 
 
    <table> 
 
    <tbody> 
 
     <tr> 
 
     <td class="x"><img src="https://storage.googleapis.com/sc-support-web/en-US/GIF/OnBoarding_Snap_Map" width="250" height="409" /></td> 
 
     <td class="y"> 
 
      <h3 style="text-align: left;"><span style="color: #333333;"><b>It all starts with a test</b></span></h3> 
 
      <br /> 
 
      <p style="line-height: 1.6; text-align: left;"><span style="color: #333333; font-size: large;">This is an example. This is an example. Testing and testing again.</span></p> 
 
     </td> 
 
     </tr> 
 
    </tbody> 
 
    </table> 
 
</div>

+0

Merci Johannes mais j'ai quelques problèmes de compréhension ce que tu as fait. Vous avez donné deux morceaux de code. Les deux sont HTML et devraient être mis sous l'autre? Ou l'un est CSS? – Sebastien

+0

C'est un "extrait" de Stackoverflow - si vous cliquez sur "Exécuter l'extrait de code" ci-dessous, vous verrez le résultat des deux ensemble. En haut se trouve la feuille de style (CSS), en dessous le HTML. Pour l'appliquer à votre propre code, vous copiez le CSS soit dans votre feuille de style, soit si vous n'en avez pas (pas si bon ...) dans la section '' de votre fichier html et le code HTML dans le 'body' de votre code de page. C'est plutôt basique, BTW ... – Johannes

0

<html> 
 
\t <head> 
 
\t \t <meta charset="utf-8"> 
 

 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    </head> 
 
    <body> 
 
     <img class="aligncenter wp-image-4684" src="https://storage.googleapis.com/sc-support-web/en-US/GIF/OnBoarding_Snap_Map" width="250" height="409" /> 
 
     
 
<a href="http://scotiafishing.com/wp-content/uploads/Best-Of-Scotland-Package.pdf" rel="">This is an example. This is an example. Testing and testing again.</a> 
 

 
    </body> 
 
</html> 
 

 
    
 
    
 
    
 

voudriez-vous quelque chose comme ça?