Comparison between Fourier transform, short-time Fourier transform and wavelets
All three transforms are inner product transforms, meaning the output is the inner product of a family of basis functions with a signal. The parametrization and form of the basis functions determine the properties of the transforms.The number of basis functions for a complete picture (i.e. a result that contains enough information to reconstruct the original signal) is  the same for all three cases. That is a result of the Heisenberg uncertainty or a bit more general, conservation of information.

For the standard Fourier transform the basis functions are simply the complex oscillations
$$b_\omega(t) := \exp(i \omega t)$$
where $t$ is the time axis of the signal and $\omega$ is the single frequency parameter that determines the basis function in the family. There is one basis function for every $\omega$. The fourier transform of the signal $s(t)$ is then simply the inner product written as an integral:
$$\mathcal{F}\left\{s(t)\right\}(\omega)=\langle b(\omega,t),s(t)\rangle=\int_{-\infty}^\infty \exp(-i \omega \tau) s(\tau)d\tau$$
The negative sign in the exponential comes from the complex conjugation in the general inner product definition $$\langle a(t),b(t)\rangle=\int_{-\infty}^\infty a(\tau)^*b(\tau) d\tau$$

The short time fourier transform adds a time dimension to the base function parameters by multiplying the infinitely long complex exponential with a window to localize it. The base functions are then something like $$b_{(\omega,t_0)}(t):= w(t-t_0)\exp(i \omega t)$$ where $w(t)$ is the window functions that vanishes outside some interval and $(\omega,t_0)$ are the time-frequency coordinates of the base function in the family. The inner product becomes then
$$\mathcal{S}\left\{s(t)\right\}(\omega,t_0) = \int_{-\infty}^\infty w(\tau)^* \exp(-i\omega \tau) s(\tau)d\tau$$
and gives you time and frequency information. The actual tradeoff between time and frequency is determined by the choice of the window function. The result of this transform can also be regarded as a filterbank with bandpass filters that have the fourier transform as the window $w(t)$ as frequency response, but shifted to the center frequency $\omega$. All the filters therefore have the same bandwidth.

The wavelet transform does away with the constant bandwidth constraint and adapts the window size to the frequency. And that happens in a specific scale invariant way that doesn't even need the complex modulation anymore. You start with a generic base function that is localized and oscillates, and it also has zero mean (i.e. the integral over the complete space is 0). That is your wavelet. Now if you scale the wavelet in time direction the oscillation frequency changes as well, so you can control localization and oscillation with a single parameter that links the two. The family of base functions is therefore something like $$b_{(\sigma,t_0)}(t) = w\left(\frac{t-t_0}{\sigma}\right)$$ where $w$ is the original wavelet and $\sigma$ the scale parameter. The inner product becomes then $$\mathcal{W}\left\{s(t)\right\}(\sigma,t_0)=\int_{-\infty}^\infty w\left(\frac{t-t_0}{\sigma}\right)^* s(t)$$
Again this gives you a 2-dimensionally parametrized result that can also be seen as a filterbank, but this time the bandwidth of the filters is proportional to the center frequency of the bands. The time-frequency plane is therefore partitioned non-uniformly and more suitable to many real-world signals where the typical time constants of processes is naturally scale dependent.