Responsive Layout
@media queries can be used to check:
- width and height of viewport
- width and height device
- orientation - landscape or portrait
- resolution
<!DOCTYPE html> <html> <head> <title>css grid</title> <link rel="stylesheet" type="text/css" href="responsivelayout.css"> </head> <body> <div id="layout"> <div id="top">header</div> <div id="left">left column</div> <div id="middle"> main<br> content<br> area<br> </div> <div id="right">right column</div> <div id="bottom">Copyright © Symbol</div> </div> </body> </html>
responsivelayout.css
#layout{ display: grid; grid-template-areas: 'top top top top' 'left middle middle right' 'bottom bottom bottom bottom'; width: 80vw; /* 80% of viewport width */ margin: 0 auto; /* centres the element */ } /*-----------------------------------------------------------------*/ /* Stack the grid areas if the screen width is smaller than 640px: */ @media screen and (max-width: 640px) { #layout{ display: grid; grid-template-areas: 'top' 'left' 'middle' 'right' 'bottom'; } } /*-----------------------------------------------------------------*/ #top{ background-color: thistle; grid-area: top; } #left{ background-color: tomato; grid-area: left; min-width: 25vw; } #middle{ background-color: forestgreen; grid-area: middle; } #right{ background-color: bisque; grid-area: right; } #bottom{ background-color: deeppink; grid-area: bottom; }When a query is run a specific style sheet can be delivered to desktops, laptops, tablets or mobiles (hence the term responsive web design). @media types can also alter styles for printing or screen readers.