How to
and learn HTML, CSS and JavaScript at the same time... ; )
Anne Collet
Ask for help when needed & have fun!
to build a website :
behind any website
(world wide web)
(interconnected networks)
= a serie of interconnected servers
static website
(aka site vitrine)
+ browser
dynamic website
(aka web application)
+ browser
Page built
vs
0. Enumerate numbers until a defined stopper ('N')
1. Start by considering 'number' is equal to 1
2. If 'number' is a multiple of 3, say Fizz
3. If 'number' is a multiple of 5, say Buzz
4. If 'number' is a multiple of both, say FizzBuzz
5. Else say the current value of 'number'
6. Increment the value of 'number' by 1
7. Repeat until the value of 'number' is equal to 'N'
http://rosettacode.org/wiki/FizzBuzz
ASSEMBLY
http://rosettacode.org/wiki/FizzBuzz
RUBY
JAVA
more & more websites today
are using third-party web services
(Google maps, Facebook authentication,...)
can be integrated into your website
by copy/pasting a snippet of code, i.e. a call to their
API (application programming interface), in your HTML file
<!--
You need to include this script on any page that has a Google Map.
When using Google Maps on your own site you MUST signup for your own API key at:
https://developers.google.com/maps/documentation/javascript/tutorial#api_key
After your sign up replace the key in the URL below or paste in the new script tag that Google provides.
-->
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCukr6vo0mkusgzjemMGVI83TDUo-oqpzw&sensor=false"></script>
<script type="text/javascript">
// When the window has finished loading create our google map below
google.maps.event.addDomListener(window, 'load', init);
function init() {
// Basic options for a simple Google Map
// For more options see: https://developers.google.com/maps/documentation/javascript/reference#MapOptions
var mapOptions = {
// How zoomed in you want the map to start at (always required)
zoom: 15,
disableDefaultUI: true,
panControl: false,
zoomControl: true,
mapTypeControl: false,
scaleControl: false,
streetViewControl: false,
overviewMapControl: false,
scrollwheel: false,
// The latitude and longitude to center the map (always required)
center: new google.maps.LatLng(48.864848, 2.379853),
// How you would like to style the map.
// This is where you would paste any style found on Snazzy Maps.
styles: [{"featureType":"all","stylers":[{"saturation":0},{"hue":"#e7ecf0"}]},{"featureType":"road","stylers":[{"saturation":-70}]},{"featureType":"transit","stylers":[{"visibility":"off"}]},{"featureType":"poi","stylers":[{"visibility":"off"}]},{"featureType":"water","stylers":[{"visibility":"simplified"},{"saturation":-60}]}]
};
// Get the HTML DOM element that will contain your map
// We are using a div with id="map" seen below in the <body>
var mapElement = document.getElementById('map');
// Create the Google Map using out element and options defined above
var map = new google.maps.Map(mapElement, mapOptions);
var myMarker = new google.maps.Marker({
position: new google.maps.LatLng(48.864848, 2.379853),
map: map
});
}
</script>
Example: script to insert a Google Map
content (-> SEO)
+ structure
style / appearance
dynamic behaviour
+ animation
+ usability
HTML is a markup language.
It structures the content of a web page.
Cause in order to design and animate its elements,
we have to tag them first!
<!DOCTYPE html>
<!-- end of file -->
<!DOCTYPE html>
<html>
<!-- your content (text, images,...)
and all the other html tags
to structure this content goes here -->
</html>
<!-- end of file -->
<!DOCTYPE html>
<html>
<head>
<!-- intelligence (meta-data) -->
</head>
<body>
<!-- stuff to be displayed on your web page -->
</body>
</html>
<!-- end of file -->
<!DOCTYPE html>
<html>
<head>
<title>Hello world</title>
<!-- text appearing in the tab + used by Google in its search results -->
<meta charset="utf-8"/>
<!-- to display properly the special characters -->
</head>
<body>
<!-- stuff to display in the page -->
</body>
</html>
<!-- end of file -->
<!DOCTYPE html>
<html>
<head>
<title>Hello world</title>
<!-- Text appearing in the tab + used by Google in its search results -->
<meta charset="utf-8"/>
<!-- To display properly the special characters -->
</head>
<body>
<h1>Hello buddies!</h1>
<!-- Stuff to display in the page -->
</body>
</html>
<!-- end of file -->
<element_name attribute_name="attribute_value">element_content</element_name>
opening tag
closing tag
-------------------------------------------
---------------
result => Le Wagon
QUIZZ:
<h1>[...]</h1> <!-- Only one per page! SEO important -->
<h2>[...]</h2>
<h3>[...]</h3>
<h4>[...]</h4>
<h5>[...]</h5>
<h6>[...]</h6>
titles
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Veritatis laboriosam mollitia autem at ab omnis iure quis
asperiores inventore eos nam aut iusto officiis deserunt
nihil, sequi tempore impedit quae?
</p>
paragraphs
<h2>Shopping List</h2>
<ul>
<li>Milk</li>
<li>Butter</li>
</ul>
<h2>World Cup 2014</h2>
<ol>
<li>Germany</li>
<li>Argentina</li>
<li>Netherlands</li>
<li>Brazil</li>
</ol>
lists
<img src="logo.png" alt="Le Wagon logo"/>
images
<a href="http://www.lewagon.org" target="_blank">Le Wagon</a>
links
<form name="input" action="/subscribe" method="post">
.
input elements
.
</form>
forms
<form name="input" action="/subscribe" method="post">
Username: <input type="text" name="firstname">
</form>
input - type: text
<form name="input" action="/subscribe" method="post">
Username: <input type="text" name="firstname"><br>
<input type="radio" name="sex" value="male">Male<br>
<input type="radio" name="sex" value="female">Female
</form>
input - type: radio
<form name="input" action="/subscribe" method="post">
Username: <input type="text" name="firstname"><br>
<input type="radio" name="sex" value="male">Male<br>
<input type="radio" name="sex" value="female">Female<br>
<input type="checkbox" name="vehicle" value="Bike">I have a bike<br>
<input type="checkbox" name="vehicle" value="Car">I have a car
</form>
input - type: checkbox
<form name="input" action="/subscribe" method="post">
Username: <input type="text" name="firstname"><br>
<input type="radio" name="sex" value="male">Male<br>
<input type="radio" name="sex" value="female">Female<br>
<input type="checkbox" name="vehicle" value="Bike">I have a bike<br>
<input type="checkbox" name="vehicle" value="Car">I have a car<br>
<input type="submit" value="Submit">
</form>
input - type: submit
we need to configure a server
on the back-end side of our website
to receive and store these user inputs
resources
CSS is used to add some style properties
to specific & properly selected HTML elements
What would this website surfingla.fr look like without any CSS ?
Well, let's neutralise the CSS by deleting the head of the HTML document in the browser inspector!
Here is the result ! Quite different, isn't it ? ; )
For your CSS stylesheet to be taken into account, you need to
add a link to it in the head of the HTML document
/* syntax 1 : color name in English */
body {
color: orange;
}
color
/* syntax 2 : hexadecimal color reference */
body {
color: #FFA500;
}
color
/* syntax 3-a : RGB color reference */
body {
color: rgb(255, 165, 0);
}
color
/* syntax 3-b : RGBA color & opacity reference */
body {
color: rgba(255, 165, 0, 0.8);
}
color
RGBA has a 4th parameter: opacity
(which may vary between 0 and 1)
color tools
text color vs
background color
background image
fonts - family (1)
fonts - family (2)
fonts - family (3)
fonts - size & spacing
fonts - color
fonts - decoration
fonts - alignment
fonts tools
<link
rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
textual icons
<h1><i class="fa fa-cutlery"></i> MY RESTAURANT</h1>
graphical icons
You can get these icons both in :
Be careful about the picture/file's size :
too small, it will be blurred;
too big, it will slow down your page load!
=> to compress your pictures: ImageOptim
Select your pictures according to specific criteria (free of rights, landscape, min width 1024 px,...) :
picture size & shape
coding is about practice
divisions and box model
Any modern website...
... is made of <div>
divisions and box model
=> structure your HTML code with <div> elements,
to group all the contents that fits together
divisions and box model
the box model
the box model
syntax and shorcuts
div{
border-top: 1px solid red;
border-right: 2px dotted black;
border-bottom: 1px dashed green;
border-left: 2px dotted black;
}
borders
divisions and box model
div{
background: white;
border: 1px solid lightgrey;
padding: 20px;
margin: 30px;
}
you can make the box structure more visible
by adding some CSS rules on this <div>
id and class
To add some style only to :
id and class
in your HTML file
id and class
1 #logo {
2 width: 30%;
3 }
4
5 .staff {
6 border-radius: 50%;
7 }
in your CSS file
id and class
example
implies a conversion-driven landing page !
tells visitors about your offer
collects new interested contacts
makes them "buy" you "something"
is a home page that usually
maximizes the visitors' following move
kjhlkjhk
is the number of users
who have completed an action on your website
(bought a product, registered to an event, subscribed to a newsletter,...)
divided by the total number of your website visitors
to maximize this rate, pay attention to your landing page's ...
... content
... design
&
for crafting your landing page :
because then you can :
before launching your idea / product / service
on the market
make sure that you have :
CLEAR & CONCISE !
FOCUSED & USER-FRIENDLY !
start minimal
and then test adding things one by one
to understand how they impact your conversion rate
lean approach
Do not develop conversion obsession ! ^^
Some visitors will only come for :
=> make every journey on your site as pleasant as possible !
text editor
Sublime Text 3
to work efficiently
browser
+ dev' tools plug-in
Google Chrome
opened
simultanuously
on your screen
content (-> SEO)
+ structure
to customize front-end code
style / appearance
dynamic behaviour
+ animation
+ usability
to rapidly & smoothly set up
a fully-responsive front-end (html, css, js)
select the best ones
already widely tested & acclaimed
for their usability & functionality
Stripe (payment)
MailChimp (e-mailing)
selected & downloaded from WrapBootstrap
copied-pasted in the editor & revealed in the browser
of your landing page
add background image to contextualize
of your landing page
update favicon & logo
of your landing page
update title, description, headline & subhead
of your landing page
update call-to-action
of your landing page
reset countdown
Remember the form tag in HTML
<form name="input" action="/subscribe" method="post">
Username: <input type="text" name="firstname"><br>
<input type="radio" name="sex" value="male">Male<br>
<input type="radio" name="sex" value="female">Female<br>
<input type="checkbox" name="vehicle" value="Bike">I have a bike<br>
<input type="checkbox" name="vehicle" value="Car">I have a car<br>
<input type="submit" value="Submit">
</form>
we need to configure a server
on the back-end side of our website
to receive and store these user inputs
or...
MailChimp
(to collect user inputs & manage contacts)
MailChimp
(to collect user inputs & manage contacts)
MailChimp
(to collect user inputs & manage contacts)
<!-- Begin MailChimp Signup Form -->
<div id="mc_embed_signup">
<form action="http://8thcolor.us4.list-manage.com/subscribe/post?u=506ea88e9f457f1a4960a3310&id=868a950c07" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
...
</form>
</div>
Snippet of code to copy & paste from MailChimp
onto your HTML body, to call & consume the MailChimp API
A form...
MailChimp
(to collect user inputs & manage contacts)
<h2>Subscribe to our mailing list</h2>
<div class="mc-field-group">
<label for="mce-EMAIL">Email Address </label>
<input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL">
</div>
Snippet of code to copy & paste from MailChimp
onto your HTML body, to call & consume the MailChimp API
with minimal fields...
MailChimp
(to collect user inputs & manage contacts)
<div id="mce-responses" class="clear">
<div class="response" id="mce-error-response" style="display:none"></div>
<div class="response" id="mce-success-response" style="display:none"></div>
</div>
Snippet of code to copy & paste from MailChimp
onto your HTML body, to call & consume the MailChimp API
with error messages...
MailChimp
(to collect user inputs & manage contacts)
<!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
<div style="position: absolute; left: -5000px;">
<input type="text" name="b_506ea88e9f457f1a4960a3310_868a950c07" tabindex="-1" value="">
</div>
Snippet of code to copy & paste from MailChimp
onto your HTML body, to call & consume the MailChimp API
with bot signup protection...
Don't !
Do !
to priviledge humans on robots
MailChimp
(to collect user inputs & manage contacts)
<div class="clear">
<input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button">
</div>
Snippet of code to copy & paste from MailChimp
onto your HTML body, to call & consume the MailChimp API
and with the action.
(to monitor your website)
(to master the tool, follow our tutorial)
Determine where your best visitors are located
Learn what people are searching for on your site
Visualize what people click on the most
Uncover your top & worst performing content
Determine where people abandon & your bounce rate
Determine your mobile traffic
(to host your static website for free)
(to master the tool, follow our tutorial)
Use our tutorial