You can do something similar to CSS, or resize a widget according to the space available in the parent in which it is hosted? For example, create a button with half widht (50%) of the frame in which it is contained?
local parent = frame:GetParent()
frame:SetPoint("BOTTOMRIGHT", parent, "BOTTOM")
Now your frame fills up the left half of your parent's frame and resizes accordingly, because its top left corner is attached to the parent's top left corner, and the bottom right corner is attached to the bottom (centre) of the parent.
Of course, you don't need the GetParent() calls in these examples if you're creating the frame yourself.