What a framework does is allow an entire algorithm to be carried from one project to another, and to be reused in a variety of different ways. The high level details are shared. For example, a graphical user interface framework may define and implement ideas such as resizing a window and moving it around, or converting a window into an icon. It leaves it to the programmer to redefine low level details, such as how to draw the image on a window.
In a traditional library only the low level details could be shared, and high level application concepts were rewritten for each new project.