├── .gitattributes ├── README.md ├── birchtree.css ├── img ├── alerts.png ├── buttons.png ├── checkbox.png ├── headings.png ├── labels.png ├── nav-left.png ├── nav-right.png ├── nav.png ├── select.png ├── text-input-large.png ├── text-input.png ├── textarea.png ├── upload.png └── wells.png └── index.html /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Birchtree.css 2 | 3 | Mocking up simple personal pages or test sites for your business typically mean using zero, to close to zero styling, and moving on because "it’s just a test site, who cares?" Oh, and these pages usually look like trash on mobile. This is all reasonable, it doesn’t need to be this way! 4 | 5 | Birchtree.css is a small CSS package you can use to make those sites look good with very little effort. You could use this for a full, public website, but it’s lacking a ton of features, so you’d have to build all that out yourself. 6 | 7 | Yes, something like Bootstrap does this, but (a) I don't love how Bootstrap looks out of the box, and (b) our aim is to have as little code as possible. Just because I don't see the extent of Bootstrap, doesn't mean it's not overkill for some things. 8 | 9 | # Usage 10 | 11 | Think of this like Bootstrap, but way simpler and way smaller. You use some basic HTML formatting and class names to style everything from form inputs to buttons to headers and more. 12 | 13 | # Step 1: Import birchtree.css 14 | 15 | In your HTML or PHP file, load the CSS file. 16 | 17 | ```html 18 | 19 | ``` 20 | 21 | # Step 2: Use the below formatting to get the styles. 22 | 23 | ## Contents 24 | 25 | * [Layout](#layout) 26 | * [Form Inputs](#form-inputs) 27 | * [Buttons](#buttons) 28 | * [Headings](#headings) 29 | * [Information Wells](#information-wells) 30 | * [Alerts](#alerts) 31 | * [Labels](#labels) 32 | * [Navigation Bars](#navigation-bars) 33 | 34 | ## Layout 35 | 36 | This ain’t Bootstrap, so don’t look to this to do advanced styling for you, but you can use the container class to hold all parts of your page. This simply constrains the width and centers everything on the page. 37 | 38 | ```html 39 |
40 | { test page content } 41 |
42 | ``` 43 | 44 | ## Form Inputs 45 | 46 | The building block of almost any test page, form inputs are easily laid out. 47 | 48 | **Text** 49 | 50 | ![](img/text-input.png) 51 | 52 | ```html 53 |
54 | Email Address 55 | 56 |
57 | ``` 58 | 59 | You can also make larger text fields by adding the input-mega class to the input-text element. 60 | 61 | ![](img/text-input-large.png) 62 | 63 | ```html 64 |
65 | Large Text Field 66 | 67 |
68 | ``` 69 | 70 | **Checkbox** 71 | 72 | ![](img/checkbox.png) 73 | 74 | ```html 75 |
76 | Checkbox Stuff 77 |
78 | ``` 79 | 80 | **Select** 81 | 82 | ![](img/select.png) 83 | 84 | ```html 85 |
86 | 92 |
93 | ``` 94 | 95 | **File Upload** 96 | 97 | ![](img/upload.png) 98 | 99 | ```html 100 |
101 | 102 | 103 |
104 | ``` 105 | 106 | ## Buttons 107 | 108 | ![](img/buttons.png) 109 | 110 | Rendering a basic button is simple. 111 | 112 | ```html 113 | 114 | ``` 115 | 116 | If you need a different type of button, you can add one of 5 other classes to get different styles. 117 | 118 | ```html 119 | 120 | ``` 121 | 122 | All options include: 123 | 124 | * btn-submit 125 | * btn-warning 126 | * btn-danger 127 | * btn-dark 128 | * btn-light 129 | 130 | Buttons can be made larger or smaller if you’d like, using btn-sm or btn-mega 131 | 132 | ```html 133 | 134 | 135 | ``` 136 | 137 | ## Headings 138 | 139 | ![](img/headings.png) 140 | 141 | There is nothing special to do here, Birchtree.css simply makes some small adjustments to heading designs. 142 | 143 | ```html 144 |

This is a heading with style

