Form fields labeling

The general rule for forms is to make it super minimalistic. Collect only data you really need in this particular moments. For example, you need e-mail and password for registration process only. All these names, preferences, genders and so on you can catch later. Do not lose your users by form errors.

And you need to label your form fields. Just placeholder (1) is not a good idea. A user can start to feel it up and... what should I put here? It happens. Often. So placeholders are great idea usually but do not leave it alone. Perhaps when you have just login and password and it is REALLY obvious - you can do it.

The best way is no 4. BUT it will consume much space vertically, so it is not so good on mobiles. Then use no 2. And what about no 3? Don't do it. It is unnatural for human perception. Remember users scanning not reading your site.