Question: Where is it best to declare the `font-family` CSS property? On the `html` or `body` element?

```
html {
    font-family: sans-serif;
}

```

or

```
body {
    font-family: sans-serif;
}

```

I searched online, but I cant find a definitive answer.

Answer: 
The `*` selector will give you better coverage. For example, `form` elements, like `input`, don't inherit font styles from `html` and `body` tags. But if you set it with `*` then you'll make sure your font styles pass down to all HTML elements.

```
* {
  font-family: 'Open Sans', Helvetica, sans-serif;
}

```

Here's a demo. Using [\* selector](http://jsfiddle.net/VolkerShmuley/gpkzhec4/2/) vs [html and body](http://jsfiddle.net/VolkerShmuley/1t7fg20x/2/).
As others have said, it would probably make sense to specify the `font-family` on the `body`. However, since there isn't exactly very many downsides to applying it to the `html` element, I thought it would be worth mentioning the `:root` pseudo-class selector, which selects the root of the page (the `html` element in most scenarios) and could be more convenient in this scenario.

Usually, the `:root` selector is used to set CSS custom properties (variables) and font-sizes, but I'd say it would be reasonable to apply a `font-family` on it.

```css
:root {
  /* ...custom properties, font-size, etc... */
  font-family: sans-serif;
}

```