Slides
Responsive Layout
- "Responsive" means that the layout changes and responds based on the width of the screen
- This allows for specific layouts for mobile phones, tablets, screen readers, and more
- Layouts can be redered conditionally based on:
- Screen size
- Pixel density
- Screen orientation
- Height/Width Ratio i.e. 11:9
Question: Why might this be important?*
What is Responsive Development?
- Responsive development is a technique that displays content well regardless of the device it is being viewed on
- This concept is increasingly important, not all users are desktop browsers
- In 2017 and 2018 more than 50% of web traffic was from mobile devices
Responsive Layout: Media Queries
- CSS3 introduced media queries, which allow developers to apply CSS properties to devices which match rules
- Media queries are the backbone of front-end responsive development with HTML and CSS
- Applying CSS to specific screen widths allows for changing the layout and styles based on the size of a device
Mobile Device Simulator
Using Media Queries
- Media Queries (
@media (some_condition) { }
) cause different CSS rules to be applied on different screens
Example
This will make our .nav
element position relative when the media type is print
// Default position layout
.nav {
position: absolute;
}
// Print media only layout
@media print {
.nav {
position: relative;
}
}
Media Features
Each feature is a characteristic of the user-agent
Query | Description |
---|---|
width | the width of the viewport |
all | TRUE if the device responds to media queries |
resolution | Pixel density of the output device |
color | Number of bits per color component of the device |
pointer | Is the primary input mechanism a pointing device |
hover | Does the primary input mechanism allow the user to hover |
Media Query Conditionals - AND
Only change the layout to position: relative;
when
- The media is
screen
- AND
- The screen width is greater than or equal to 768 pixels
@media screen and (min-width:768px) {
.nav {
position: relative;
}
}
Media Query Conditionals - OR
NOTE: OR is the ,
(comma) in a Media Query
Only change the layout to position: relative;
when
- The media is
screen
- OR
- The screen width is greater than or equal to 768 pixels
@media screen, (min-width:768px) {
.nav {
position: relative;
}
}
Mobile-First Development
- Developing mobile first means to start styling out your web page for a mobile device, and then modify the layout for a desktop browser
- The result of this is modifying your CSS as screen sizes increase, rather than modifying your CSS as screen sizes decrease
- In other words, your media queries will be written for minimum widths, not maximum widths
- Tip: You can also set media queries in-between two screen sizes