145 | ``` 146 | 147 | Oh, and try using the class site-title to make your page’s name pop even more. 148 | 149 | ```html 150 | Page Title 151 | ``` 152 | 153 | ## Information Wells 154 | 155 | ![](img/wells.png) 156 | 157 | Typically used for instructional text. 158 | 159 | ```html 160 |
161 | Paragraph of text goes here. 162 |
163 | ``` 164 | 165 | ## Alerts 166 | 167 | ![](img/alerts.png) 168 | 169 | Much like a well, these are call outs you can use to show success or error messages, or whatever you want, really. 170 | 171 | ```html 172 |
173 | Hey, this is an alert that I think you should really care about! 174 |
175 | ``` 176 | 177 | Much like buttons, this creates a blue alert, and there are some alternate styles you can pick from: 178 | 179 | * alert-success 180 | * alert-warning 181 | * alert-danger 182 | 183 | ```html 184 |
185 | Hey, this is an alert that I think you should really care about! 186 |
187 | ``` 188 | 189 | ## Labels 190 | 191 | ![](img/labels.png) 192 | 193 | If you need to put a badge/label next to something to call it out, labels let you do this. 194 | 195 | ```html 196 |

Item Badge

197 | ``` 198 | 199 | Labels will resize based on the size of their parent element, so the above example will be pretty small, but a label on an h1 will be much bigger. 200 | 201 | Again, there are a few colors to choose from. 202 | 203 | * label-success 204 | * label-warning 205 | * label-danger 206 | 207 | ```html 208 |

Item Badge

