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.
241
Odpowiedzi:
Istnieje wiele sposobów zrobienia tego, o co prosisz:
Korzystanie z właściwości CSS
float
:Korzystanie z właściwości CSS
display
- które można wykorzystać, abydiv
s działał jaktable
:Jest więcej metod, ale te dwa są najbardziej popularne.
źródło
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-grow
wartość,1
która pozwoli mu wypełnić pozostałą szerokość elementu nadrzędnego.Demo jsFiddle
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 .
źródło
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
Możliwe, że nie będzie konieczne określenie szerokości DIV
źródło
display:flex
jest to najlepsze rozwiązanie, ale myślę, żeinline-block
jest 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.inline-block
kod.Aby to osiągnąć, możesz użyć siatki CSS, jest to wersja długa dla celów ilustracji:
Lub bardziej tradycyjna metoda wykorzystująca zmiennoprzecinkowe i margines.
W tym przykładzie podałem kolor tła, aby pomóc pokazać, gdzie są rzeczy - a także co zrobić z zawartością poniżej obszaru zmiennoprzecinkowego.
Nie umieszczaj swoich stylów w wierszu w prawdziwym życiu, wyodrębnij je do arkusza stylów.
źródło
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
źródło
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.
źródło
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:
CSS:
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 .
źródło