Why is CiviCRM so ugly?
Out of the box, a CiviCRM public contribution page is surprisingly ugly.
Worse, if you ask your designer to make it look better, they are likely to take a long time, grumble loudly, and then maybe a year later it starts looking ugly again.
It's a bit tragic that this is sometimes the first experience of people with CiviCRM, and since it's not likely to get fixed any time soon, here's a post explaining a bit of why, and how to remediate the issue.
Why is CiviCRM so ugly?
Why is CiviCRM so ugly?
Why is CiviCRM so ugly?
My first answer above hides some important history. In the past number of years core CiviCRM has provided a "theme" concept, and there are a number of themes available. Usefully, like Drupal, CiviCRM allows you to assign different themes for the public vs private pages.
When I saw all that work, I thought, "great, someone is fixing this problem so I don't have to".
But after multiple attempts trying to get out of the box nice CiviCRM contribution screens by making use of some of these new themes, I realised that these themes were solving a different problem. In fact, they seemed to be repeating the error of the original implementation, which was to be so opinionated in what things should look like, instead of working with the rest of the system that's generating the page the contribution form lives on. To be fair, for backend themes, that's exactly what you want, it's just kind of the opposite of what you want from a front end theme.
How To Fix CiviCRM's Contribution Page Design
If you have a picture of what you want something to look like on the web, there are a lot of ways that can be implemented with combinations of html, css and js.
So it's possible to make a CiviCRM contribution page nice only by tweaking your CMS theme.That was the usual way to do it for many years, and there are legions of Drupal and Wordpress designers out there that now have a very dim view of CiviCRM.
The Better Way is to do it in two steps:
1. Remove the old-school legacy css that CiviCRM carries around, using a CiviCRM theme. My Toronto theme is a work in progress to do that.
2. Add new (minimal) css (and possibly js) to extend your theme's design to the new html elements generated by the CiviCRM contribution page.
Here's a simple example at work: