Gökkuşakları, ışık ışınlarının su damlaları içinden geçerken kırılmasıyla ve yansımasıyla oluşur. Bir ortamın içinde hareket eden ışık ışınları, başka bir ortamla karşılaştığı zaman ya yansıyarak aynı ortamın içinde kalır veya kırılarak başka ortama geçer. Yansıma durumunda ışığın ara yüzeye geliş açısı ile dönüş açısı aynıdır. Ancak kırılma sırasında açı değişir. Kırılma açısı ortamların kırılma indisleri tarafından belirlenir. Ayrıca kırılma indisi ışınların dalga boyuna bağlı olarak değiştiği için farklı renkteki ışınlar farklı açılarla kırılır. Örneğin beyaz ışık, farklı dalga boylarındaki ışınların bir bileşimidir. Farklı dalga boylarındaki ışınlar bir prizmanın içinden geçirildiği zaman farklı açılarla kırılır (bir kez prizmaya girerken, bir kez prizmadan çıkarken). Böylece beyaz ışık kendini oluşturan farklı renklerdeki ışıklara ayrışır. Kırılma açısı kırmızı renk için en büyük, mor renk için en küçüktür. Gökkuşağının oluşumu da ışığın prizmadan geçerken renklere ayrışmasına çok benzeyen bir süreçtir.
Işık ışınları, su damlalarının içine girerken ve çıkarken birer kez kırılmaya uğrar. Ayrıca damlaların içindeyken birkaç kez yansıyabilir. Işınlar damlaların içinden çıkmadan önce bir kez yansıdığı zaman renklerin dıştan içe doğru kırmızı, turuncu, sarı, yeşil, mavi, lacivert, mor olarak sıralandığı gökkuşakları oluşur. Işınlar iki kez yansıdığı zamansa renklerin sıralanışı tersine döner.