Das nötige css hängt auch von den verwendeten html-Elementen ab.
Blockelemente nehmen von Haus aus die größte mögliche Breite an.
Ein "shrink to fit" kannst du entweder über float (left, right), display (inline, inline-block, table-cell) oder position (absolute, fixed) erreichen.