А в чём сложность? У Вас все переменные уже есть. Осталось найти 100%.
100% это ширина для контента у родительского блока.
родительский блок -
elem.parentElement
а там уже на Ваше усмотрение(по ситуации) как узнать чему будем равняться
доступная для контента ширина.
Например
el.parentElement.clientWidth
или
getComputedStyle(el.parentElement).width // более точный результат, так как спрашивает у браузера конечные стили. Но, соответственно, и отработает медленнее(на глаз не заметно)
Не забудьте про падинги.