209 | ``` 210 | 211 | ## Navigation Bars 212 | 213 | ![](img/nav.png) 214 | 215 | If you want to link to a few other pages, use the navigation bar element to make nicer links to your other pages. 216 | 217 | ```html 218 | 223 | ``` 224 | 225 | The default is to center the menu items, but you can left or right-justify them using: 226 | 227 | ![](img/nav-left.png) 228 | 229 | ```html 230 | 233 | ``` 234 | 235 | ![](img/nav-right.png) 236 | 237 | ```html 238 | 241 | ``` 242 | 243 | Also, there is an option to throw a subtle shadow under the navigation to add a little separation. 244 | 245 | ```html 246 | 249 | ``` 250 | 251 | 252 | -------------------------------------------------------------------------------- /birchtree.css: -------------------------------------------------------------------------------- 1 | /* General Rules */ 2 | * { 3 | font-family: -apple-system, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; 4 | box-sizing: border-box; 5 | } 6 | 7 | *::before, 8 | *::after { 9 | box-sizing: border-box; 10 | } 11 | 12 | body { 13 | margin: 0px; 14 | padding: 0px; 15 | } 16 | 17 | a { 18 | color: #189fcc; 19 | text-decoration: none; 20 | } 21 | 22 | hr { 23 | color: black; 24 | width: 100%; 25 | border: 0.5px solid black; 26 | margin: 40px 0; 27 | } 28 | 29 | .site-title { 30 | font-size: 50px; 31 | font-weight: 700; 32 | } 33 | 34 | h1 { 35 | font-weight: 300; 36 | margin: 20px 0 10px 0; 37 | font-size: 42px; 38 | } 39 | 40 | h2 { 41 | font-weight: 300; 42 | margin: 20px 0 10px 0; 43 | font-size: 34px; 44 | } 45 | 46 | h3 { 47 | font-weight: 300; 48 | margin: 20px 0 10px 0; 49 | font-size: 30px; 50 | } 51 | 52 | h4 { 53 | font-weight: 300; 54 | margin: 20px 0 10px 0; 55 | font-size: 26px; 56 | } 57 | 58 | h5 { 59 | font-weight: 300; 60 | margin: 20px 0 10px 0; 61 | font-size: 22px; 62 | } 63 | 64 | h6 { 65 | font-weight: 300; 66 | margin: 20px 0 10px 0; 67 | font-size: 18px; 68 | } 69 | 70 | .container { 71 | width: 700px; 72 | max-width: 95%; 73 | display: block; 74 | margin: 0px auto 100px auto; 75 | } 76 | 77 | /* Alerts */ 78 | .alert { 79 | background-color: #189fcc66; 80 | padding: 20px; 81 | margin: 20px 0px; 82 | border-radius: 4px; 83 | box-shadow: 0px 2px 8px #00000022; 84 | } 85 | .alert-success { 86 | background-color: #06D6A066; 87 | } 88 | .alert-warning { 89 | background-color: #f47f2c66; 90 | } 91 | .alert-danger { 92 | background-color: #EF476F66; 93 | } 94 | 95 | /* Labels */ 96 | .label { 97 | background-color: #189fcc; 98 | border-radius: 2px; 99 | padding: 5px 10px; 100 | color: white; 101 | font-size: 0.7em; 102 | font-weight: 700; 103 | } 104 | .label-success { 105 | background-color: #06D6A0; 106 | } 107 | .label-warning { 108 | background-color: #f47f2c; 109 | } 110 | .label-danger { 111 | background-color: #EF476F; 112 | } 113 | 114 | .well { 115 | background-color: #e5e9ea; 116 | padding: 20px; 117 | border-radius: 4px; 118 | margin: 20px 0; 119 | } 120 | 121 | /* Buttons */ 122 | .btn { 123 | -webkit-appearance: none; 124 | font-family: sans-serif; 125 | background: linear-gradient(140deg, #189fcc, #0babe0); 126 | box-shadow: 0px 2px 8px #189fcc40; 127 | color: white; 128 | border: none; 129 | padding: 10px 30px; 130 | margin: 5px 3px; 131 | font-size: 18px; 132 | border-radius: 4px; 133 | min-width: 140px; 134 | transition: 200ms; 135 | } 136 | .btn:hover { 137 | cursor: pointer; 138 | opacity: 0.95; 139 | transition: 200ms; 140 | } 141 | .btn-sm { 142 | font-size: 14px; 143 | padding: 6px 18px; 144 | margin: 5px 1px; 145 | min-width: 50px; 146 | border-radius: 3px; 147 | box-shadow: 0px 2px 8px #189fcc40; 148 | } 149 | .btn-mega { 150 | font-size: 22px; 151 | padding: 15px 30px; 152 | margin: 10px 5px; 153 | min-width: 200px; 154 | border-radius: 6px; 155 | box-shadow: 0px 2px 8px #189fcc40; 156 | } 157 | /* Button Styles */ 158 | .btn-success { 159 | background: linear-gradient(140deg, #06D6A0, #0fe2aa); 160 | box-shadow: 0px 2px 8px #06D6A040; 161 | } 162 | .btn-warning { 163 | background: linear-gradient(140deg, #f47f2c, #f99045); 164 | box-shadow: 0px 2px 8px #f47f2c40; 165 | } 166 | .btn-danger { 167 | background: linear-gradient(140deg, #EF476F, #f7315f); 168 | box-shadow: 0px 2px 8px #EF476F40; 169 | } 170 | .btn-dark { 171 | background: linear-gradient(140deg, #073B4C, #08485e); 172 | box-shadow: 0px 2px 8px #073B4C40; 173 | } 174 | .btn-light { 175 | background: linear-gradient(140deg, #e5e9ea, #f4f4f4); 176 | box-shadow: 0px 2px 8px #00000030; 177 | color: #073B4C; 178 | } 179 | 180 | /* Inputs */ 181 | .input { 182 | padding: 10px 0px; 183 | } 184 | .input-text, .input-textarea, .input-upload { 185 | display: flex; 186 | flex-direction: column; 187 | } 188 | .input-label { 189 | padding-left: 3px; 190 | } 191 | .input-field { 192 | border: 1px solid #e5e9ea; 193 | -webkit-appearance: none; 194 | border-radius: 2px; 195 | font-size: 16px; 196 | padding: 6px; 197 | box-shadow: 0px 2px 8px #00000011; 198 | } 199 | textarea { 200 | border: 1px solid #e5e9ea; 201 | -webkit-appearance: none; 202 | border-radius: 2px; 203 | font-size: 16px; 204 | padding: 6px; 205 | box-shadow: 0px 2px 8px #00000011; 206 | height: 200px; 207 | } 208 | .input-mega .input-label { 209 | font-size: 22px; 210 | } 211 | .input-mega .input-field { 212 | font-size: 24px; 213 | padding: 10px; 214 | } 215 | .input-dropdown { 216 | width: 100%; 217 | border: 1px solid #e5e9ea; 218 | -webkit-appearance: none; 219 | border-radius: 2px; 220 | font-size: 16px; 221 | padding: 6px; 222 | box-shadow: 0px 2px 8px #00000011; 223 | } 224 | .file-upload { 225 | font-size: 20px; 226 | } 227 | 228 | /* Navigation */ 229 | .nav { 230 | display: flex; 231 | justify-content: center; 232 | background-color: #f4f4f4; 233 | margin: 0px 0px 30px 0px; 234 | padding: auto 20px; 235 | } 236 | .nav-left { 237 | justify-content: flex-start; 238 | } 239 | .nav-right { 240 | justify-content: flex-end; 241 | } 242 | .nav-shadow { 243 | box-shadow: 0px 2px 12px #00000020; 244 | } 245 | .nav-item { 246 | padding: 20px 10px; 247 | transition: 100ms; 248 | } 249 | .nav-item:hover { 250 | background-color: #189fcc; 251 | cursor: pointer; 252 | } 253 | .nav-item:hover > a { 254 | color: white; 255 | } 256 | .active { 257 | color: #000000; 258 | border-bottom: 3px solid #189fcc; 259 | } 260 | .active:hover { 261 | color:white; 262 | } 263 | 264 | @media (prefers-color-scheme: dark) { 265 | * { 266 | color: white; 267 | } 268 | html { 269 | background-color: #222222; 270 | } 271 | hr { 272 | color: white; 273 | } 274 | .well { 275 | background-color: #121212; 276 | } 277 | input { 278 | background-color: #222222; 279 | border-color: white; 280 | } 281 | .alert { 282 | background-color: #189fcc; 283 | } 284 | .alert-success { 285 | background-color: #06D6A0; 286 | } 287 | .alert-warning { 288 | background-color: #f47f2c; 289 | } 290 | .alert-danger { 291 | background-color: #EF476F; 292 | } 293 | .nav { 294 | background-color: #121212; 295 | } 296 | .active { 297 | color: white; 298 | } 299 | } -------------------------------------------------------------------------------- /img/alerts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/alerts.png -------------------------------------------------------------------------------- /img/buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/buttons.png -------------------------------------------------------------------------------- /img/checkbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/checkbox.png -------------------------------------------------------------------------------- /img/headings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/headings.png -------------------------------------------------------------------------------- /img/labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/labels.png -------------------------------------------------------------------------------- /img/nav-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/nav-left.png -------------------------------------------------------------------------------- /img/nav-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/nav-right.png -------------------------------------------------------------------------------- /img/nav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/nav.png -------------------------------------------------------------------------------- /img/select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/select.png -------------------------------------------------------------------------------- /img/text-input-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/text-input-large.png -------------------------------------------------------------------------------- /img/text-input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/text-input.png -------------------------------------------------------------------------------- /img/textarea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/textarea.png -------------------------------------------------------------------------------- /img/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/upload.png -------------------------------------------------------------------------------- /img/wells.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattbirchler/birchtree-css/f72918545d3a3f54caa71967d855b2e26997ac1b/img/wells.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Birchtree.css 5 | 6 | 7 | 8 | 13 | 37 |
38 |

Birchtree.css

39 |
40 | Mocking up simple personal pages or test sites for your business typically mean using zero, to close to zero styling, and moving on because "it's just a test site, who cares?" Oh, and these pages usually look like trash on mobile. This is all reasonable, it doesn't need to be this way! 41 |

42 | Birchtree.css is a small CSS package you can use to make those sites look good with very little effort. You could use this for a full, public website, but it's lacking a ton of features, so you'd have to build all that out yourself. 43 |

44 | Yes, something like Bootstrap does this, but (a) I don't love how Bootstrap looks out of the box, and (b) our aim is to have as little code as possible. Just because I don't see the extent of Bootstrap, doesn't mean it's not overkill for some things. 45 |
46 |

Usage

47 |

Think of this like Bootstrap, but way simpler and way smaller. You use some basic HTML formatting and class names to style everything from form inputs to buttons to headers and more.

48 |

Step 1: Import birchtree.css

49 |

Clone the birhtree.css file into your project and load it from your header.

50 |
51 |
<link rel="stylesheet" src="birchtree.css">
52 |
53 | 54 |

Step 2: Use the below formatting to get the styles

55 | 56 |

Contents

57 | 58 | 68 |
69 |

Layout

70 |
71 | This ain't Bootstrap, so don't look to this to do advanced styling for you, but you can use the container class to hold all parts of your page. This simply constrains the width and centers everything on the page. 72 |
73 | 74 |
75 |
<div class="container">
 76 |     { page content }
 77 | </div>
78 |
79 |
80 |

Form Inputs

81 | 82 |

Text

83 | 84 |
85 | Email Address 86 | 87 |
88 |
<div class="input input-text">
 89 |     <span class="input-label">Email Address</span>
 90 |     <input class="input-field" type="text" placeholder="hey@yo.co" name="email">
 91 | </div>
92 | 93 |

You can also create large text fields.

94 | 95 |
96 | Large Text Field 97 | 98 |
99 | 100 |
<div class="input input-text input-mega">
101 |     <span class="input-label">Email Address</span>
102 |     <input class="input-field" type="text" placeholder="hey@yo.co" name="email">
103 | </div>
104 |
105 |

Checkbox

106 |
107 | Check this for fun 108 |
109 | 110 |
<div class="input input-chckbox">
111 |     <input type="checkbox"> <span class="input-label">Checkbox Stuff</span>
112 | </div>
113 |
114 |

Select

115 | 116 |
117 | 123 |
124 | 125 |
<div class="input input-select">
126 |     <select class="input-dropdown">
127 |         <option value="">-- Select An Option --</option>
128 |         <option value="1">One</option>
129 |         <option value="2">Two</option>
130 |         <option value="3">Three</option>
131 |     </select>
132 | </div>
133 |
134 |

File Upload

135 | 136 |
137 | 138 | 139 |
140 | 141 |
<div class="input input-upload">
142 |     <label class="input-label" for="file-upload">Upload a file</label>
143 |     <input type="file" class="file-upload" id="file-upload">
144 | </div>
145 |
146 |

Buttons

147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 |
<button class="btn">Default</button>
156 | <button class="btn btn-success">Success</button>
157 | <button class="btn btn-warning">Warning</button>
158 | <button class="btn btn-danger">Danger</button>
159 | <button class="btn btn-dark">Dark</button>
160 | <button class="btn btn-light">Light</button>
161 | 162 |

You can also make smaller or larger buttons.

163 | 164 | 165 | 166 |
<button class="btn btn-sm">Small Button</button>
167 | 168 | 169 | 170 |
<button class="btn btn-mega">Large Button</button>
171 |
172 |

Headings

173 |

Nothing special to do here, just use headings like normal.

174 |

Heading 1

175 |

Heading 2

176 |

Heading 3

177 |

Heading 4

178 |
Heading 5
179 |
Heading 6
180 |
181 |

Wells

182 | 183 |
184 | Lorem ipsum dolor sit amet, consectetur adipiscing 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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 185 |
186 | 187 |
<div class="well">
188 |     Paragraph of text goes here.
189 | </div>
190 |
191 |

Alerts

192 | 193 |
194 | Hey, this is an alert that I think you should really care about! 195 |
196 |
197 | Hey, this is an alert that I think you should really care about! 198 |
199 |
200 | Hey, this is an alert that I think you should really care about! 201 |
202 |
203 | Hey, this is an alert that I think you should really care about! 204 |
205 | 206 |
<div class="alert">
207 |     Hey, this is an alert that I think you should really care about!
208 | </div>
209 |
210 |

Labels

211 |

Item Badge

212 |
Item Badge 2
213 |
Item Another longer badge
214 |

Item 99+

215 | 216 |
<p>Item <span class="label">Badge</span></p>
217 | <p>Item <span class="label label-success">Badge</span></p>
218 | <p>Item <span class="label label-warning">Badge</span></p>
219 | <p>Item <span class="label label-danger">Badge</span></p>
220 |
221 |

Navigation

222 | 223 |

If you want to link to a few other pages, use the navigation bar element to make nicer links to your other pages.

224 | 225 | 230 | 231 |
<div class="nav">
232 |     <div class="nav-item active" aria-current="page">Home</div>
233 |     <div class="nav-item"><a href="https://google.com" target="_blank">Google</a></div>
234 |     <div class="nav-item"><a href="https://github.com" target="_blank">GitHub</a></div>
235 | </div>
236 | 237 |

The default behavior is to center the items, but you can also left or right align the menu items.

238 | 239 | 244 | 245 |
<div class="nav nav-left">
246 |     <div class="nav-item active" aria-current="page">Home</div>
247 |     <div class="nav-item"><a href="https://google.com" target="_blank">Google</a></div>
248 |     <div class="nav-item"><a href="https://github.com" target="_blank">GitHub</a></div>
249 | </div>
250 | 251 | 256 | 257 | 258 |
<div class="nav nav-right">
259 |     <div class="nav-item active" aria-current="page">Home</div>
260 |     <div class="nav-item"><a href="https://google.com" target="_blank">Google</a></div>
261 |     <div class="nav-item"><a href="https://github.com" target="_blank">GitHub</a></div>
262 | </div>
263 | 264 | 265 |
266 | 267 | 270 | --------------------------------------------------------------------------------