A Pen by Jeff Wainwright
How do I make an a pen by jeff wainwright?
What is a a pen by jeff wainwright? How do you make a a pen by jeff wainwright? This script and codes were developed by Jeff Wainwright on 08 December 2022, Thursday.
A Pen by Jeff Wainwright - Script Codes HTML Codes
<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>A Pen by Jeff Wainwright</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css"> <link rel="stylesheet" href="css/style.css">
</head>
<body>
<h1 class="headline headline--title">CSS property <code>Position: Fixed</code> is not good for sticky elements on mobile devices</h1>
<p class="headline headline--description"><code>position: fixed</code> is a great css property when making elements stick to the document if they don't change! However, if they change state when customers scroll, elements will jitter and other weirdness is visible. <a href="https://dollarshaveclub.github.io/stickybits/">StickyBits
A Pen by Jeff Wainwright - Script Codes CSS Codes
body { min-height: 160rem; background-color: #fefbf7;
}
code { background-color: #eee;
}
.headline { margin: 1rem auto 0; max-width: calc(100vw - 10%);
}
.headline--title { text-align: center;
}
.headline--description { font-size: 1.25rem; line-height: 1.8;
}
.parent { height: 30rem; margin-top: 1rem; width: 100%;
}
.parent--sticky { background-color: #E8F1D4;
}
.parent--fixed { position: relative; background-color: #ffccd4;
}
.child { background-color: rgba(0, 0, 0, 0.2); height: 8rem; width: 100%; top: 0; z-index: 3;
}
.child--fixed { position: relative;
}
.child--fixed.js-is-fixed { position: fixed; top: 0;
}
.child--fixed.js-is-fixed-stuck { bottom: 0; position: absolute; top: auto;
}
.child__content { font-size: 1.25rem; max-width: 100%; padding: 0 calc(100vw - 95%); position: absolute;
}
.child__content--emoji { font-size: 7rem; top: .5rem;
}
.child__content--text { font-size: 1.25rem; margin-left: 8rem; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%);
}
A Pen by Jeff Wainwright - Script Codes JS Codes
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global.stickybits = factory());
}(this, (function () { 'use strict';
var browserPrefix = ['', '-o-', '-webkit-', '-moz-', '-ms-'];
var stickyBitClass = 'js-is-sticky';
var stickyBitIsStuckClass = 'js-is-stuck';
function Stickybit(target, o) { this.el = target; this.scrollTarget = o && o.scrollTarget || window; this.stickyBitStickyOffset = o && o.stickyBitStickyOffset || 0; this.verticalPosition = o && o.verticalPosition || 'top'; this.useStickyClasses = o && o.useStickyClasses || false; this.elStyle = this.el.style; this.positionStickyVal = 'fixed';
}
Stickybit.prototype.setStickyPosition = function setStickyPosition() { var elStyle = this.elStyle; var verticalPosition = this.verticalPosition; for (var i = 0; i < browserPrefix.length; i += 1) { elStyle.position = browserPrefix[i] + 'sticky'; } if (elStyle.position !== '') { this.positionStickyVal = elStyle.position; if (verticalPosition === 'top') { elStyle[verticalPosition] = this.stickyBitStickyOffset + 'px'; } }
};
Stickybit.prototype.manageStickiness = function manageStickiness() { var el = this.el; var scrollTarget = this.scrollTarget; var positionStickyVal = this.positionStickyVal; var verticalPosition = this.verticalPosition; var stickyBitStickyOffset = this.stickyBitStickyOffset; var elStyle = this.elStyle; var elClasses = el.classList; var elParent = el.parentNode; var stickyBitStart = el.getBoundingClientRect().top; var stickyBitStop = stickyBitStart + elParent.offsetHeight - (el.offsetHeight - stickyBitStickyOffset); elParent.classList.add('js-stickybit-parent'); function stickiness() { var scroll = scrollTarget.scrollY; if (scroll < stickyBitStart) { if (elClasses.contains(stickyBitClass)) { elClasses.remove(stickyBitClass); if (positionStickyVal === 'fixed') elStyle.position = ''; } } else if (scroll > stickyBitStart && scroll < stickyBitStop) { if (!elClasses.contains(stickyBitClass)) elClasses.add(stickyBitClass); if (elClasses.contains(stickyBitIsStuckClass)) { elClasses.remove(stickyBitIsStuckClass); elStyle.bottom = ''; } elStyle.position = positionStickyVal; elStyle[verticalPosition] = stickyBitStickyOffset + 'px'; } else if (scroll > stickyBitStop && !elClasses.contains(stickyBitIsStuckClass)) { elClasses.remove(stickyBitClass); elClasses.add(stickyBitIsStuckClass); if (positionStickyVal !== 'fixed') return; elStyle.top = ''; elStyle.bottom = '0'; elStyle.position = 'absolute'; } } var invoked = void 0; function checkStickiness() { if (invoked) return; invoked = true; stickiness(); window.setTimeout(function () { invoked = false; }, 0); } scrollTarget.addEventListener('scroll', function () { return scrollTarget.requestAnimationFrame(checkStickiness); });
};
function stickybits(target, o) { var els = typeof target === 'string' ? document.querySelectorAll(target) : target; if (!('length' in els)) els = [els]; var stickyBit = void 0; for (var i = 0; i < els.length; i += 1) { var el = els[i]; stickyBit = new Stickybit(el, o); stickyBit.setStickyPosition(); if (stickyBit.positionStickyVal === 'fixed' || stickyBit.useStickyClasses === true) { stickyBit.manageStickiness(); } }
}
return stickybits;
})));
var $fixedEl = $('#fixed-child');
var $fixedParent = $('#fixed-parent');
var stickyCoords = {};
function getStickyCoords() { stickyCoords.start = $fixedParent.offset().top; var parentHeight = $fixedParent.outerHeight(); var fixedElHeight = $fixedEl.outerHeight(); var distance = parentHeight - fixedElHeight; stickyCoords.stop = stickyCoords.start + distance; return stickyCoords;
};
$(window).on('scroll', function() { var scroll = window.scrollY; getStickyCoords(); if (scroll < stickyCoords.start) { $fixedEl.removeClass('js-is-fixed'); return; } else if ( (scroll > stickyCoords.start) && (scroll < stickyCoords.stop) ) { $fixedEl.addClass('js-is-fixed'); $fixedEl.removeClass('js-is-fixed-stuck'); return; } else { $fixedEl.addClass('js-is-fixed-stuck'); $fixedEl.removeClass('js-is-fixed'); }
});
stickybits('#sticky-child');
![A Pen by Jeff Wainwright - Script Codes](http://shots.codepen.io/yowainwright/pen/Njwpep-512.jpg)
Developer | Jeff Wainwright |
Username | yowainwright |
Uploaded | December 08, 2022 |
Rating | 3 |
Size | 4,864 Kb |
Views | 14,168 |
Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!
Name | Size |
Multiple Swiper Demo | 2,660 Kb |
Meeting Schedule Widget with Angular | 3,958 Kb |
Reframe.js Example | 3,759 Kb |
Stickybits with a custom vertical position | 4,513 Kb |
Shave, a javascript plugin for truncating text | 4,621 Kb |
Reframe.js Demo | 3,821 Kb |
Noframe.js Example | 2,975 Kb |
Quick Bootstrap ScrollSpy Demo | 3,090 Kb |
Stickybits Demo | 4,576 Kb |
Playing with URLs and ScrollSpy | 4,377 Kb |
Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!
Name | Username | Size |
CSS Link Icons with jQuery Titles | Nicwinn | 2,312 Kb |
Day 1 - Portfolio | Chpecson | 3,532 Kb |
Svg penguin | _massimo | 2,990 Kb |
Large canvas mousemove experiment | Jibbon | 2,885 Kb |
CSS Bot Confusion | Jpod | 3,456 Kb |
Vue.js | Thommyboy02 | 1,506 Kb |
Ionic Infinite outside ion-content with ion-pane | Felquis | 3,117 Kb |
Ghost | Mghayour | 11,738 Kb |
CSS Grid Test | Ajaykarwal | 2,377 Kb |
Header Line Issue | Charlie-volpe | 1,768 Kb |
Surf anonymously, prevent hackers from acquiring your IP address, send anonymous email, and encrypt your Internet connection. High speed, ultra secure, and easy to use. Instant setup. Hide Your IP Now!