Histoire courte
Disons que mon HTML est déjà fixé dans la pierre :
<div id="blockA">Block A</div>
<div id="blockB">Block B</div>
<div id="blockC">Block C</div>
Cela ressemblera à ceci :
------------
| Block A |
------------
| Block B |
------------
| Block C |
------------
Maintenant, je veux changer l'ordre des blocs. Comment puis-je le faire avec seulement CSS ?
------------
| Block C |
------------
| Block A |
------------
| Block B |
------------
Je suis conscient qu'il existe des solutions de fortune comme l'utilisation de position:absolute
mais cela ne préserve pas l'utilisation efficace de l'outil de gestion de l'information. display:block
propriété. En d'autres termes, les blocs poussent les autres blocs vers le bas lorsqu'ils augmentent en taille.
Longue histoire
Lorsque l'utilisateur utilise un ordinateur pour consulter ma page Web, les blocs sont affichés dans cet ordre :
- Informations générales.
- Calendrier des événements.
- Publicité pour les applications iPhone
La publicité pour l'application iPhone est placée en dernier car elle n'est pas très importante pour les utilisateurs d'ordinateurs. Un faible pourcentage d'utilisateurs d'ordinateurs sortiront leur téléphone et installeront l'application.
Si un utilisateur mobile vient sur ce site, l'annonce de l'application iPhone devrait être la chose la plus importante sur la page. Elle doit donc être déplacée en haut de la page :
- Publicité pour les applications iPhone
- Informations générales.
- Calendrier des événements.
Je voudrais que les utilisateurs de l'iPhone et de l'ordinateur partagent le même code HTML, mais qu'une requête média CSS permette de changer l'ordre des blocs.
@media only screen and (max-device-width: 480px) {
#blockC {
/* magic order switching */
}
}
0 votes
Pourquoi auriez-vous besoin de faire cela avec sólo CSS, si je peux me permettre ?
1 votes
position: absolute
ne change pasdisplay: block
.0 votes
Y a-t-il une raison pour laquelle vous voulez faire cela en CSS et non en JavaScript ? Êtes-vous inquiet pour les utilisateurs dont le JavaScript est désactivé ?
2 votes
position:absolute
ne préserve pas la nature d'empilement et de poussée desdisplay:block
ce qui est l'intérêt d'avoir un élément de bloc.0 votes
Ce n'est pas possible par le biais d'un CSS efficace, bien qu'un peu de jQuery pourrait faire la magie, je pourrais vous montrer si vous voulez.
14 votes
J'aime juste avoir des rôles distincts pour HTML, CSS et JS. J'aime que le HTML ne s'occupe que de information CSS pour ne s'occuper que de apparence et JS pour ne s'occuper que de l'utilisateur interaction . Je suis obsédé par le contrôle de la vue des modèles. Si je dois modifier mon HTML pour changer l'apparence, alors un petit morceau de mon cœur meurt.
2 votes
Je ne pense pas qu'il soit déraisonnable de vouloir faire cela par le biais de CSS - je préférerais le mettre derrière une requête média et laisser cela être la seule source de vérité sur la façon dont la mise en page du site va répondre plutôt que de diviser cette logique entre css et js.
0 votes
Tous ceux qui souhaitent obtenir un effet similaire avec les colonnes Bootstrap3, voici un tutoriel .
0 votes
Si vous n'utilisez que du css, vous pouvez utiliser du flex :
div { display: flex; align-items: center; justify-content: center; flex-direction: row-reverse; //revert horizontally //flex-direction: column-reverse; revert vertically }
0 votes
Bruh, votre histoire courte est aussi longue que votre histoire longue XD