SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
8.
Box Alignment defines how
these properties work in
other layout methods.
9.
The box alignment properties in CSS are a set of 6 properties
that control alignment of boxes within other boxes.
CSS BOX ALIGNMENT LEVEL 3
https://drafts.csswg.org/css-align/
14.
“Unlike Flexbox, however, which is single-axis–oriented, Grid
Layout is optimized for 2-dimensional layouts: those in which
alignment of content is desired in both dimensions.”
CSS GRID LAYOUT
https://drafts.csswg.org/css-grid/
17.
.cards {
display:flex;
flex-wrap: wrap;
}
.card {
flex: 1 1 250px;
margin: 5px;
}
Flexbox
Flexbox can wrap flex items onto
multiple rows.
A new row becomes a new flex
container for the purposes of
distributing space.
19.
.cards {
display:grid;
grid-template-columns:
repeat(auto-fill, minmax(200px,1fr));
grid-gap: 10px;
}
CSS Grid Layout
Create as many columns as will fit
into the container with a minimum
width of 200px, and a maximum of
1fr.
24.
<ul class="colors">
<li style="background-
color:#FFFFFF;color:black"
class="white">FFF FFF
</li>
<li style="background-
color:#CCCCCC;color:black">CCC CCC
</li>
<li style="background-
color:#999999;color:black"
class="span3">999 999
</li>
</ul>
Grid auto-placement
I have a list with all ye olde web safe
colours in it.
25.
.colors {
display: grid;
grid-template-columns:
repeat(auto-fill,minmax(80px, 1fr));
grid-gap: 2px;
grid-auto-rows: minmax(80px, auto);
}
Grid auto-placement
I auto-fill columns and rows with
minmax()
31.
The element itself does not generate any boxes, but its children
and pseudo-elements still generate boxes as normal. For the
purposes of box generation and layout, the element must be
treated as if it had been replaced with its children and pseudo-
elements in the document tree.
DISPLAY: CONTENTS
https://drafts.csswg.org/css-display/#box-generation
32.
allow indirect children to
become flex or grid items
33.
<div class="wrapper">
<h1></h1>
<p></p>
<blockquote class="inset"></blockquote>
<p></p>
<ul class="images">
<li></li>
<li></li>
</ul>
<p></p>
</div>
display: contents
All elements are direct children of
‘wrapper’ except for the li elements.
34.
.wrapper {
max-width: 700px;
margin: 40px auto;
display: grid;
grid-column-gap: 30px;
grid-template-columns:1fr 1fr;
}
.wrapper h1, .wrapper p {
grid-column: 1 / -1;
}
.inset {
grid-column: 1 ;
font: 1.4em/1.3 'Lora', serif;
padding: 0;
margin: 0;
}
.inset + p {
grid-column: 2;
}
display: contents
A two column grid. The h1, p and
blockquote with a class of inset are
all direct children.
36.
.images {
display: contents;
}
display: contents
The ul has a class of images. By
applying display: contents the ul is
removed and the li elements become
direct children.
40.
CSS Shapes describe geometric shapes for use in CSS. For Level
1, CSS Shapes can be applied to floats. A circle shape on a float
will cause inline content to wrap around the circle shape
instead of the float’s bounding box.
CSS SHAPES
https://drafts.csswg.org/css-shapes/
41.
.balloon {
float: left;
width: 429px;
shape-outside: circle(50%);
}
<div class="box">
<img class="balloon" src="round-
balloon.png" alt="balloon">
<p>...</p>
</div>
CSS Shapes
A simple shape using the
shape-outside property
45.
.balloon {
float: right;
width: 640px;
height: 427px;
shape-outside: ellipse(33% 50% at
460px);
-webkit-clip-path: ellipse(28% 50% at
460px);
clip-path: ellipse(28% 50% at 460px);
}
CSS Shapes
Using clip-path to cut away part of an
image
49.
The ‘@supports’ rule is a conditional group rule whose
condition tests whether the user agent supports CSS
property:value pairs.
FEATURE QUERIES
https://www.w3.org/TR/css3-conditional/#at-supports
51.
Anything new in CSS you
can use feature queries to
detect support.
52.
@supports (display: grid) {
.has-grid {
/* CSS for grid browsers here */
}
}
Feature Queries
Checking for support of Grid Layout
53.
@supports ((display: grid) and (shape-
outside: circle())) {
.has-grid-shapes {
/* CSS for these excellent browsers
here */
}
}
Feature Queries
Test for more than one thing
54.
Using Feature Queries
▸ Write CSS for browsers without support
▸ Override those properties inside the feature queries
▸ See https://hacks.mozilla.org/2016/08/using-feature-queries-in-css/
55.
.balloon {
border: 1px solid #999;
padding: 2px;
}
@supports ((shape-outside: ellipse()) and
((clip-path: ellipse()) or (-webkit-clip-
path:ellipse()))) {
.balloon {
border: none;
padding: 0;
float: right;
width: 640px;
min-width: 640px;
height: 427px;
shape-outside: ellipse(33% 50% at 460px);
-webkit-clip-path: ellipse(28% 50% at
460px);
clip-path: ellipse(28% 50% at 460px);
}
}
Feature Queries
Write CSS for browsers without
support, override that and add new
CSS inside the feature query.
60.
Large, decorative letters have been used to start new sections
of text since before the invention of printing. In fact, their use
predates lowercase letters entirely.
This [initial-letter] property specifies styling for dropped, raised,
and sunken initial letters.
INITIAL LETTER
https://drafts.csswg.org/css-inline/#initial-letter-styling
61.
h1+p::first-letter {
initial-letter: 4 3;
}
Initial Letter
Make the initial letter four lines tall,
one line above the content and 3 into
the content.
75.
This module introduces a family of custom author-defined
properties known collectively as custom properties, which allow
an author to assign arbitrary values to a property with an
author-chosen name, and the var() function, which allow an
author to then use those values in other properties elsewhere in
the document.
CSS CUSTOM PROPERTIES (CSS VARIABLES)
https://drafts.csswg.org/css-variables/
76.
:root {
--primary: blue;
--secondary: orange;
}
h1 {
color: var(--primary);
}
Custom Properties
Define variables then use them in
CSS
77.
:root {
--primary: blue;
--secondary: orange;
}
@supports (--primary: blue) {
h1 {
color: var(--primary);
}
h2 {
color: var(--secondary);
}
}
Custom Properties
Can be tested for using feature
queries
82.
<div class="wrapper">
<div class="box box1">
<p>…</p>
<div>height is defined by the flex
container.</div>
</div>
<div class="box box2">
<div>height is 140px</div>
</div>
<div class="box box3">
<div>height is 14em</div>
</div>
</div>
calc()
Three boxes, each with a div nested
inside.
83.
.box2 {
height: 140px;
}
.box3 {
height: 14em;
transition: height 0.5s ease;
}
.box3:hover {
height: 30em;
}
calc()
Two of the outer boxes have a height,
box1 is the height of the content
inside.
Box3 will grow on hover.
84.
.box > div {
color: #fff;
border-radius: 5px;
position: absolute;
bottom: 20px;
right: 20px;
width: 30%;
height: calc(50% - 20px);
}
calc()
In the CSS for the inner box, we
calculate the height as 50% - 20px.
88.
A stickily positioned box is positioned similarly to a relatively
positioned box, but the offset is computed with reference to
the nearest ancestor with a scrolling box, or the viewport if no
ancestor has a scrolling box.
POSITION: STICKY
https://drafts.csswg.org/css-position/#sticky-pos
89.
<dl class="authors">
<dt>A</dt>
<dd>John Allsopp</dd>
<dd>Rachel Andrew</dd>
<dt>B</dt>
<dd>. . .</dd>
</dl>
position: sticky
A dl with dt elements followed by
multiple dd elements.
90.
.authors dt {
position: sticky;
top: 0;
}
position: sticky
Applying position: sticky to the dt