Skip to content

Instantly share code, notes, and snippets.

@benfoster
Last active January 2, 2016 12:09
Show Gist options
  • Save benfoster/8301606 to your computer and use it in GitHub Desktop.
Save benfoster/8301606 to your computer and use it in GitHub Desktop.
A LESS mixin for maintaining perfect vertical rhythm:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Baseline</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href='http://fonts.googleapis.com/css?family=Libre+Baskerville' rel='stylesheet' type='text/css'>
<link rel="stylesheet/less" type="text/css" href="styles.less" />
<script src="less.js" type="text/javascript"></script>
</head>
<body>
<section>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</p>
<h1>
This is a heading 1
</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</p>
<h2>This is a heading 2</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</p>
<h3>This is a heading 3</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</p>
<h4>This is a heading 4</h4>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</p>
</section>
</body>
</html>
@base-font-size: 100%;
@base-line-height: 1.5;
.rhythm(@font-size, @margin-top-lines: 1, @margin-bottom-lines: 1) {
@number-of-lines: ceil((@font-size / @base-line-height));
@line-height: (@base-line-height / @font-size) * @number-of-lines;
@margin-top: (@margin-top-lines * @base-line-height) / @font-size;
@margin-bottom: (@margin-bottom-lines * @base-line-height) / @font-size;
font-size: unit(@font-size, em);
line-height: unit(@line-height, em);
margin: 0;
padding: unit(@margin-top, em) 0 unit(@margin-bottom, em);
}
body {
padding: 0;
margin: 0;
font-family: 'Libre Baskerville', serif;
font-size: @base-font-size;
line-height: @base-line-height;
-webkit-font-smoothing: antialiased;
color: #555;
}
section {
max-width: 40em;
margin: 0 auto;
padding-top: 3em;
}
// http://type-scale.com/?size=16&scale=1.333&text=A%20Visual%20Type%20Scale&webfont=Libre%2BBaskerville&font-family='Libre%20Baskerville'%2C%20serif&font-weight=400&font-family-headers=&font-weight-headers=inherit&background-color=white&font-color=%23333
h1 {
.rhythm(3.157);
}
h2 {
.rhythm(2.369, 1.5, 0.5);
}
h3 {
.rhythm(1.777, 0.5, 0.5);
}
h4 {
.rhythm(1.333, 0.5, 0.5);
}
p {
margin: 0 0 1.5em 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment