Chcę mieć dwa elementy w tym samym wierszu, używając float: left
elementu po lewej stronie.
Nie mam problemów z osiągnięciem tego samodzielnie. Problem polega na tym, że chcę, aby dwa elementy pozostały w tej samej linii, nawet jeśli zmienisz rozmiar przeglądarki bardzo bardzo . Wiesz ... jak to było ze stolikami.
Celem jest, aby przedmiot po prawej nie był zawijany bez względu na wszystko .
Jak powiedzieć przeglądarce za pomocą CSS, że wolę rozciągać zawierającydiv
niż zawijać, aby float: right;
div był poniżej znaku float: left;
div
?
czego chcę:
\
+---------------+ +------------------------/
| float: left; | | float: right; \
| | | /
| | |content stretching \ Screen Edge
| | |the div off the screen / <---
+---------------+ +------------------------\
/
css
css-float
css-tables
stretching
Jiaaro
źródło
źródło
Odpowiedzi:
Zawiń swoje pływające
<div>
s w kontenerze,<div>
który używa tego hakowania min-szerokość przez przeglądarkę:Państwo może również trzeba ustawić „przepełnienia”, ale chyba nie.
Działa to, ponieważ:
!important
Zgłoszenia w połączeniu zmin-width
Bo wszystko, aby pozostać na tej samej linii w IE7 +min-width
, ale ma taki błąd, żewidth: 100px
przesłania!important
deklarację, co powoduje, że szerokość kontenera wynosi 100 pikseli.źródło
Inną opcją jest, zamiast przestawiania, ustawienie właściwości white-space nowrap na div rodzica:
i zresetuj białą spację i użyj wyświetlacza blokowego, aby div pozostały w tej samej linii, ale nadal możesz nadać jej szerokość.
Oto JSFiddle: https://jsfiddle.net/9g8ud31o/
źródło
Owiń swoje pływaki w div o minimalnej szerokości większej niż łączna szerokość + margines pływaków.
Nie wymaga żadnych włamań ani tabel HTML.
źródło
Rozwiązanie 1:
display: komórka tabeli (nie jest powszechnie obsługiwana)
Rozwiązanie 2:
stoły
(Nienawidzę włamań.)
źródło
Inna opcja: nie unoś swojej prawej kolumny; po prostu daj mu lewy margines, aby przesunąć go poza pływak. Będziesz potrzebował hacka lub dwóch, aby naprawić IE6, ale to podstawowy pomysł.
źródło
Czy jesteś pewien, że pływające elementy na poziomie bloku są najlepszym rozwiązaniem tego problemu?
Często z trudnościami CSS w moim doświadczeniu okazuje się, że powód nie widzę sposób robi to, co chcę jest, że mam złapany w tunelu-wizji w odniesieniu do mojego znaczników (myślenie „jak mogę uczynić je elementy robią to ? ”) zamiast wracać i patrzeć na to, co dokładnie muszę osiągnąć, i być może przerobić swój HTML, aby to ułatwić.
źródło
zaleciłbym używanie tabel dla tego problemu. mam podobny problem i dopóki tabela jest używana do wyświetlania niektórych danych, a nie dla układu strony głównej, jest w porządku.
źródło
Dodaj tę linię do selektora elementów pływających
Zapobiegnie to dodawaniu marginesów i marginesów do szerokości, więc element zawsze pozostaje w rzędzie, nawet jeśli masz np. trzy elementy o szerokości 33,333333%
źródło
Gdy użytkownik zmniejszy rozmiar okna w poziomie, a to spowoduje, że zmiennoprzecinkowe ułożą się w stos, usuń zmiennoprzecinkowe, a na drugim div (który był zmiennoprzecinkowy) użyj margin-top: -123px (twoja wartość) i margin-left: 444px (twoja wartość), aby umieść div tak, jak wyglądały za pomocą pływaków. Po wykonaniu tej czynności, gdy okno zwęża się, div div po prawej stronie pozostaje na swoim miejscu i znika, gdy strona jest zbyt wąska, aby ją uwzględnić. ... co (dla mnie) jest lepsze niż to, że div div po prawej stronie „skacze” w dół poniżej div div po lewej stronie, gdy okno przeglądarki jest zwężone przez użytkownika.
źródło
Sposób na obejście tego było użycie jQuery. Powodem tego było to, że A i B miały szerokość procentową.
HTML:
CSS:
jQuery:
źródło