Yanhong Wu
2015.12.04
HTML
CSS
JavaScript
Content
Style
Logic
<div>
<h1>CSS</h1>
</div>
h1 {
color: purple;
font-size: 20px;
}
/**
selector {
// description
property1: value1;
property2: value2;
}
**/
HTML
CSS
Result
4 regions: content, padding, border, and margin
<div id="container">
<div id="content">
Content
</div>
</div>
#container {
margin: 50px;
padding: 50px;
border: 50px solid lightblue;
}
#content {
color: black;
background: orange;
}
margin
border
padding
<div id="container">
<div id="block1">
Block1
</div>
<div id="block2">
Block2
</div>
</div>
#block1, #block2 {
margin: 20px auto;
height: 100px;
width: 200px;
}
#block1 {
background: blue;
}
#block2 {
background: orange;
padding: 20px;
border: 10px solid;
}
Element width issue
<div id="container">
<div id="block1">
Block1
</div>
<div id="block2">
Block2
</div>
</div>
#block1, #block2 {
margin: 20px auto;
height: 100px;
width: 200px;
}
#block1 {
box-sizing: border-box;
}
#block2 {
box-sizing: border-box;
padding: 20px;
border: 10px solid;
}
box-sizing: border-box (CSS 3)
Display: block
Display: inline
Display: inline-block
span {
height: 50px;
display: block;
}
span {
height: 50px;
}
span {
height: 50px;
display: inline-block
}
Layout: block formatting context
Layout: inline formatting context
#block1 {background: blue; margin: 20px;}
#block2 {background: orange; margin: 20px;}
#block3 {background: green; margin: 20px;}
#block1 {... display: inline;}
#block2 {... display: inline;}
#block3 {... display: inline;}
Position: static / relative /Â
absolute / fixed
span {
float: left;
width: 120px;
height: 120px;
margin-left: 10px;
background: orange;
}
#block-box1 {
background: blue;
}
#block-box2 {
background: green;
}
Surrounding inline boxes
Overlapping block boxes
span {
float: right;
width: 120px;
height: 120px;
margin-left: 10px;
background: orange;
}
#block-box1 {
background: blue;
clear: left;
}
#block-box2 {
background: green;
clear: right;
}
static / relative /
absolute / fixed
#container {position: relative;}
#block1 {background: blue; margin: 20px;}
#block2 {
position: absolute;
left: 100px;
top: 100px;
background: orange;
}
#block3 {background: green; margin: 20px;}
#container {position: relative;}
#block1 {background: blue; margin: 20px;}
#block2 {
position: fixed;
right: 100px;
top: 100px;
background: orange;
}
#block3 {background: green; margin: 20px;}
#container {position: relative;}
#block1, #block2, #block3 {
position: relative;
height: 100px;
width: 100px;
}
#block1 {
top: 0px; z-index: 1;
}
#block2 {
top: 25px; z-index: 999;
}
#block3 {
top: 50px; z-index: 1;
}
<div id="container">
<div id="block1">
<div id="block2">
</div>
</div>
<div id="block3">
</div>
</div>
z-index works for elements in the same level
#container {position: relative;}
#block1, #block2, #block3 {
position: relative;
height: 100px;
width: 100px;
}
#block1 {
top: 0px; z-index: auto;
}
#block2 {
top: 25px; z-index: 999;
}
#block3 {
top: 50px; z-index: 1;
}
<div id="container">
<div id="block1">
<div id="block2">
</div>
</div>
<div id="block3">
</div>
</div>
Elements with "auto" z-index keeps the same stack level with its parent (except IE 6 /Â 7)
Arrange a line chart, a bar chart, and a scatter plot in a row
Line Chart
Bar Chart
Scatter Plot
Arrange a line chart, a bar chart, and a scatter plot in a row
Sample codes from
a project of our group:
div#left {
display: inline-block;
width: 40%;
float: left;
//...
}
<div>
<div id="bar-chart">
</div>
<div id="line-chart">
</div>
<div id="scatter-plot">
</div>
</div>
#bar-chart,
#line-chart,
#scatter-plot {
display: inline-block;
width: 30%;
height: 100px;
}
Normal Flow
<div>
<div id="bar-chart">
</div>
<div id="line-chart">
</div>
<div id="scatter-plot">
</div>
</div>
#bar-chart,
#line-chart,
#scatter-plot {
float: left;
margin-left: 10px;
width: 30%;
height: 100px;
}
Floats
<div id="container">
<div id="bar-chart">
</div>
<div id="line-chart">
</div>
<div id="scatter-plot">
</div>
</div>
#container {position: relative;}
#bar-chart,
#line-chart,
#scatter-plot {
position: absolute;
width: 30%;
height: 100px;
}
#bar-chart {left: 10px;}
#line-chart {left: 114px;}
#scatter-plot {left: 218px;}
Absolute Position
Floats, absolutely positioned elements, block containers (such as inline-blocks, table-cells, and table-captions) that are not block boxes, and block boxes with ‘overflow’ other than ‘visible’ (except when that value has been propagated to the viewport) establish new block formatting contexts for their contents.
​IE7: hasLayout (triggered by
zoom: 1")
A separate "sandbox" -Â Benefits
No margin collapsing
#block1,
#block2,
#block3 {
margin: 20px;
}
#newBFC {
overflow: hidden;
}
<div>
<div id="block1">
Block1
</div>
<div id="block2">
Block2
</div>
<div id="newBFC">
<div id="block3">
Block3
</div>
</div>
</div>
Include float boxes when calculating height
#block2: {float: left;}
#block3: {float: right;}
<div>
<div id="block1">
<div id="block2">
Block2
</div>
<div id="block3">
Block3
</div>
</div>
</div>
Include float boxes when calculating height
#block1: {overflow: hidden;}
#block2: {float: left;}
#block3: {float: right;}
<div>
<div id="block1">
<div id="block2">
Block2
</div>
<div id="block3">
Block3
</div>
</div>
</div>
Do not overlap with float boxes
span {
float: left;
width: 120px;
height: 120px;
margin-left: 10px;
background: orange;
}
#text-container {
overflow: hidden;
}
<div>
<span>
float box
</span>
<div id="float-container">
Lorem ipsum dolo...
</div>
</div>