--- id: 61437d575fb98f57fa8f7f36 title: Step 1 challengeType: 0 dashedName: step-1 --- # --description-- Begin with your standard HTML boilerplate. Add a `DOCTYPE` declaration, an `html` element, a `head` element, and a `body` element. Add a `meta` tag with the appropriate `charset` and a `meta` tag for mobile responsiveness within the `head` element. # --hints-- Your code should contain the `DOCTYPE` reference. ```js assert(code.match(/` after the type. ```js assert(code.match(//gi)); ``` Your `html` element should have an opening tag. ```js assert(code.match(//gi)); ``` Your `html` element should have a closing tag. ```js assert(code.match(/<\/html\s*>/)); ``` Your `DOCTYPE` declaration should be at the beginning of your HTML. ```js assert(__helpers.removeHtmlComments(code).match(/^\s*/i)); ``` You should have an opening `head` tag. ```js assert(code.match(//i)); ``` You should have a closing `head` tag. ```js assert(code.match(/<\/head\s*>/i)); ``` You should have an opening `body` tag. ```js assert(code.match(//i)); ``` You should have a closing `body` tag. ```js assert(code.match(/<\/body\s*>/i)); ``` The `head` and `body` elements should be siblings. ```js assert(document.querySelector('head')?.nextElementSibling?.localName === 'body'); ``` The `head` element should be within the `html` element. ```js assert([...document.querySelector('html')?.children].some(x => x?.localName === 'head')); ``` The `body` element should be within the `html` element. ```js assert([...document.querySelector('html')?.children].some(x => x?.localName === 'body')); ``` You should have two `meta` elements. ```js const meta = document.querySelectorAll('meta'); assert(meta?.length === 2); ``` One `meta` element should have a `name` set to `viewport`, and `content` set to `width=device-width, initial-scale=1.0`. ```js const meta = [...document.querySelectorAll('meta')]; const target = meta?.find(m => m?.getAttribute('name') === 'viewport' && m?.getAttribute('content') === 'width=device-width, initial-scale=1.0' && !m?.getAttribute('charset')); assert.exists(target); ``` The other `meta` element should have the `charset` attribute set to `UTF-8`. ```js const meta = [...document.querySelectorAll('meta')]; const target = meta?.find(m => !m?.getAttribute('name') && !m?.getAttribute('content') && m?.getAttribute('charset')?.toLowerCase() === 'utf-8'); assert.exists(target); ``` # --seed-- ## --seed-contents-- ```html --fcc-editable-region-- --fcc-editable-region-- ``` ```css ```