Mam główny div otoki, który jest ustawiony na 100% szerokości. Wewnątrz chciałbym mieć dwa divy, jeden o stałej szerokości, a drugi, który wypełnia resztę przestrzeni. Jak mogę unieść drugi div, aby wypełnić resztę przestrzeni. Dziękuję za wszelką pomoc.
<divstyle="width:100%;overflow: hidden;"><divstyle="width:600px;float: left;"> Left </div><divstyle="margin-left:620px;"> Right </div></div>
Korzystanie z właściwości CSSdisplay - które można wykorzystać, aby divs działał jak table:
<divstyle="width:100%;display: table;"><divstyle="display: table-row"><divstyle="width:600px;display: table-cell;"> Left </div><divstyle="display: table-cell;"> Right </div></div></div>
Jest więcej metod, ale te dwa są najbardziej popularne.
@Oyvind, masz dokładnie rację. To zależy od twojego przypadku użycia. Jeśli wspierasz IE 8, 9 lub 10, musiałbyś skorzystać z obsługi polyfill. Polecam usługę taką jak polyfill.io cdn.polyfill.io/v2/docs lub github.com/10up/flexibility, ale możesz mieć naprawdę ścisłe wymagania, które uniemożliwiają stosowanie wieloskładników.
CSS3 wprowadził elastyczne skrzynki (znane również jako flex box), które również mogą osiągnąć to zachowanie.
Po prostu określ szerokość pierwszego diva, a następnie podaj drugiemu flex-growwartość, 1która pozwoli mu wypełnić pozostałą szerokość elementu nadrzędnego.
Pamiętaj, że pola Flex nie są wstecznie kompatybilne ze starymi przeglądarkami, ale są świetną opcją do celowania w nowoczesne przeglądarki (patrz także Caniuse i MDN ). Świetny kompleksowy przewodnik na temat korzystania z Flex Boxów jest dostępny w CSS Tricks .
Znalezienie rozwiązania zajęło cały dzień, a ta odpowiedź go rozwiązała! Mam 4 panele obok siebie, a 3 i 4 panele czasami nie mają nic w sobie. Wszyscy żyją w zawierającej div z obwódką wokół nich. Cała liczba zmiennoprzecinkowa: pozostawiona na pierwszej sytuacji div pozostawiła mnie z div przechodzącą obok granicy na dole, ponieważ generowane etykiety są dynamiczne. Etykiety mają rozpiętość, ponieważ tak właśnie renderuje je ASP. Nie mając float: left wykonał tylko 3 divy w tym samym rzędzie. A używanie stołu nie wchodzi w rachubę. Dziękuję Ci!
Nie wiem wiele o strategiach projektowych HTML i CSS, ale jeśli szukasz czegoś prostego, co automatycznie dopasuje się do ekranu (tak jak ja), uważam, że najprostszym rozwiązaniem jest sprawienie, by div zachowywały się jak słowa w paragraf. Spróbuj określićdisplay: inline-block
<divstyle="display: inline-block">
Content in column A
</div><divstyle="display: inline-block">
Content in column B
</div>
Możliwe, że nie będzie konieczne określenie szerokości DIV
Prawdopodobnie display:flexjest to najlepsze rozwiązanie, ale myślę, że inline-blockjest również doskonałe, ponieważ działa na większej liczbie przeglądarek. Nawiasem mówiąc, być może będziesz musiał zawinąć oba divy, <div style="white-space:nowrap">aby zapobiec rozpadowi przy zmianie rozmiaru.
@JohnHenckel, co oznacza, że nie jest przeznaczony dla wszystkich przeglądarek, czy nie mógłby działać dla wszystkich przeglądarek w ten sam sposób? inline-blockkod.
<divstyle="width:200px;float: left;background-color: Aqua;"> Left </div><divstyle="margin-left:220px;background-color: Silver;"> Right </div><divstyle="clear: both;">Below</div>
Daj pierwszemu divowi pływak w lewo i unieruchomiony, drugi div 100% szerokości i float w lewo. To powinno wystarczyć. Jeśli chcesz umieścić elementy poniżej, musisz zaznaczyć: oba elementy, które chcesz umieścić poniżej
Będzie to zgodne z wieloma przeglądarkami. Bez marginesu po lewej stronie wystąpią problemy z treścią przebiegającą do końca w lewo, jeśli zawartość jest dłuższa niż pasek boczny.
Jeśli nie tagujesz IE6, ustaw zmiennoprzecinkowy drugi <div>i nadaj mu margines równy (lub może nieco większy niż) <div>stałej szerokości pierwszego.
HTML:
<divid="main-wrapper"><divid="fixed-width"> lorem ipsum </div><divid="rest-of-space"> dolor sit amet </div></div>
CSS:
#main-wrapper {100%;
background:red;}#fixed-width {
width:100px;float:left
}#rest-of-space {
margin-left:101px;/* May have to increase depending on borders and margin of the fixd width div*/
background:blue;}
Margines uwzględnia możliwość, że „pozostała przestrzeń” <div>może zawierać więcej treści niż „stała szerokość” <div>.
Nie podawaj stałej szerokości jako tła; jeśli chcesz zobaczyć je wyraźnie jako różne „kolumny”, użyj sztuczki Sztuczne kolumny .
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.