philos Δημοσ. 14 Οκτωβρίου 2016 Δημοσ. 14 Οκτωβρίου 2016 Καλησπέρα Αντιμετωπίζω το εξής πρόβλημα σε "responsive" πλέγμα σε HTML και CSS. Εδώ μπορείτε να δείτε ενεργά τον κώδικα μου. Μιας που ρωτάω πιο ειδικούς θα αναπτύξω ακριβώς τι θέλω να πετύχω: - όταν υπάρχει ένα κουτί (class="block"), αυτό θα πρέπει να εκτείνεται σε μια γραμμή με 100% πλάτος - όταν υπάρχουν δύο κουτιά, αυτά θα πρέπει να εκτείνονται και τα δύο σε 100% πλάτος, αλλά το καθένα θα καλύπτει 50% χώρο --> όταν ο χρήστης μικραίνει το πλάτος του παραθύρου ή έχει μικρή ανάλυση, τα κουτιά θα πρέπει να αλλάζουν ώστε να είναι 1 σε κάθε σειρά, με πλάτος 100% το καθένα - όταν υπάρχουν τρία κουτιά, θα πρέπει τα δύο να είναι στη πρώτη γραμμή (50% πλάτος το καθένα κουτί) και το τρίτο στη 2η γραμμή, με 100% πλάτος - όταν υπάρχουν τέσσερα κουτιά, θα πρέπει να εκτείνονται σε δύο γραμμές, με 2 κουτιά σε κάθε γραμμή, με 50% πλάτος (ουσιαστικά σαν τη τετράδα που βλέπετε στο παραπάνω dabblet, αλλά όχι κεντραρισμένα - να πιάνου δλδ όλο το χώρο). --> όταν ο χρήστης μικραίνει το πλάτος του παραθύρου ή έχει μικρή ανάλυση, τα κουτιά θα πρέπει να αλλάζουν ώστε να είναι 1 σε κάθε σειρά, με πλάτος 100% το καθένα. Τέλος να σημειώσω ότι το κάθε κουτί για να φαίνεται καλά με τα περιεχόμενά του θα πρέπει να έχει min-width 698px. ΥΓ: Δεν θέλω να χρησιμοποιήσω bootstrap. Προτιμώ κάποια λύση με CSS ή και JavaScript/jQuery αν χρειαστεί. Κάθε βοήθεια ή ιδέα για εργαλείο, ευπρόσδεκτη!
paparovic Δημοσ. 14 Οκτωβρίου 2016 Δημοσ. 14 Οκτωβρίου 2016 Δες αυτό: https://css-tricks.com/snippets/css/a-guide-to-flexbox/ + media queries. Το μόνο πρόβλημα είναι αν σε νοιάζουν οι παλιοί browsers, αλλιώς that's the way to go, μέχρι να βγεί το css grid layout.
dominotrix Δημοσ. 14 Οκτωβρίου 2016 Δημοσ. 14 Οκτωβρίου 2016 Τέλος να σημειώσω ότι το κάθε κουτί για να φαίνεται καλά με τα περιεχόμενά του θα πρέπει να έχει min-width 698px. Αυτο και μονο καταστρεφει το responsiveness. Πως γινεται να δωσεις fixed width και να θελεις responsive? Αν μπει καποιος με οθονη χαμηλοτερη των 698px τοτε πως θα πρεπει να συμπεριφερθει; Αν εξαιρεσεις αυτο τον ορο θα πρεπει εκτος απο @media queries να χρησιμοποιησεις και JS μιας και πρεπει να γινει καπως η καταμετρηση των .blocks Αν ειναι 3 τοτε -> αν ειναι 4 τοτε -> κλπ Λογικα θα κανεις αναζητηση στο parent div να διαβασεις το DOM ποσα .block υπαρχουν και αναλογως να περασεις το καταλληλο CSS που θελεις.
SlackulatoR Δημοσ. 14 Οκτωβρίου 2016 Δημοσ. 14 Οκτωβρίου 2016 CSS για μικρές οθόνες @media only screen and (max-width: 500px) { .block { min-width:50%; } } jQuery: if($("#blocks_container .block").length == 3){ $(".block").css("min-width","50%"); $(".block:last-child").css("min-width","100%"); } 1
XPHSTOS_ Δημοσ. 14 Οκτωβρίου 2016 Δημοσ. 14 Οκτωβρίου 2016 Δες λίγο μήπως σε βοηθά αυτό.http://codepen.io/xphstos/pen/VKBXoQ?editors=0100Η λύση με τα flexbox που προτείνει ο paparovic είναι πολύ καλή, αρκεί να μη σε νοιάζουν κάποιες παλιές εκδόσεις Internet Explorer και mobile browsers.Στο παράδειγμα μου, γίνονται όλα με floats και με javascript πιάνω το τελευταίο παιδί μέσα στο container.Στην πρώτη στοιβάδα έχω τον κώδικα που δίνεις, μη την δίνεις σημασία.Για λόγους ευκολίας, σπάω τις δυάδες κάτω από τα 800px.Το προσαρμόζεις αναλόγως. 1
philos Δημοσ. 17 Οκτωβρίου 2016 Μέλος Δημοσ. 17 Οκτωβρίου 2016 Ευχαριστώ πολύ για τις απαντήσεις σας παιδιά! Τελικά χρησιμοποίησα τη λύση του XPHSTOS_ με μερικές προσαρμογές. Να 'στε καλά.
philos Δημοσ. 27 Οκτωβρίου 2016 Μέλος Δημοσ. 27 Οκτωβρίου 2016 Λοιπόν παιδιά έχω άλλο ένα σχετικό πρόβλημα με πλέγμα.Έχω ανεβάσει εδώ ένα υπόδειγμα (βασίστηκα σε κάποιο βαθμό εκείνο που είχε ποστάρει ο Χρήστος για να το δημιουργήσω). Το ζητούμενο είναι, με οποιονδήποτε αριθμό boxes > 2, όταν η τελευταία σειρά έχει μόνο ένα box, αυτό να μην εμφανίζεται (display: none). Αν κάνετε resize το παράθυρο, θα δείτε ότι τα boxes μαζεύονται ανά σειρά. Απλά στην περίπτωση:1-2-34-5-67-8-910 ... το 10 δεν πρέπει να εμφανίζεται (για το παράδειγμα των 10 boxes). Ασφαλώς και θα πρέπει να λειτουργεί για κάθε πιθανό αριθμό boxes > 2. Καμιά ιδέα;Σκέφτηκα να χρησιμοποιήσω το javascript event onresize και να παίρνω το width του παραθύρου και έκανα κάτι δοκιμές με @media, αλλά δεν κατάφερα κάτι που να μπορεί να δουλεύει αντικειμενικά - σωστά όπως το θέλω.
philos Δημοσ. 28 Οκτωβρίου 2016 Μέλος Δημοσ. 28 Οκτωβρίου 2016 Μετά από αναζήτηση σε κάμποσες σελίδες, κατάφερα και "έστησα" αυτό με javascript (απόκρυψη τελευταίο box αν είναι μοναδικό στην τελευταία γραμμή).
philos Δημοσ. 18 Ιουνίου 2017 Μέλος Δημοσ. 18 Ιουνίου 2017 Έχοντας μείνει σε αυτό ως τελικό, θα ήθελα να αποκρύψω όσες γραμμές είναι ανάγκη, ώστε σε κάθε ανάλυση οθόνης, να υπάρχουν πάντα, το μέγιστο 2 γραμμές με κουτιά. Καμιά ιδέα; Δοκίμασα το ακόλουθο, αλλά δεν δουλεύει: var box_rows = boxes_limit / lisInRow; if (box_rows > 2) { var i = 0; $(parentSelector + " > " + childSelector).each(function() { if (i <= lisInRow) { $(this).hide(); i++; } } } (θεωρήστε ότι το box_rows έχει σωστή τιμή)
WebDevGr Δημοσ. 19 Ιουνίου 2017 Δημοσ. 19 Ιουνίου 2017 Γιατί δεν το κάνεις με CSS και breakpoints + nth-child(); πχ :last-child:nth-child(odd) {display:none}
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα