Russian police have arrested 20 people after gay rights campaigners and militant Orthodox Christians scuffled near the parliament building where a vote was being taken on banning homosexual "propaganda".

Gay rights supporters organised a mass "kiss-in" outside the Duma in Moscow to demonstrate against the bill that outlaws "propaganda of sodomy, lesbianism, bisexuality and transgenderism" targeted at minors.

Demonstrators were reportedly attacked by a group of Orthodox Christians who support the controversial law.

"Some of them threw eggs at us; others chanted prayers. They poured zelyonka [a green antiseptic] on us. They tried to attack us several times," LGBT campaigner and Novaya Gazeta reporter Yelena Kostyuchenko told broadcaster RERFL.

Kostyuchenko claimed that only gay activists were arrested. Police denied that.

Deputies passed the bill that makes exposing minors to acts of open same-sex affection and events promoting gay rights punishable by fines of up to $16,000.

The bill, backed by the Kremlin and the Orthodox Church, is part of a concerted effort to promote what are deemed traditional Russian values in contrast with Western liberalism.

Campaigners claimed that the loose terminology in the law would result in a total ban on any public homosexual behaviour, including a simple kiss.

The bill has to undergo two more readings in the lower house and then be referred to the upper house and President Vladimir Putin before it can be enacted.

St Petersburg and other Russian cities already have similar regulations on their books.

Russia decriminalised homosexuality in 1993 but episodes of homophobia are not unusual.