# CSS Layout # --- ## This presentation answers three main questions ## 1. What is the **_box model_**? 2. How does the **_display property_** affect layout? 3. How does the **_position property_** affect layout? --- ## I. What is the **_box model_**? ## ---- When HTML elements (text, images, links etc) render in the browser, they each have their own box. ---- Box Model ![box model image](https://i.imgur.com/aMt3H8V.png =500x) ---- Content ![picture frames on a wall](https://i.pinimg.com/originals/e2/76/e7/e276e7bc0d85e46397ec12bad8bd4ca2.jpg =400x) Anything in the HTML tag (the pictures in frames) ---- Padding ![picture frames on a wall](https://i.pinimg.com/originals/e2/76/e7/e276e7bc0d85e46397ec12bad8bd4ca2.jpg =400x) The space around the content (the white space in between the pictures and the frame) Note: Specifying background colour to an element will also be applied to the padding area ---- Border ![picture frames on a wall](https://i.pinimg.com/originals/e2/76/e7/e276e7bc0d85e46397ec12bad8bd4ca2.jpg =400x) Can have different styles and thickness (the frames) ---- Margin ![picture frames on a wall](https://i.pinimg.com/originals/e2/76/e7/e276e7bc0d85e46397ec12bad8bd4ca2.jpg =400x) The space around the element (The spacing of the framed pictures) ---- Content size Vs Actual size ![picture only](https://i.imgur.com/sS5R5ep.jpg =180x) ![framed picture](https://i.imgur.com/ENkkSZ1.jpg =300x) Content size is affected by any heights/widths stated or pre existing. Actual size is content size plus padding and border size. ---- Box Sizing ![box sizing diagram](https://www.abeautifulsite.net/uploads/2014/08/border-box.png?width=600&key=f8a9e585a1a0d1bbbfdf9b107a10e36de3454f510562d55f077228e9c3af3c4e =500x) Using `box-sizing: border-box;` means the border and padding is included in the content size (yay!) makes life slightly easier :) ---- ![confused gif](https://media.giphy.com/media/26tP4gFBQewkLnMv6/giphy.gif) --- ## II. How does the **_display property_** affect layout? ## ---- - The value of the display property affects other how the element uses space. - Two basic values are _inline_ and _block_. ---- ### display: block; - Most elements are _block_ level elements by default: ```<p>```, ```<h1>```, ```<article>``` and ```<section>``` for example. - Block level elements take up the entire width of their parent container and always start on a new line. - _width_ and _height_ properties can be used to change to size of the element. ---- ### display: inline; - Some elements, such as ```<a>``` and ```<span>``` are _inline_ by default. - _inline_ elements will appear from left to right, and will only wrap onto a new line when there is no more space. - They will only take up as much space as their content. _height_ and _width_ properties will have **no effect!** - So what if we want to specify the size of our inline elements? ---- ![block vs inline image](https://blog.4psa.com/wp-content/uploads/block-inline1.png) ---- ### display: inline-block; - Makes elements appear inline. They will appear from left-to-right and wrap below when no more space. - **BUT** we can use _height_ and _width_ properties to change the size! ---- ![inline-block](https://samanthaming.gumlet.com/pictorials/css-inline-vs-inlineblock-vs-block-2.jpg.gz?format=auto) ---- ### How we can use this to write good HTML - We are not beholden to an HTML's default properties. - We do not have to choose elements based on these default properties. - We can use the most semantic element for the situation and change properties to suit us! ---- ### display: flex; - Flexbox opens up many new properties for both the parent element (the flex container) and the child elements (the flex items). - _flex_ elements, by default appear as _block_ level elements, however you can use _inline-flex_ to change this. - I usually think of _flex_ as creating a very distinct environment within the container. - You can change the flow-direction, wrapping, aligning and spacing of child elements, and much more. ---- ### display: grid; - Much like flex, opens up a whole lot of new tools for layout within the grid container. - Appears as a _block_ level element, however _inline-grid_ can be used to change this. ---- ![confused gif](https://media.giphy.com/media/l378hyTQvH3bCdD2g/giphy.gif) --- ## III. How does the **_position property_** affect layout? ## ---- The position property can be used to change the flow of the document. There are 5 different values: 1. static: the initial value, which means elements are not positioned. 2. relative 3. absolute 4. fixed 5. sticky ---- * Apart from static, the others values are positioned by arranging elements relative to its current position, its containing element, or the browser viewport. * For these values, we need to specify the **top**, **right**, **bottom** or **left** properties which indicate the placement of the positioned elements. ---- ## position: relative ## * What it really means is "relative to itself". * If you set an element's **position** to **relative** without specifying other positioning attributes (top, left, bottom or right), it will have no effect on its positioning (i.e. be the same as if you left it on **static** positioning). ---- ## position: absolute ## * Places any page element exactly where you want it by specifying the offset properties. ❗❗❗ using absolute positioning removes elements from the flow of the page ❗❗❗ <div style="width:100%;height:0;padding-bottom:75%;position:relative;"><iframe src="https://giphy.com/embed/S9XaGr8wQ9Jwk" width="50%" height="50%" style="position:absolute" style='margin:auto' frameBorder="0" class="giphy-embed" allowFullScreen></iframe></div><p><a href="https://giphy.com/gifs/austin-stuck-powers-S9XaGr8wQ9Jwk">via GIPHY</a></p> ---- ## position: fixed ## Fixed positioning is always positioned relative to the *viewport* and stays in the same spot even on page scroll. 💡💡💡 use this for a navigation bar or buttons which you want to remain visible at all times regardless of the pages scroll position 💡💡💡 ---- ## position: sticky ## * Using sticky positioning the element stays in the initial spot until you scroll the page. Then it becomes fixed when the value in the offset property has been met. Once you scroll past its containg element it will no longer be fixed. ❗❗❗ Still in draft phase: you can check on its status at https://caniuse.com/#feat=css-sticky ❗❗❗ <div style="width:100%;height:0;padding-bottom:73%;position:relative;"><iframe src="https://giphy.com/embed/10fFT7qzHrN0D6" width="50%" height="50%" style="position:absolute" frameBorder="0" class="giphy-embed" allowFullScreen></iframe></div><p><a href="https://giphy.com/gifs/vintage-comics-spider-man-10fFT7qzHrN0D6"></a></p> --- ## Get familiar with flexbox and grid ## ---- - [flexbox froggy](https://flexboxfroggy.com/) (a game for learning css flexbox) ![flexbox froggy image](https://flexboxfroggy.com/images/screenshot.png) ---- - [grid garden](https://cssgridgarden.com/) (a game for learning css grid) ![grid garden image](data:image/jpeg;base64,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1nZlANIdpzQfOdb/ALim/kf/AGK42NxKu7l4vzz3cbXHR/EPytb06DxfJrhHZWDVbIqooTd5wKsIKKsWq2RAKiqjFWckWAQCECVFVbcOAVnNFw1LCCoqHG7zgVlCCxVaqrZEBRWH/mZxH3WXJp0jh1dnbWLgAVjMjN159X2TcBOHtTN3Yu4673BQEBAQEBAQEBAQEBAQEBB871v+4pv5H/2K42NxKu7l4vzz3cbXHR/EPytb06DxfJrCdyu52C3cm4LdybgM2XeQVYsFu5TcFu5NwW7k3AJ3K7rBbuU3BbuTcFu5NwhswLrgrNribdym4LdybgM2XeQVYsFu5TcFu5NwW7k3DGOmZxH3VnJp0jh1dnbWLggVjMjN2IdVwiBgJiscY2ruOu9uUBAQEBAQEBAQEBAQEBAQfO9b/uKb+R/9iuNjcSru5eL8893G1x0fxD8rW9Og8XyYGquwIIUVBw84FWOaLQEBQQigV5IkoBUVCAy4cAspzRKghRUHDzgVYRYQgIqFBiHTM4j7q8mnSOHV2dtRwAKxmRm69UVfawmrvrRG6y1dx13uCgICAgICAgICAgICDBpjyGEiw2LRpFc0YczS2YVMVVWlqh1LEgzPDZK8fvMe14n8no1MPoyaHSuLy1xmBuvkbFt0bFrqrmmqeTXi0UxTEw8Rrf8AcU38j/7FeTG4lXdw8X557uNrjo/iH5Wt6dB4vk1wjsiAgEXecCrCCiiCQEFRirOSJUUQTCCrbhwCs5olRRAcLvOBWUILFRBIQYf+ZnEfdZcmnSOHV2dtYuABWMyHSldu8OteHuzSDaMwl4LwcoNozCXLwcoNozCXLwcoNozCXLwcoNozCXLwcoNozCXLwcoNozCXLwcoNozCXLwcoNozCXLwcoNozCXLwcoNozCXLwcoNozCXLwx04a5sVgO0LDFojEp1ZlnRXqzdrjRG9f6hebZKfE27R9GSgoWtJNabItIW3CwKcOb3YV42tFnhNbGdIpot/yP/sVzsXiVd3HxPnnu4+uOj+Ifla3p0Hi+TXCOysCFUVUVBw84FWOaJUVYkKoqoqAryRYIBQQoqG3DgFZzRcEIIKiqnDzgVYRKirSFUVUViHTM4j7q8mnSOHV2dtRwBBCBCWQhLBCWCEsEJYISwQlghLBCWCEsEJYISwQlghLBCWBFYNN0euyrMWyNiN2j4vuq9Zo83UvXbme5W7obfh9J9Puc3UvXbme5Lm34fSfT7nN1L125nuS5t+H0n0+5zdS9duZ7kubfh9J9Puc3UvXbme5Lm34fSfT7nN1L125nuS5t+H0n0+5zdS9duZ7kubfh9J9Puc3UvXbme5Lm34fSfT7nN1L125nuS5t+H0n0+5zdS9duZ7kubfh9J9Puc3UvXbme5Lm34fSfT7nN1L125nuS5t+H0n0+5zdS9duZ7kubfh9J9Puc3UvXbme5Lm34fSfT7nN1L125nuS5t+H0n0+5zdS9duZ7kubfh9J9Puc3UvXbme5Lm34fSfT7nN1L125nuS5t+H0n0+6+j6ucHhznAxbZJP1CXasbTaaqJppid7pqOcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg//2Q==)
{"metaMigratedAt":"2023-06-15T10:38:31.902Z","metaMigratedFrom":"YAML","title":"CSS Layout presentation","breaks":true,"slideOptions":"{\"transition\":\"fade\",\"spotlight\":{\"enabled\":true}}","contributors":"[{\"id\":\"5a08f6b7-226e-41c7-9fe6-b7ed876fa89a\",\"add\":10691,\"del\":605},{\"id\":\"9f7cba46-5bb5-40db-ab49-f44d5abb81f5\",\"add\":3409,\"del\":990},{\"id\":\"54b20be6-da49-4378-a738-063e13100e14\",\"add\":2148,\"del\":34},{\"id\":\"c7e01355-11fd-46f3-91d2-ef50d88b3e4a\",\"add\":2168,\"del\":635}]"}
    227 views