To display HTML markup correctly, browsers create a special copy of the markup and insert it in a "virtual window" called a viewport. This window is often wider than the screen of the current device. This is done to make sure that all the elements fit as intended. This effect can be seen if you access a non-adapted HTML page from a mobile device. In this case a horizontal scroll bar will appear.
This meta tag first appeared in Apple's Safari browser. Before mobile devices, the Safari browser defaulted to 980 pixels wide for all web pages, which meant that the first versions of the iPod and iPhone didn't display sites in their entirety, but only the first 320 pixels of width.
Now this problem can be solved by specifying the width of the site for devices. The most commonly used value is device-width
which sets the page width equal to the screen width of the device.
<head>
<meta name="viewport" content="width=device-width">
</head>
This value tells the browser that the width of the page is equal to the width of the device from which the page is viewed.
You may find it complicated now, but as you learn CSS, you'll get to fully understand the meaning of viewport
. For now, it's important to know about this meta tag and its main uses
Note that parameters are specified inside the content
attribute, where properties are separated by a comma.
width
— the width of the site. Given in pixels. It's possible to use the device-width
value to set the page width as equal to the device width.height
— the height of the site. Given in pixels. It's possible to use the device-height
value to set the page height as equal to the device height.initial-scale
— the initial scaling factor. It can take a value from 0.1 to 10. A value of 1 scales the page by default.user-scalable
— specifies whether the user can scale the page, that is, zoom in or out. It accepts yes
and no
Specify a viewport with the following characteristics:
To do this, create a meta tag and specify the width. This is done with the width
value:
<meta name="viewport" content="width=980">
The initial-scale
should be set to 1.0
. It means that the page will be displayed without any distortion, with the font sizes and other elements that were set by developers.
<meta name="viewport" content="width=980, initial-scale=1.0">
The last thing to do is to create a "ban" on scaling. To do this, add user-scalable
with the value no
<meta name="viewport" content="width=980, initial-scale=1.0, user-scalable=no">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Add a viewport meta tag with a screen width of 1024 and no user scalability
If you've reached a deadlock it's time to ask your question in the «Discussions». How ask a question correctly:
Tests are designed so that they test the solution in different ways and against different data. Often the solution works with one kind of input data but doesn't work with others. Check the «Tests» tab to figure this out, you can find hints at the error output.
It's fine. 🙆 One task in programming can be solved in many different ways. If your code passed all tests, it complies with the task conditions.
In some rare cases, the solution may be adjusted to the tests, but this can be seen immediately.
It's hard to make educational materials that will suit everyone. We do our best but there is always something to improve. If you see a material that is not clear to you, describe the problem in “Discussions”. It will be great if you'll write unclear points in the question form. Usually, we need a few days for corrections.
By the way, you can participate in courses improvement. There is a link below to the lessons course code which you can edit right in your browser.
Your exercise will be checked with these tests:
1const { test } = require('tests');
2
3test(({ query, expect }) => {
4 const metaViewport = query(document, 'meta[name="viewport"]');
5
6 expect(metaViewport).to.have.attr('content', 'width=1024, user-scalable=no');
7});
8
Teacher's solution will be available in: