2 | 3 | 4 | {% render "@button", { label: "Search", submit: true } %} 5 |
6 | -------------------------------------------------------------------------------- /src/components/common/field/field--textarea.html: -------------------------------------------------------------------------------- 1 |2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /src/components/common/field/field.config.yaml: -------------------------------------------------------------------------------- 1 | collated: true 2 | -------------------------------------------------------------------------------- /src/components/common/field/field.css: -------------------------------------------------------------------------------- 1 | .c-field { 2 | @apply --typeset-ui; 3 | 4 | position: relative; 5 | 6 | &:not(:last-of-type) { 7 | margin-bottom: map(spaces, medium); 8 | } 9 | 10 | @media print { 11 | display: none; 12 | } 13 | } 14 | 15 | .c-field__icon { 16 | height: 2.5rem; 17 | width: 2.5rem; 18 | } 19 | 20 | .c-field__input { 21 | width: 100%; 22 | border: 1px solid $prose-color--rule; 23 | border-radius: 0; 24 | padding: map(spaces, medium); 25 | } 26 | 27 | .c-field__label { 28 | display: block; 29 | position: absolute; 30 | top: 0; 31 | bottom: 0; 32 | left: 0; 33 | width: map(sizes, xlarge); 34 | padding: map(spaces, medium); 35 | font-weight: 700; 36 | 37 | + .c-field__input { 38 | padding-left: calc(map(sizes, xlarge) + map(spaces, medium)); 39 | } 40 | } 41 | 42 | .c-field__label--icon { 43 | padding: map(spaces, small); 44 | 45 | + .c-field__input { 46 | padding-left: map(sizes, large); 47 | } 48 | } 49 | 50 | .c-field--combined { 51 | display: flex; 52 | } 53 | -------------------------------------------------------------------------------- /src/components/common/field/field.html: -------------------------------------------------------------------------------- 1 |2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /src/components/common/listing/listing.config.yaml: -------------------------------------------------------------------------------- 1 | variants: 2 | - name: default 3 | context: 4 | mods: [summaries] 5 | component: summary 6 | items: 7 | - "@summary" 8 | - "@summary" 9 | - "@summary" 10 | - "@summary" 11 | - name: inset 12 | context: 13 | mods: [summaries, inset] 14 | component: summary 15 | items: 16 | - "@summary" 17 | - "@summary" 18 | - "@summary" 19 | - "@summary" 20 | - name: authors 21 | context: 22 | mods: [authors] 23 | component: author 24 | items: 25 | - "@author" 26 | - "@author" 27 | - "@author" 28 | - "@author" 29 | -------------------------------------------------------------------------------- /src/components/common/listing/listing.css: -------------------------------------------------------------------------------- 1 | .c-listing { 2 | display: flex; 3 | flex-wrap: wrap; 4 | 5 | @supports (display: grid) { 6 | display: grid; 7 | grid-gap: map(spaces, xsmall); 8 | } 9 | 10 | > * { 11 | display: flex; 12 | flex: 1; 13 | margin: 0 map(spaces, xsmall) map(spaces, xsmall) 0; 14 | 15 | @supports (display: grid) { 16 | margin: 0; 17 | } 18 | } 19 | } 20 | 21 | .c-listing--authors { 22 | grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr)); 23 | 24 | > * { 25 | flex: 8rem 0 0; 26 | } 27 | } 28 | 29 | .c-listing--summaries { 30 | grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); 31 | 32 | > * { 33 | flex: 16em 1 0; 34 | } 35 | } 36 | 37 | .c-listing--inset { 38 | padding: map(spaces, xsmall) 0 0 map(spaces, xsmall); 39 | 40 | @supports (display: grid) { 41 | padding: map(spaces, xsmall); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/components/common/listing/listing.html: -------------------------------------------------------------------------------- 1 |{{ url }}
5 | 6 | -------------------------------------------------------------------------------- /src/components/common/search-form/search-form.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/components/common/section/section.config.yaml: -------------------------------------------------------------------------------- 1 | collated: true 2 | default: topic 3 | variants: 4 | - name: topic 5 | context: 6 | id: code 7 | title: "[Code](/topic/code/)" 8 | mods: [topic] 9 | icon: topic-code 10 | content: | 11 | Poetry? Not likely (though [Dan Cederholm wrote some doggerel](/2006/gravity-defying-page-corners/) back in 2006). Here are articles on hypertext markup language, its attributes and other minutiae; crafty ~~hacks~~ tips for your cascading style sheets; JavaScript legerdemain; and tinkering with application programming interfaces. 12 | - name: archive 13 | context: 14 | id: 2013 15 | title: "[2013](/2013/)" 16 | content: | 17 | Scourge of browser vendors everywhere, WaSP buzzed its last in March. Dave Shea's CSS Zen Garden celebrated its tenth anniversary in May, and Google Glass was released. Ever broad in its interests, 24 ways tamed Grunt, URLs and GitHub Pages, encouraged readers to write and publish books, and leavened all that with goodies on project management, web typography and SVG. 18 | - name: author 19 | context: 20 | id: author 21 | title: "About the author" 22 | content: | 23 | Drew McLellan is lead developer on your favourite content management systems, [Perch and Perch Runway](https://grabaperch.com/). He is Director and Senior Developer at edgeofmyseat.com in Bristol, England, and is formerly Group Lead at the Web Standards Project. When not publishing 24 ways, Drew keeps a [personal site](http://allinthehead.com/) covering web development issues and themes, [takes photos](https://flickr.com/drewm/), [tweets a lot](https://twitter.com/drewm) and tries to stay upright on his bicycle. 24 | 25 | Photo: [James Duncan Davidson](http://duncandavidson.com/) 26 | 27 | More articles by Drew 28 | - name: sponsor 29 | context: 30 | id: sponsor 31 | title: "Brought to you by" 32 | mods: [sponsor] 33 | component: promo 34 | - name: comments 35 | context: 36 | id: comments 37 | title: "2 Comments" 38 | content: | 39 | Comments are ordered by helpfulness, as indicated by you. Help us pick out the gems and discourage asshattery by voting on notable comments. 40 | 41 | Got something to add? Leave a comment below 42 | comments: 43 | - "@comment" 44 | - "@comment--unhelpful" 45 | - name: related 46 | context: 47 | id: related 48 | title: "Related articles" 49 | mods: [related] 50 | component: listing 51 | - name: authors 52 | context: 53 | id: a 54 | title: "A" 55 | component: listing--authors 56 | -------------------------------------------------------------------------------- /src/components/common/section/section.css: -------------------------------------------------------------------------------- 1 | .c-section { 2 | display: flex; 3 | flex-direction: column; 4 | justify-content: space-between; 5 | 6 | @media (--from-large-screen) { 7 | flex-direction: row; 8 | } 9 | } 10 | 11 | .c-section__header { 12 | padding: map(spaces, medium) map(spaces, large); 13 | 14 | @media (--from-large-screen) { 15 | flex: 1 0 20%; 16 | padding-right: 0; 17 | border-top: 1px solid $prose-color--rule; 18 | text-align: right; 19 | } 20 | 21 | @media print { 22 | border-top: 2px solid black; 23 | padding-bottom: 0; 24 | } 25 | } 26 | 27 | .c-section__title { 28 | @apply --typeset-ui; 29 | 30 | text-transform: uppercase; 31 | } 32 | 33 | .c-section__main { 34 | margin-bottom: map(spaces, large); 35 | padding: map(spaces, medium) map(spaces, large); 36 | border-top: 1px solid $prose-color--rule; 37 | 38 | @media (--from-large-screen) { 39 | flex: 1 0 75%; 40 | margin-left: 5%; 41 | padding-left: 0; 42 | } 43 | } 44 | 45 | /* Section - Sponsor */ 46 | .c-article .c-section--sponsor { 47 | @media (--from-large-screen) { 48 | flex-direction: column; 49 | position: absolute; 50 | top: 56rem; 51 | left: 0; 52 | width: 20%; 53 | padding: 0; 54 | 55 | .c-section__title { 56 | @apply --typeset-ui; 57 | } 58 | 59 | .c-section__main { 60 | padding-right: 0; 61 | border-top: 0; 62 | } 63 | 64 | .c-promo { 65 | @apply --typeset-caption; 66 | 67 | text-align: right; 68 | } 69 | } 70 | } 71 | 72 | /* Section - Topic */ 73 | .c-section--topic { 74 | .c-section__main { 75 | display: flex; 76 | flex-direction: row; 77 | } 78 | 79 | svg { 80 | flex-shrink: 0; 81 | width: map(sizes, xlarge); 82 | height: map(sizes, xlarge); 83 | margin: map(spaces, small) map(spaces, large) 0 0; 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /src/components/common/section/section.html: -------------------------------------------------------------------------------- 1 |{{ content | markdownInline | safe }}
21 |4 |6 |“{{ quote | markdownInline }}”
5 |
Rachel Andrew is a Director of edgeofmyseat.com, a UK web development consultancy and creators of the small content management system, Perch. She is the author of a number of books, and is a regular columnist for A List Apart.
4 | 5 | She curates a popular [email newsletter on CSS Layout](http://csslayout.news/), and will be launching a [CSS Layout online workshop](https://thecssworkshop.com/) in early 2016. 6 | 7 | When not writing about business and technology on her blog at [rachelandrew.co.uk](https://rachelandrew.co.uk) or [speaking at conferences](http://lanyrd.com/profile/rachelandrew/), you will usually find Rachel running up and down one of the giant hills in Bristol. 8 | 9 | Photo: [James Duncan Davidson](http://duncandavidson.com/) 10 | variants: 11 | - name: article 12 | context: 13 | mods: [article] 14 | content: | 15 |Video is a bigger part of the web experience than ever before. With native browser support for HTML5 video elements freeing us from the tyranny of plugins, and the availability of faster internet connections to the workplace, home and mobile networks, it’s now pretty straightforward to publish video in a way that can be consumed in all sorts of ways on all sorts of different web devices.
16 | 17 | I recently worked on a project where the client had shot some dedicated video shorts to publish on their site. They also had some five-second motion graphics produced to top and tail the videos with context and branding. This pretty common requirement is a great idea on the web, where a user might land at your video having followed a link and be viewing a page without much context. 18 | 19 |20 |23 | 24 | Known as _bumpers_, these short introduction clips help brand a video and make it look a lot more professional. 25 | 26 |[I]t appears probable that the progenitors of man, either the males or females or both sexes, before acquiring the power of expressing their mutual love in articulate language, endeavoured to charm each other with musical notes and rhythm.
21 | 22 |