124 private links
<!DOCTYPE html>
<html>
<body>
The content of the body element is displayed in your browser.
<marquee id="m" style="font-size: 102px" behavior="scroll" scrollamount="5" width="100%" direction="up" height="800px">
What is Lorem Ipsum?<br>
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
Why do we use it?
</marquee>
<br>
<button onclick="m.stop() ">Stop</button>
<button onclick="m.start() ">Start</button>
<br>
</body>
</html>
Click on the button, if yuo can !
const { useState, useRef, useEffect, useLayoutEffect, createContext } = React;
/**
* Globals
*/
const CONSTANTS = {
assetPath: "https://s3-us-west-2.amazonaws.com/s.cdpn.io/184729",
}
const ASSETS = {
head: `${CONSTANTS.assetPath}/head.svg`,
waiting: `${CONSTANTS.assetPath}/hand.svg`,
stalking: `${CONSTANTS.assetPath}/hand-waiting.svg`,
grabbing: `${CONSTANTS.assetPath}/hand.svg`,
grabbed: `${CONSTANTS.assetPath}/hand-with-cursor.svg`,
shaka: `${CONSTANTS.assetPath}/hand-surfs-up.svg`
}
// Preload images
Object.keys(ASSETS).forEach(key => {
const img = new Image();
img.src = ASSETS[key];
});
/**
* Shared hooks
*/
// Hover state - https://dev.to/spaciecat/hover-states-with-react-hooks-4023
const useHover = () => {
const ref = useRef();
const [hovered, setHovered] = useState(false);
const enter = () => setHovered(true);
const leave = () => setHovered(false);
useEffect(
() => {
ref.current.addEventListener("mouseenter", enter);
ref.current.addEventListener("mouseleave", leave);
return () => {
ref.current.removeEventListener("mouseenter", enter);
ref.current.removeEventListener("mouseleave", leave);
};
},
[ref]
);
return [ref, hovered];
};
// Mouse position
const useMousePosition = () => {
const [position, setPosition] = useState({ x: 0, y: 0 });
useEffect(() => {
const setFromEvent = e => setPosition({ x: e.clientX, y: e.clientY });
window.addEventListener("mousemove", setFromEvent);
return () => {
window.removeEventListener("mousemove", setFromEvent);
};
}, []);
return position;
};
// Element position
const usePosition = () => {
const ref = useRef();
const [position, setPosition] = useState({});
const handleResize = () => {
setPosition(ref.current.getBoundingClientRect());
};
useLayoutEffect(() => {
handleResize();
window.addEventListener('resize', handleResize);
return () => {
window.removeEventListener('resize', handleResize);
};
}, [ref.current]);
return [ref, position];
};
/**
* React Components
*/
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
debug: false,
cursorGrabbed: false,
gameOver: false,
};
this.handleToggleDebug = this.handleToggleDebug.bind(this);
this.handleButtonClicked = this.handleButtonClicked.bind(this);
this.handleCursorGrabbed = this.handleCursorGrabbed.bind(this);
}
handleToggleDebug() {
this.setState({
debug: !this.state.debug
});
}
handleCursorGrabbed() {
this.setState({
cursorGrabbed: true
});
setTimeout(() => {
this.setState({
cursorGrabbed: false
});
}, 2000)
}
handleButtonClicked() {
this.setState({
gameOver: true
});
setTimeout(() => {
this.setState({
gameOver: false
});
}, 4000)
}
render() {
const { cursorGrabbed, gameOver, debug } = this.state;
const screenStyle = cursorGrabbed ? { cursor: "none" } : {};
const appClass = debug ? "app app--debug" : "app";
return (
<div className={appClass} style={screenStyle}>
<section className="container">
<h1>Hello!</h1>
<h2>Welcome to the internet.</h2>
<p>This is a classic website, no traps or weird stuff!</p>
<p>Feel free to browse, relax and, I don't know, click the button down there? Might as well, right?</p>
<button
className="debug-button"
onClick={this.handleToggleDebug}>
Debug
</button>
</section>
<button
className="trap-button"
onClick={this.handleButtonClicked}>
{ gameOver && "Nice one" }
{ cursorGrabbed && "Gotcha!" }
{ !gameOver && !cursorGrabbed && "Button!"}
</button>
<div className="grab-zone-wrapper">
<GrabZone
onCursorGrabbed={this.handleCursorGrabbed}
cursorGrabbed={cursorGrabbed}
gameOver={gameOver}
/>
</div>
</div>
);
}
}
// GrabZone (The hover trigger zone)
const GrabZone = ({ cursorGrabbed, gameOver, onCursorGrabbed }) => {
const [outerRef, outerHovered] = useHover();
const [innerRef, innerHovered] = useHover();
const [isExtended, setExtendedArm] = useState(false);
let state = "waiting";
if (outerHovered) {
state = "stalking";
}
if (innerHovered) {
state = "grabbing";
}
if (cursorGrabbed) {
state = "grabbed";
}
if (gameOver) {
state = "shaka"
}
// If state is grabbing for a long time, they're being clever!
useEffect(() => {
let timer;
if (state === "grabbing") {
timer = setTimeout(() => {
// Not so clever now, are they?
setExtendedArm(true);
timer = null;
}, 2000);
}
return () => {
setExtendedArm(false);
if (timer) {
clearTimeout(timer);
}
};
},
[state]
);
return (
<div className="grab-zone" ref={outerRef}>
<div className="grab-zone__debug">
<strong>Debug info:</strong>
<p>Current state: {state}</p>
<p>Extended arm: {isExtended ? "Yes" : "No"}</p>
</div>
<div className="grab-zone__danger" ref={innerRef}>
<Grabber
state={state}
gameOver={gameOver}
extended={isExtended}
onCursorGrabbed={onCursorGrabbed}
/>
</div>
</div>
);
};
// Grabber (The graphic)
const Grabber = ({ state, gameOver, extended, onCursorGrabbed }) => {
const mousePos = useMousePosition();
const [ref, position] = usePosition();
const hasCursor = false;
// Calculate rotation of armWrapper
const x = position.left + position.width * 0.5;
const y = position.top + position.height * 0.5;
const angle = gameOver ? 0 : Math.atan2(mousePos.x - x, -(mousePos.y - y)) * (180 / Math.PI);
// Ensure value is within acceptable range (-75 to 75)
const rotation = Math.min(Math.max(parseInt(angle), -79), 79);
const grabberClass = `grabber grabber--${state} ${extended && "grabber--extended"}`;
const wrapperStyle = { transform: `rotate(${rotation}deg)` };
let handImageSrc = ASSETS[state];
return (
<div className={grabberClass}>
<div className="grabber__body"></div>
<img className="grabber__face" src={ASSETS.head} />
<div className="grabber__arm-wrapper" ref={ref} style={wrapperStyle}>
<div className="grabber__arm">
<img
className="grabber__hand"
src={handImageSrc}
onMouseEnter={onCursorGrabbed}
/>
</div>
</div>
</div>
);
};
// Render app
ReactDOM.render(<App />, document.getElementById("app"));
html {
font-size: 18px;
@media (min-width: 900px) {
font-size: 24px;
}
}
body {
font-family: 'Montserrat', sans-serif;
font-weight: 300;
line-height: 1.45;
color: #0F1108;
}
h1 {
font-size: 2.2rem;
margin: 0;
font-weight: 600;
line-height: 1.15;
@media (min-width: 900px) {
font-size: 2.488rem;
}
}
h2 {
font-size: 1.4rem;
margin: 0.5rem 0;
line-height: 1.15;
font-weight: 200;
@media (min-width: 900px) {
margin: 1rem 0;
font-size: 1.44rem;
}
}
p {
margin-top: 0.25rem;
@media (min-width: 900px) {
margin-top: 0.5rem;
}
}
a {
color: #0F1108;
text-decoration: none;
border-bottom: currentcolor 1px solid;
}
// General modules
.container {
max-width: 520px;
margin: 0 auto;
padding: 0 1rem 100px 1rem;
@media (min-width: 900px) {
max-width: 650px;
padding: 0 1rem 90px 1rem;
}
}
// Full-screen wrapper
.app {
position: relative;
background: #F2E9DE;
display: flex;
align-items: center;
justify-content: center;
min-height: calc(100vh - 2rem);
margin: 1rem;
overflow: hidden;
// Modifiers
&--debug {
.grab-zone {
background: rgba(0, 0, 0, 0.15);
}
.grab-zone__debug {
display: block;
}
.grab-zone__danger {
background: rgba(0, 0, 0, 0.15);
}
.grabber__arm-wrapper {
background: rgba(0, 0, 0, 0.15);
}
}
}
.grab-zone-wrapper {
position: absolute;
bottom: 0;
right: 0;
transform: translateX(30%) translateY(50%);
}
.grab-zone {
display: flex;
align-items: center;
justify-content: center;
width: 700px;
height: 700px;
border-radius: 50%;
&__danger {
display: flex;
align-items: center;
justify-content: center;
width: 400px;
height: 400px;
border-radius: 50%;
}
&__debug {
display: none;
position: absolute;
width: 300px;
top: -100px;
font-size: 14px;
text-align: center;
text-transform: uppercase;
}
}
.grabber {
position: relative;
width: 100px;
height: 100px;
&__arm-wrapper {
position: absolute;
top: -80px;
width: 24px;
height: 260px;
}
&__arm {
position: relative;
width: 24px;
height: 200px;
background: #7D9A9E;
border-radius: 20px;
overflow: visible;
transform: translateY(100%);
transition: transform 0.2s ease;
}
&__hand {
display: block;
position: absolute;
top: -12px;
transform: scale(1.4) rotate(-10deg) translateY(100%);
transform-origin: bottom center;
transition: transform 0.3s ease;
}
&__face {
position: absolute;
width: 75px;
height: 84px;
right: 5%;
transition: transform 0.3s ease;
}
&__body {
position: absolute;
top: 50%;
left: 0%;
width: 110px;
height: 95px;
border-radius: 50%;
background: #7D9A9E;
transition: transform 0.3s ease;
}
// Modifiers
&--waiting {
.grabber__hand {
transform: scale(1.4) rotate(-10deg);
}
.grabber__arm {
transform: translateY(80%);
}
.grabber__face {
transform: translateY(60%);
}
}
// Modifiers
&--stalking {
.grabber__hand {
transform: scale(1.4) rotate(-10deg);
}
.grabber__arm {
transform: translateY(70%);
}
.grabber__face {
transform: translateY(10%);
}
}
&--grabbing {
.grabber__face {
transform: translateY(-40%) rotate(10deg);
}
.grabber__arm {
transform: translateY(0%);
}
.grabber__body {
transform: translateY(-20%);
}
.grabber__hand {
transform: scale(1.7) rotate(10deg);
}
}
&--grabbed {
.grabber__arm {
transition: transform 1s ease;
}
.grabber__hand {
transition: transform 2.5s ease;
}
.grabber__face {
transform: translateY(70%);
transition: transform 1s ease;
}
.grabber__body {
transform: translateY(50%);
transition: transform 1s ease;
}
}
&--extended {
.grabber__arm {
transform: translateY(-20%);
}
.grabber__face {
transform: translateY(-60%) rotate(15deg);
}
.grabber__body {
transform: translateY(-40%);
}
}
&--shaka {
.grabber__arm {
transform: translateY(50%);
}
.grabber__hand {
transform: scale(2.5) translateY(10%);
animation: shaka 0.5s infinite alternate forwards;
transform-origin: 55% 60%;
}
.grabber__face {
transform: translateY(70%);
transition: transform 1s ease;
}
.grabber__body {
transform: translateY(50%);
transition: transform 1s ease;
}
}
}
.trap-button {
position: absolute;
bottom: 80px;
right: 70px;
min-width: 125px;
background: #8ECACC;
color: white;
border-radius: 5px;
padding: 0.4rem 0.5rem;
font-weight: 600;
font-size: 18px;
letter-spacing: 1px;
text-transform: uppercase;
}
.debug-button {
position: fixed;
top: 0;
right: 0;
background: transparent;
padding: 1rem;
margin: 1rem;
font-size: 16px;
text-transform: uppercase;
letter-spacing: 1px;
opacity: 0.5;
}
@keyframes shaka {
0% { transform: scale(2.5) translateY(0%) rotate(-20deg); }
100% { transform: scale(2.5) translateY(0%) rotate(20deg); }
}
<div id="app"></div>
Mail templates
Redimensionner une image automatiquement : http://lehollandaisvolant.net/?mode=links&id=20130718014626
Effets sur le header en défilant : http://tympanus.net/Development/HeaderEffects/
Expérimentations css3 : http://hakim.se/experiments/assorted-css-animations
7 templates metro ui : http://smashinghub.com/7-free-metro-ui-template.htm
35 infographies et cheat sheet pour les social media manager et marketeux : http://www.hongkiat.com/blog/cheatsheets-social-media-marketers/
Flat design dans le print : http://designmodo.com/flat-design-web-print/
http://www.lafermeduweb.net/veille/un-mockup-de-charte-graphique-pour-presenter-vos-idees-a-votre-client-357389298238099458.html
http://www.lafermeduweb.net/veille/mettre-dans-la-file-queue-vos-requetes-ajax-357386742229241857.html
Utiliser l'accéléromètre des mobiles en JS : http://www.inserthtml.com/2013/07/javascript-accelerometer/
Afficher la batterie : http://www.hongkiat.com/blog/html5-battery-status/
http://webdesigntunes.com/freebies/free-responsive-html5-templates/
http://www.cssauthor.com/daily-mobile-ui-design-inspiration-83/
http://www.lafermeduweb.net/veille/creer-un-chat-temps-reel-avec-meteor-et-les-meteor-streams-359553514311135236.html
http://www.lafermeduweb.net/veille/4-outils-pour-mettre-en-place-des-tests-css-automatiques-359556066662555648.html
http://www.lafermeduweb.net/veille/flatilicious-un-pack-de-48-icones-flat-ui-gratuites-360290855287918592.html
http://www.lafermeduweb.net/veille/creer-son-propre-player-mp3-en-html5-360285857254617088.html
http://www.lafermeduweb.net/veille/accelerer-son-workflow-de-developpement-avec-grunt-js-360283292966199296.html
http://www.lafermeduweb.net/veille/un-nouveau-tutoriel-en-developpement-android-360280763385643009.html
http://www.lafermeduweb.net/veille/les-nouvelles-statistiques-facebook-decryptees-360278287043395584.html
http://www.lafermeduweb.net/veille/optimisez-vos-sites-responsive-pour-gagner-en-performances-359921035698634752.html
http://www.lafermeduweb.net/veille/slimmenu-un-plugin-jquery-pour-creer-des-menus-avances-et-responsive-359918389201862656.html
http://www.lafermeduweb.net/veille/trackez-vos-visiteurs-en-temps-reel-avec-couchbase-elasticsearch-et-kibana-359916024822378497.html
http://www.lafermeduweb.net/veille/pointer-js-normalisez-les-evenements-de-clic-sur-mobile-et-desktop-360643178434539520.html
http://www.lafermeduweb.net/veille/une-decomposition-complete-de-backbone-js-pour-comprendre-ses-entrailles-361737867015364608.html
http://www.lafermeduweb.net/veille/css-guidelines-une-collection-d-astuces-css-interessantes-361735395546894337.html
http://www.lafermeduweb.net/veille/une-recherche-ui-interessante-sur-le-futur-des-sites-de-compagnies-aeriennes-361732832936214530.html
http://www.lafermeduweb.net/veille/un-kit-de-wireframing-pour-ios-7-sous-illustrator-361730356631707648.html
http://www.lafermeduweb.net/veille/comment-creer-un-cube-en-css3-361727884676694016.html
générer bruit http://noisepng.com/
générer template :http://ink.sapo.pt/typography
http://www.lafermeduweb.net/veille/nedb-l-equivalent-de-sqlite-pour-node-js-371874766384533504.html
http://www.lafermeduweb.net/veille/une-collection-de-gestes-tactiles-animes-pour-vos-tutoriels-guides-371879702275035137.html
http://www.lafermeduweb.net/billet/koala-une-interface-pour-compiler-sass-compass-less-coffeescript-1621.html
http://www.lafermeduweb.net/veille/emmet-livestyle-repercutez-en-direct-vos-modifications-css-de-sublime-text-dans-chrome-ou-safari-371887285647970304.html
Effet sur les liens : http://tympanus.net/Development/CreativeLinkEffects/
Créer des interfaces en 3D http://tridiv.com/
404 http://www.hongkiat.com/blog/funny-creative-error-404/
Web Storage : http://www.sitepoint.com/html5-web-storage/
Icones monuments : http://www.noupe.com/freebie/exclusive-vector-freebie-250-ultimate-world-monuments-icon-pack-by-freepik-78439.html
Formulaire CB : http://kenkeiter.com/skeuocard/
Tester webfont http://typewonder.com/
Optimisations android : http://www.hongkiat.com/blog/speed-up-android/
Dashboard http://www.lafermeduweb.net/billet/oocharts-une-api-pour-creer-vos-propres-dashboard-google-analytics-1623.html
Responsive http://www.lafermeduweb.net/veille/les-etapes-a-suivre-pour-creer-un-design-responsive-372609525532360704.html
Navifgation circulaire: http://www.lafermeduweb.net/veille/une-navigation-de-menu-circulaire-originale-avec-transitions-css-372604479910461440.html
Maniipuler jdom en JS http://www.lafermeduweb.net/veille/html-js-une-bibliotheque-js-pour-manipuler-plus-facilement-le-dom-372599577448546304.html
Progress Bar : http://css-tricks.com/html5-element/
Aide responsive pour placer les blocs : http://www.responsivewebcss.com/
Afficher code sur une page : http://www.sitepoint.com/best-practice-for-code-examples/
Taille automatique iframe aec jquery : http://sly777.github.io/Iframe-Height-Jquery-Plugin/
Menu moderne : http://tympanus.net/Development/MultiLevelPushMenu/
Plugin pour créer des ombres "allongées" : http://thepetedesign.com/demos/jquery_flat_shadow_demo.html
Inspiration design http://thedesigninspiration.com/
Editer contenu (webkit en tout cas KO avec FF) http://jakiestfu.github.io/Medium.js/docs/
Blur http://www.sitepoint.com/how-to-use-motion-blur-in-css3-animations/
10 musr have pour le responsive http://www.bestdesigntuts.com/10-must-have-responsive-web-design-tools-for-designers
Detecter lce que le navigateur supporte http://www.hongkiat.com/blog/css-supports-rule/
Tuto bootsrap http://www.sitepoint.com/building-responsive-websites-using-twitter-bootstrap/
UI Git : https://npmjs.org/package/ungit
Gérer Favicon https://github.com/audreyr/favicon-cheat-sheet
Template admin bootstrap http://www.egrappler.com/templatevamp-free-twitter-bootstrap-admin-template/
API gratuite méteo http://developer.worldweatheronline.com/
15 design page unique http://www.sitepoint.com/15-creative-single-page-web-designs/
Select sexy jquery et api http://www.bartos.me/heapbox/
15 plugins JS de code highlighting pour afficher du code http://codegeekz.com/15-code-syntax-highlighters-to-prettify-your-code/
Astuces Git : http://sixrevisions.com/web-development/git-tips/
Domotique http://ni-c.github.io/heimcontrol.js/
Icones linéaires http://www.cssauthor.com/free-line-icons-for-web-and-ui-designs
CV http://www.lafermeduweb.net/billet/30-exemples-de-cv-design-et-creatifs-pour-votre-inspiration-1628.html
CSS 3 animations: cheat sheat http://www.justinaguilar.com/animations/index.html
Layout horizontal http://tympanus.net/Development/TripleViewLayout/
Sidebar Transitions: Transition effects for off-canvas views http://tympanus.net/Development/SidebarTransitions/#
jQuery Plugin Registry http://plugins.jquery.com/
3D Shading with Box-Shadows http://tympanus.net/Tutorials/3DShadingWithBoxShadows/
LovelyUI: Une collection d'interfaces mobiles pour inspiration http://www.lovelyui.com/
Font dev http://www.slant.co/topics/67/~what-are-the-best-programming-fonts
40 Free Fonts for Flat Design http://www.hongkiat.com/blog/flat-design-free-fonts/
Flattastic UI Kit http://www.webdesignerdepot.com/2013/08/free-download-flattastic-ui-kit/?ref=lafermeduweb
Des mockups de smartphones et tablettes sous Android http://dribbble.com/shots/1224225-Freebie-Android-Devices
Animo.js plugin jQuery manipuler les animations CSS3 http://labs.bigroomstudios.com/libraries/animo-js
20 icones mobiles Flat http://www.hongkiat.com/blog/flat-mobile-app-icon/
Ajouter des tags, comme l'interface puppet https://github.com/dscout/velge
Tester site résolution http://quirktools.com/screenfly/
Créer des cartes interactives http://www.lafermeduweb.net/billet/mapael-creez-des-cartes-vectorielles-interactives-avec-jquery-1634.html
Webmail libre : http://www.lafermeduweb.net/billet/mailpile-un-webmail-100-opensource-complet-et-moderne-1640.html
Script php mail poubelle http://book.knah-tsaeb.org/?fwmb5w
Protéger deconnexion : http://www.lafermeduweb.net/billet/failsafe-protegez-vos-applis-web-des-deconnexions-1638.html
Monster Id : https://github.com/KevinGaudin/monsterid.js
Des icones : http://www.cssauthor.com/free-icons-for-web-and-user-interface-design-19/
600 thèmes wordpress : http://www.cssauthor.com/free-wordpress-themes/
Fabriquer des requetes HTTP sans curl : http://requests.ryanmccue.info/
Défiler pleine page : http://alvarotrigo.com/fullPage/
Player HTML5 : http://praegnanz.de/html5video/
Pack icones Meteo : http://freecns.yanlu.de/cumulus/
Pour dessiner : http://leimi.github.io/drawingboard.js/
10 webapp pour chat : http://codegeekz.com/10-free-chat-applications-for-your-websites/
30 sites template une page : http://www.webdesignerdepot.com/2013/10/30-one-page-sites-youll-wish-you-had-built/
"Landing" exemple dropbox, nous rejoindre etc: http://sixrevisions.com/web_design/minimalist-landing-pages-deconstruct/
Changer automatiquement la couleur d'un élément selon la couleur qui est dessous : http://www.webresourcesdepot.com/auto-change-the-color-of-elements-according-to-the-background-backgroundcheck/
Slider que j'utilise pour mon projet myinktest
Le site le plus beau du monde