HTML и CSS - это просто статичные документы (хотя в CSS есть препроцессоры типа less). Эти документы ничего не умеют делать. Они просто отображают данные. А данные формируются либо на стороне сервера (back-end PHP NodeJS Phyton .NET и др.) и выплевывается готовый HTML. Либо на клиенте (front-end) это делается JS.
JS - это логика. JS позволяет манипулировать DOM элементами и вытворять с ними что угодно (такого не сделаешь на CSS. CSS статичен, это всего-лишь стиль). Для примера есть фреймворк AngularJS (который щас очень популярен во front-end) который основан на паттерне MVC для создания singleton приложений на стороне клиента, где в html используется декларативный подход а в контролах и моделях императивный.
Писать программы на JS не так и просто. И если вы не занимались программированием, боюсь будет тяжко.