466 lines
10 KiB
CSS
466 lines
10 KiB
CSS
|
/*
|
||
|
A common approach is to use googleapis.com to generate css for the webfonts you want to use.
|
||
|
The downside of this approach is that you have to be online. So below I have simply saved
|
||
|
the output of the googleapis url into a file. Then you of course also have to make sure
|
||
|
the webfonts are locally installed to make offline usage work. For Ubuntu (or Debian) I
|
||
|
successfully used the script from here to do that:
|
||
|
http://www.webupd8.org/2011/01/automatically-install-all-google-web.html
|
||
|
*/
|
||
|
|
||
|
/* @import url(http://fonts.googleapis.com/css?family=Open+Sans:regular,semibold,italic,italicsemibold|PT+Sans:400,700,400italic,700italic|PT+Serif:400,700,400italic,700italic|Cutive+Mono); */
|
||
|
@import url(fonts.css);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
We display a fallback message for users with browsers that don't support
|
||
|
all the features required by it. All of the content will be still fully
|
||
|
accessible for them, but some more advanced effects would be missing.
|
||
|
When impress.js detects that browser supports all necessary CSS3 features,
|
||
|
the fallback-message style is hidden.
|
||
|
*/
|
||
|
|
||
|
.fallback-message {
|
||
|
font-family: sans-serif;
|
||
|
line-height: 1.3;
|
||
|
|
||
|
width: 780px;
|
||
|
padding: 10px 10px 0;
|
||
|
margin: 20px auto;
|
||
|
|
||
|
border: 1px solid #E4C652;
|
||
|
border-radius: 10px;
|
||
|
background: #EEDC94;
|
||
|
}
|
||
|
|
||
|
.fallback-message p {
|
||
|
margin-bottom: 10px;
|
||
|
}
|
||
|
|
||
|
.impress-supported .fallback-message {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
The body background is the bacgkround of "everything". Many
|
||
|
impress.js tools call it the "surface". It could also be a
|
||
|
picture or pattern, but we leave it as light gray.
|
||
|
*/
|
||
|
|
||
|
body {
|
||
|
font-family: 'PT Sans', sans-serif;
|
||
|
min-height: 740px;
|
||
|
|
||
|
background: rgb(215, 215, 215);
|
||
|
color: rgb(102, 102, 102);
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
Now let's style the presentation steps.
|
||
|
*/
|
||
|
|
||
|
.step {
|
||
|
position: relative;
|
||
|
width: 900px;
|
||
|
padding: 40px;
|
||
|
margin: 20px auto;
|
||
|
|
||
|
box-sizing: border-box;
|
||
|
|
||
|
font-family: 'PT Serif', georgia, serif;
|
||
|
font-size: 48px;
|
||
|
line-height: 1.5;
|
||
|
}
|
||
|
/*
|
||
|
Make inactive steps a little bit transparent.
|
||
|
*/
|
||
|
.impress-enabled .step {
|
||
|
margin: 0;
|
||
|
opacity: 0.3;
|
||
|
transition: opacity 1s;
|
||
|
}
|
||
|
|
||
|
.impress-enabled .step.active { opacity: 1 }
|
||
|
|
||
|
/*
|
||
|
Speaker notes allow you to write comments within the steps, that will not
|
||
|
be displayed as part of the presentation. However, they will be picked up
|
||
|
and displayed by impressConsole.js when integrated.
|
||
|
*/
|
||
|
|
||
|
.notes {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
These 'slide' step styles were heavily inspired by HTML5 Slides:
|
||
|
http://html5slides.googlecode.com/svn/trunk/styles.css
|
||
|
|
||
|
Note that we also use a background image, again just to facilitate a common
|
||
|
feature from PowerPoint and LibreOffice worlds. In this case the background
|
||
|
image is just the impress.js favicon - as if it were a company logo or something.
|
||
|
|
||
|
*/
|
||
|
.slide {
|
||
|
display: block;
|
||
|
|
||
|
width: 900px;
|
||
|
height: 700px;
|
||
|
padding: 40px 60px;
|
||
|
|
||
|
background-image: url(../images/background.png);
|
||
|
background-color: white;
|
||
|
border: 1px solid rgba(0, 0, 0, .3);
|
||
|
border-radius: 10px;
|
||
|
box-shadow: 0 2px 6px rgba(0, 0, 0, .1);
|
||
|
|
||
|
text-shadow: 0 2px 2px rgba(0, 0, 0, .1);
|
||
|
|
||
|
font-family: 'Open Sans', Arial, sans-serif;
|
||
|
font-size: 30px;
|
||
|
letter-spacing: -1px;
|
||
|
}
|
||
|
|
||
|
|
||
|
.slide h1,
|
||
|
.slide h2,
|
||
|
.slide h3 {
|
||
|
margin-bottom: 0.5em;
|
||
|
margin-top: 0.5em;
|
||
|
text-align: center;
|
||
|
}
|
||
|
|
||
|
.slide p {
|
||
|
text-align: center;
|
||
|
margin: 0.7em;
|
||
|
}
|
||
|
|
||
|
.slide li {
|
||
|
margin: 0.2em;
|
||
|
}
|
||
|
|
||
|
/* Highlight.js used for coloring pre > code blocks. */
|
||
|
.slide pre > code {
|
||
|
font-size: 14px;
|
||
|
text-shadow: 0 0 0 rgba(0, 0, 0, 0);
|
||
|
}
|
||
|
|
||
|
/* Inline code, no Highlight.js */
|
||
|
code {
|
||
|
font-family: "Cutive mono","Courier New", monospace;
|
||
|
}
|
||
|
|
||
|
|
||
|
a {
|
||
|
color: inherit;
|
||
|
text-decoration: none;
|
||
|
padding: 0 0.1em;
|
||
|
background: rgba(200,200,200,0.2);
|
||
|
text-shadow: -1px 1px 2px rgba(100,100,100,0.9);
|
||
|
border-radius: 0.2em;
|
||
|
border-bottom: 1px solid rgba(100,100,100,0.2);
|
||
|
border-left: 1px solid rgba(100,100,100,0.2);
|
||
|
|
||
|
transition: 0.5s;
|
||
|
}
|
||
|
a:hover,
|
||
|
a:focus {
|
||
|
background: rgba(200,200,200,1);
|
||
|
text-shadow: -1px 1px 2px rgba(100,100,100,0.5);
|
||
|
}
|
||
|
|
||
|
blockquote {
|
||
|
font-family: 'PT Serif';
|
||
|
font-style: italic;
|
||
|
font-weight: 400;
|
||
|
}
|
||
|
|
||
|
em {
|
||
|
text-shadow: 0 2px 2px rgba(0, 0, 0, .3);
|
||
|
}
|
||
|
|
||
|
strong {
|
||
|
text-shadow: -1px 1px 2px rgba(100,100,100,0.5);
|
||
|
}
|
||
|
|
||
|
q {
|
||
|
font-family: 'PT Serif';
|
||
|
font-style: italic;
|
||
|
font-weight: 400;
|
||
|
text-shadow: 0 2px 2px rgba(0, 0, 0, .3);
|
||
|
}
|
||
|
|
||
|
strike {
|
||
|
opacity: 0.7;
|
||
|
}
|
||
|
|
||
|
small {
|
||
|
font-size: 0.4em;
|
||
|
}
|
||
|
|
||
|
img {
|
||
|
width: 300px
|
||
|
}
|
||
|
|
||
|
.slide .right {
|
||
|
float: right;
|
||
|
margin-left: 40px;
|
||
|
margin-right: 0px;
|
||
|
margin-top: 20px;
|
||
|
margin-bottom: 20px;
|
||
|
}
|
||
|
.slide .left {
|
||
|
float: left;
|
||
|
margin-right: 40px;
|
||
|
margin-left: 0px;
|
||
|
margin-top: 20px;
|
||
|
margin-bottom: 20px;
|
||
|
}
|
||
|
.slide .top {
|
||
|
position: absolute;
|
||
|
top: 20px;
|
||
|
margin-bottom: 20px;
|
||
|
margin-top: 0px;
|
||
|
}
|
||
|
.slide .bottom {
|
||
|
position: absolute;
|
||
|
bottom: 20px;
|
||
|
margin-bottom: 0px;
|
||
|
margin-top: 20px;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
Specific styles for: .title slides
|
||
|
*/
|
||
|
|
||
|
.title {
|
||
|
background-image: url(../images/background-title.png);
|
||
|
}
|
||
|
|
||
|
.title h1,
|
||
|
.title h2,
|
||
|
.title h3 {
|
||
|
position: absolute;
|
||
|
left: 45px; /* slide width is 900px, so this is like a 5% margin on both sides */
|
||
|
width: 90%;
|
||
|
text-align: center;
|
||
|
}
|
||
|
.title h1 { top: 50px; }
|
||
|
.title h2 { top: 400px; }
|
||
|
.title h3 { top: 500px; }
|
||
|
|
||
|
|
||
|
|
||
|
/* Styles for animating the contents of a slide, such as a img, p, li or span element. ********/
|
||
|
|
||
|
/*
|
||
|
fly-in class starts from a position outside the slide, then flies into it's correct position.
|
||
|
*/
|
||
|
.future .fly-in {
|
||
|
transform: translateY(-700px);
|
||
|
opacity: 0.0; /* Make it invisible, just so it doesn't clutter some other slide that might be in the position where we moved it */
|
||
|
}
|
||
|
.present .fly-in {
|
||
|
transform: translateY(0px);
|
||
|
opacity: 1.0;
|
||
|
transition: 2s;
|
||
|
}
|
||
|
.past .fly-out {
|
||
|
transform: translateY(700px);
|
||
|
opacity: 0.0;
|
||
|
transition: 2s;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
Fade-in/out is a straightforward fade. Give it enough seconds that all browsers render it clearly.
|
||
|
*/
|
||
|
.future .fade-in {
|
||
|
opacity: 0.0;
|
||
|
}
|
||
|
.present .fade-in {
|
||
|
opacity: 1.0;
|
||
|
transition: 3s;
|
||
|
}
|
||
|
.past .fade-out {
|
||
|
opacity: 0.0;
|
||
|
transition: 3s;
|
||
|
}
|
||
|
/*
|
||
|
Zoom-in.
|
||
|
*/
|
||
|
.future .zoom-in {
|
||
|
transform: scale(10);
|
||
|
opacity: 0.0;
|
||
|
}
|
||
|
.present .zoom-in {
|
||
|
transform: scale(1);
|
||
|
opacity: 1.0;
|
||
|
transition: 3s;
|
||
|
}
|
||
|
.past .zoom-out {
|
||
|
transform: scale(10);
|
||
|
opacity: 0.0;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
This version of impress.js supports plugins, and in particular, a UI toolbar
|
||
|
plugin that allows easy navigation between steps and autoplay.
|
||
|
*/
|
||
|
.impress-enabled div#impress-toolbar {
|
||
|
position: fixed;
|
||
|
right: 1px;
|
||
|
bottom: 1px;
|
||
|
opacity: 0.6;
|
||
|
z-index: 10;
|
||
|
}
|
||
|
.impress-enabled div#impress-toolbar > span {
|
||
|
margin-right: 10px;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
With help from the mouse-timeout plugin, we can hide the toolbar and
|
||
|
have it show only when you move/click/touch the mouse.
|
||
|
*/
|
||
|
body.impress-mouse-timeout div#impress-toolbar {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
In fact, we can hide the mouse cursor itself too, when mouse isn't used.
|
||
|
*/
|
||
|
body.impress-mouse-timeout {
|
||
|
cursor: none;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/* Progress bar */
|
||
|
.impress-progressbar {
|
||
|
position: absolute;
|
||
|
right: 118px;
|
||
|
bottom: 1px;
|
||
|
left: 118px;
|
||
|
border-radius: 7px;
|
||
|
border: 2px solid rgba(100, 100, 100, 0.2);
|
||
|
}
|
||
|
.impress-progressbar DIV {
|
||
|
width: 0;
|
||
|
height: 2px;
|
||
|
border-radius: 5px;
|
||
|
background: rgba(75, 75, 75, 0.4);
|
||
|
transition: width 1s linear;
|
||
|
}
|
||
|
.impress-progress {
|
||
|
position: absolute;
|
||
|
left: 59px;
|
||
|
bottom: 1px;
|
||
|
text-align: left;
|
||
|
font-size: 10pt;
|
||
|
opacity: 0.6;
|
||
|
}
|
||
|
|
||
|
/* Help popup plugin */
|
||
|
.impress-enabled #impress-help {
|
||
|
background: none repeat scroll 0 0 rgba(0, 0, 0, 0.5);
|
||
|
color: #EEEEEE;
|
||
|
font-size: 80%;
|
||
|
position: fixed;
|
||
|
left: 2em;
|
||
|
bottom: 2em;
|
||
|
width: 24em;
|
||
|
border-radius: 1em;
|
||
|
padding: 1em;
|
||
|
text-align: center;
|
||
|
z-index: 100;
|
||
|
font-family: Verdana, Arial, Sans;
|
||
|
}
|
||
|
.impress-enabled #impress-help td {
|
||
|
padding-left: 1em;
|
||
|
padding-right: 1em;
|
||
|
}
|
||
|
|
||
|
/* Substep plugin */
|
||
|
|
||
|
#impress .step .substep {
|
||
|
opacity: 0;
|
||
|
}
|
||
|
|
||
|
#impress .step .substep.substep-visible {
|
||
|
opacity: 1;
|
||
|
transition: opacity 1s;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
Styles for specific slides.
|
||
|
*/
|
||
|
|
||
|
/* The bar graph for Acme Inc profits */
|
||
|
|
||
|
#acme-graph-bottom {
|
||
|
position: absolute;
|
||
|
bottom: 100px;
|
||
|
left: 440px;
|
||
|
background-color: black;
|
||
|
width: 410px;
|
||
|
height: 2px;
|
||
|
}
|
||
|
|
||
|
/* height: is set from javascript */
|
||
|
#acme-graph-q1,
|
||
|
#acme-graph-q2,
|
||
|
#acme-graph-q3,
|
||
|
#acme-graph-q4 {
|
||
|
border: solid 1px black;
|
||
|
width: 70px;
|
||
|
margin-left: 10px;
|
||
|
position: absolute;
|
||
|
bottom: 100px;
|
||
|
}
|
||
|
|
||
|
#acme-graph-q1 {
|
||
|
background-color: red;
|
||
|
left: 450px;
|
||
|
}
|
||
|
|
||
|
#acme-graph-q2 {
|
||
|
background-color: blue;
|
||
|
left: 550px;
|
||
|
}
|
||
|
|
||
|
#acme-graph-q3 {
|
||
|
background-color: green;
|
||
|
left: 650px;
|
||
|
}
|
||
|
|
||
|
#acme-graph-q4 {
|
||
|
background-color: purple;
|
||
|
left: 750px;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
And as the last thing there is a workaround for quite strange bug.
|
||
|
It happens a lot in Chrome. I don't remember if I've seen it in Firefox.
|
||
|
|
||
|
Sometimes the element positioned in 3D (especially when it's moved back
|
||
|
along Z axis) is not clickable, because it falls 'behind' the <body>
|
||
|
element.
|
||
|
|
||
|
To prevent this, I decided to make <body> non clickable by setting
|
||
|
pointer-events property to `none` value.
|
||
|
Value if this property is inherited, so to make everything else clickable
|
||
|
I bring it back on the #impress element.
|
||
|
|
||
|
If you want to know more about `pointer-events` here are some docs:
|
||
|
https://developer.mozilla.org/en/CSS/pointer-events
|
||
|
|
||
|
There is one very important thing to notice about this workaround - it makes
|
||
|
everything 'unclickable' except what's in #impress element.
|
||
|
|
||
|
So use it wisely ... or don't use at all.
|
||
|
*/
|
||
|
.impress-enabled { pointer-events: none }
|
||
|
.impress-enabled #impress { pointer-events: auto }
|
||
|
.impress-enabled #impress-toolbar { pointer-events: auto }
|
||
|
.impress-enabled #impress-console-button { pointer-events: auto }
|