На самом деле полно всяких скриптов для появления по скроллу. Вот один из них, вот другой. И это не предел, конечно. Можно и самостоятельно подобрать что-то по запросу "js scroll effects".
html-css, ну да. Через те плагины можно так сделать. Или просто взять какой-нибудь плагин, который ждет, когда конкретный элемент появится в поле зрения, после чего присвоить этому элементу класс или стиль. В твоем случае ширину линии от 0 до Xpx.
Если я правильно понял вопрос, то существует хорошее свойство transition, которое позволяет решать такие задачи. С помощью него можно установить плавный переход.