1+ <!DOCTYPE html>
2+ < html lang ="en ">
3+ < head >
4+ < meta charset ="UTF-8 ">
5+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
6+ < title > jQuery Plugin to Add 360 Rotatable Bubble Style Tooltips</ title >
7+ < meta name ="description " content ="grumble.js by jamescryer. jQuery plugin to add 360 rotatable bubble style tooltips ">
8+ < meta name ="author " content ="jamescryer ">
9+ < meta name ="robots " content ="index, follow ">
10+ <!-- Canonical URL -->
11+ < link rel ="canonical " href ="https://codehimblog.github.io/jquery-plugins/grumble-js-by-jamescryer.html ">
12+ <!-- Favicon -->
13+ < link rel ="icon " href ="/favicon.ico " type ="image/png ">
14+ <!-- Bootstrap CSS -->
15+ < link href ="
https://cdn.jsdelivr.net/npm/[email protected] /dist/css/bootstrap.min.css "
rel ="
stylesheet "
> 16+ <!-- Bootstrap Icons -->
17+ < link href ="https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.css " rel ="stylesheet ">
18+ < link rel ="stylesheet " href ="/css/styles.css ">
19+ </ head >
20+ < body >
21+ <!-- Navbar -->
22+ < nav class ="navbar navbar-expand-lg navbar-dark bg-dark fixed-top ">
23+ < div class ="container ">
24+ < a class ="navbar-brand " href ="https://codehimblog.github.io ">
25+ < i class ="bi bi-box-seam me-2 "> </ i > CodehimBlog
26+ </ a >
27+ < button class ="navbar-toggler " type ="button " data-bs-toggle ="collapse " data-bs-target ="#navbarNav " aria-controls ="navbarNav " aria-expanded ="false " aria-label ="Toggle navigation ">
28+ < span class ="navbar-toggler-icon "> </ span >
29+ </ button >
30+ < div class ="collapse navbar-collapse " id ="navbarNav ">
31+ < ul class ="navbar-nav ms-auto ">
32+ < li class ="nav-item ">
33+ < a class ="nav-link " href ="https://codehimblog.github.io/ "> < i class ="bi bi-house-door me-1 "> </ i > Home</ a >
34+ </ li >
35+ < li class ="nav-item ">
36+ < a class ="nav-link " href ="https://codehimblog.github.io/projects/ "> < i class ="bi bi-box me-1 "> </ i > Projects</ a >
37+ </ li >
38+ < li class ="nav-item ">
39+ < a class ="nav-link " href ="https://codehimblog.github.io/about.html "> < i class ="bi bi-book me-1 "> </ i > About</ a >
40+ </ li >
41+ < li class ="nav-item ">
42+ < a class ="nav-link " href ="https://codehimblog.github.io/contact.html "> < i class ="bi bi-envelope me-1 "> </ i > Contact</ a >
43+ </ li >
44+ </ ul >
45+ </ div >
46+ </ div >
47+ </ nav >
48+
49+ <!-- Breadcrumbs -->
50+ < div class ="container mt-4 breadcrumbs ">
51+ < nav aria-label ="breadcrumb ">
52+ < ol class ="breadcrumb mb-0 ">
53+ < li class ="breadcrumb-item "> < a href ="https://codehimblog.github.io/ "> Home</ a > </ li >
54+ < li class ="breadcrumb-item "> < a href ="https://codehimblog.github.io/jquery-plugins/ "> jQuery Plugins</ a > </ li >
55+ < li class ="breadcrumb-item active " aria-current ="page "> Grumble.js</ li >
56+ </ ol >
57+ </ nav >
58+ </ div >
59+
60+ <!-- Schema Markup for Breadcrumbs -->
61+ < script type ="application/ld+json ">
62+ {
63+ "@context" : "https://schema.org" ,
64+ "@type" : "BreadcrumbList" ,
65+ "itemListElement" : [
66+ {
67+ "@type" : "ListItem" ,
68+ "position" : 1 ,
69+ "name" : "Home" ,
70+ "item" : "https://codehimblog.github.io/"
71+ } ,
72+ {
73+ "@type" : "ListItem" ,
74+ "position" : 2 ,
75+ "name" : "jQuery Plugins" ,
76+ "item" : "https://codehimblog.github.io/jquery-plugins/"
77+ } ,
78+ {
79+ "@type" : "ListItem" ,
80+ "position" : 3 ,
81+ "name" : "Grumble.js" ,
82+ "item" : "https://codehimblog.github.io/projects/{{packageSlug}}"
83+ }
84+ ]
85+ }
86+ </ script >
87+ <!-- Main Content -->
88+ < div class ="container mt-3 ">
89+ < div class ="row ">
90+ <!-- Main Details -->
91+ < main class ="col-md-8 site-main p-0 ">
92+ < article >
93+ <!-- Project Name & Description -->
94+ < h1 id ="packageName "> Grumble.js</ h1 >
95+ < p id ="packageDescription " class ="text-muted "> jQuery plugin to add 360 rotatable bubble style tooltips</ p >
96+
97+
98+
99+ <!-- Statistics -->
100+ < div class ="stat-row d-flex justify-content-around align-items-center text-center mb-2 ">
101+ < div class ="stat-box d-flex align-items-center flex-column-mobile ">
102+ < i class ="bi bi-star-fill text-warning mb-2 "> </ i >
103+ < div >
104+ < span id ="stargazersCount " class ="stat-value "> 769</ span >
105+ < p class ="stat-label mb-0 "> Stars</ p >
106+ </ div >
107+ </ div >
108+
109+ < div class ="stat-box d-flex align-items-center flex-column-mobile ">
110+ < i class ="bi bi-box-arrow-in-down mb-2 "> </ i >
111+ < div >
112+ < span id ="repoSize " class ="stat-value "> 4.81 MB</ span >
113+ < p class ="stat-label mb-0 "> Size</ p >
114+ </ div >
115+ </ div >
116+
117+ < div class ="stat-box d-flex align-items-center flex-column-mobile ">
118+ < i class ="bi bi-arrow-repeat text-secondary mb-2 "> </ i >
119+ < div >
120+ < span id ="forksCount " class ="stat-value "> 165</ span >
121+ < p class ="stat-label mb-0 "> Forks</ p >
122+ </ div >
123+ </ div >
124+
125+ < div class ="stat-box d-flex align-items-center flex-column-mobile ">
126+ < i class ="bi bi-exclamation-circle text-danger mb-2 "> </ i >
127+ < div >
128+ < span id ="openIssuesCount " class ="stat-value "> 1</ span >
129+ < p class ="stat-label mb-0 "> Open Issues</ p >
130+ </ div >
131+ </ div >
132+ </ div >
133+
134+
135+ < div class ="ad-unit ad-apt ">
136+ < script async src ="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7089100907045419 "
137+ crossorigin ="anonymous "> </ script >
138+ <!-- CodehimBlog APT -->
139+ < ins class ="adsbygoogle "
140+ style ="display:block "
141+ data-ad-client ="ca-pub-7089100907045419 "
142+ data-ad-slot ="4990741913 "
143+ data-ad-format ="auto "
144+ data-full-width-responsive ="true "> </ ins >
145+ < script >
146+ ( adsbygoogle = window . adsbygoogle || [ ] ) . push ( { } ) ;
147+ </ script >
148+ </ div >
149+
150+ < div class ="row mb-4 ">
151+ <!-- Tabs (Left) -->
152+ < div class ="col-12 col-md-6 d-flex justify-content-start mb-3 mb-md-0 ">
153+ < ul class ="nav nav-tabs " id ="infoTabs " role ="tablist ">
154+ < li class ="nav-item " role ="presentation ">
155+ < button class ="nav-link active " id ="installation-tab " data-bs-toggle ="tab " data-bs-target ="#installation " type ="button " role ="tab " aria-controls ="installation " aria-selected ="true ">
156+ < i class ="bi bi-file-earmark-text "> </ i > Readme
157+ </ button >
158+ </ li >
159+ < li class ="nav-item " role ="presentation ">
160+ < button class ="nav-link " id ="changelog-tab " data-bs-toggle ="tab " data-bs-target ="#changelog " type ="button " role ="tab " aria-controls ="changelog " aria-selected ="false ">
161+ < i class ="bi bi-journal-text me-2 "> </ i > Changelog
162+ </ button >
163+ </ li >
164+ </ ul >
165+ </ div >
166+
167+ <!-- Action Buttons (Right) -->
168+ < div class ="col-12 col-md-6 d-flex align-items-center justify-content-end ">
169+ < a href ="https://github.com/jamescryer/grumble.js/archive/refs/heads/master.zip " class ="btn btn-primary me-2 action-btn " id ="downloadBtn ">
170+ < i class ="bi bi-cloud-download me-2 "> </ i > Download ZIP
171+ </ a >
172+ < a href ="https://github.com/jamescryer/grumble.js " target ="_blank " class ="btn btn-outline-secondary action-btn " id ="githubBtn ">
173+ < i class ="bi bi-github me-2 "> </ i > Fork on GitHub
174+ </ a >
175+ </ div >
176+ </ div >
177+ < div class ="tab-content mt-3 " id ="infoTabsContent ">
178+ < div class ="tab-pane fade show active " id ="installation " role ="tabpanel " aria-labelledby ="installation-tab ">
179+ < p > < strong > Sorry, this project is no longer maintained.</ strong > </ p >
180+ < h1 > grumble.js</ h1 >
181+ < p > Add a bubble to any element; configure its rotation on a 360 degree axis and define its distance from the centre of the element.</ p >
182+ < p > Bubble size adapts to contents - perfect when text is localised and size can not be determined up front.</ p >
183+ < h2 > Examples</ h2 >
184+ < p > < a href ="http://jamescryer.github.com/grumble.js/ "> grumble.js examples</ a > </ p >
185+ < h2 > Author</ h2 >
186+ < p > James Cryer / Huddle.com</ p >
187+ < h2 > Licence</ h2 >
188+ < p > Do what you like, just don't be an arsehole.</ p >
189+ </ div >
190+
191+ < div class ="tab-pane fade " id ="changelog " role ="tabpanel " aria-labelledby ="changelog-tab ">
192+ < ul id ="changelogList ">
193+ No changelog available.
194+ </ ul >
195+ </ div >
196+
197+ </ div >
198+
199+ < div class ="tags mb-2 mt-2 ">
200+
201+ </ div >
202+
203+ </ article >
204+
205+
206+ </ main >
207+ <!-- Sidebar -->
208+ < aside class ="col-md-4 p-0 ">
209+ < div class ="sidebar ">
210+ <!-- Owner Section -->
211+ < div class ="sidebar-item mb-4 ">
212+ < div class ="ad-unit ">
213+ < script async src ="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7089100907045419 "
214+ crossorigin ="anonymous "> </ script >
215+ <!-- CodehimBlog Sidebar -->
216+ < ins class ="adsbygoogle "
217+ style ="display:block "
218+ data-ad-client ="ca-pub-7089100907045419 "
219+ data-ad-slot ="8929986923 "
220+ data-ad-format ="auto "
221+ data-full-width-responsive ="true "> </ ins >
222+ < script >
223+ ( adsbygoogle = window . adsbygoogle || [ ] ) . push ( { } ) ;
224+ </ script >
225+ </ div >
226+ < div class ="d-flex align-items-center ">
227+ < img src ="https://avatars.githubusercontent.com/u/366068?v=4 " alt ="Owner Avatar " class ="rounded-circle me-2 owner-avatar ">
228+ < a href ="https://github.com/jamescryer " target ="_blank " id ="ownerName " class ="sidebar-link "> jamescryer</ a >
229+ </ div >
230+ </ div >
231+
232+ <!-- Metadata Section -->
233+ < div class ="sidebar-item mb-2 ">
234+ < div class ="metadata-item d-flex align-items-center ">
235+ < i class ="bi bi-calendar me-2 "> </ i >
236+ < strong > Created At:</ strong >
237+ < span id ="createdAt " class ="ms-1 "> July 13, 2011</ span >
238+ </ div >
239+ < div class ="metadata-item d-flex align-items-center mt-2 ">
240+ < i class ="bi bi-pencil-square me-2 "> </ i >
241+ < strong > Last Updated:</ strong >
242+ < span id ="updatedAt " class ="ms-1 "> July 8, 2024</ span >
243+ </ div >
244+ < div class ="metadata-item d-flex align-items-center mt-2 ">
245+ < i class ="bi bi-file-earmark-code me-2 "> </ i >
246+ < strong > Language:</ strong >
247+ < span id ="language " class ="ms-1 "> JavaScript</ span >
248+ </ div >
249+
250+ < div class ="metadata-item d-flex align-items-center mt-2 ">
251+ < i class ="bi bi-shield-check "> </ i >
252+ < strong > License:</ strong >
253+ < span id ="license " class ="ms-1 "> Unknown</ span >
254+ </ div >
255+ < a href ="http://jamescryer.github.com/grumble.js/ " target ="_blank " class ="btn btn-outline-dark btn-sm " id ="homepageBtn ">
256+ < i class ="bi bi-house-door me-2 "> </ i > Visit Homepage
257+ </ a >
258+
259+ </ div >
260+
261+ < div class ="sidebar-item mb-2 ">
262+ < li > No dependencies!</ li >
263+ </ div >
264+
265+ < div class ="sidebar-item ">
266+ < h5 class ="sidebar-title "> Contributors</ h5 >
267+ < ul class ="p-0 " id ="contributorsList ">
268+ < ul class ="list-group list-group-flush " id ="contributorsList "> < li class ="list-group-item d-flex align-items-center contributor-item "> < img src ="https://avatars.githubusercontent.com/u/736104?v=4 " alt ="laurentdebricon " class ="rounded-circle me-3 " style ="width: 40px; height: 40px; "> < div > < a href ="https://github.com/laurentdebricon " target ="_blank " class ="text-decoration-none fw-bold "> laurentdebricon</ a > < p class ="mb-0 text-muted small "> 4 contributions</ p > </ div > </ li > < li class ="list-group-item d-flex align-items-center contributor-item "> < img src ="https://avatars.githubusercontent.com/u/383817?v=4 " alt ="mkoryak " class ="rounded-circle me-3 " style ="width: 40px; height: 40px; "> < div > < a href ="https://github.com/mkoryak " target ="_blank " class ="text-decoration-none fw-bold "> mkoryak</ a > < p class ="mb-0 text-muted small "> 1 contributions</ p > </ div > </ li > < li class ="list-group-item d-flex align-items-center contributor-item "> < img src ="https://avatars.githubusercontent.com/u/1849585?v=4 " alt ="cissa " class ="rounded-circle me-3 " style ="width: 40px; height: 40px; "> < div > < a href ="https://github.com/cissa " target ="_blank " class ="text-decoration-none fw-bold "> cissa</ a > < p class ="mb-0 text-muted small "> 1 contributions</ p > </ div > </ li > </ ul >
269+ </ ul >
270+
271+ </ div >
272+
273+ < div class ="ad-unit ">
274+ < script async src ="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7089100907045419 "
275+ crossorigin ="anonymous "> </ script >
276+ <!-- CodehimBlog Skyscrapper -->
277+ < ins class ="adsbygoogle "
278+ style ="display:block "
279+ data-ad-client ="ca-pub-7089100907045419 "
280+ data-ad-slot ="7469565592 "
281+ data-ad-format ="auto "
282+ data-full-width-responsive ="true "> </ ins >
283+ < script >
284+ ( adsbygoogle = window . adsbygoogle || [ ] ) . push ( { } ) ;
285+ </ script >
286+ </ div >
287+
288+ </ div >
289+ </ aside >
290+ </ div >
291+ </ div >
292+ <!-- Footer -->
293+ < footer class ="bg-dark text-white text-center py-3 page-footer ">
294+ < div class ="container ">
295+ < p class ="mb-2 "> © 2024 CodehimBlog - Powered by GitHub</ p >
296+ < nav >
297+ < ul class ="list-inline mb-0 ">
298+ < li class ="list-inline-item ">
299+ < a href ="/privacy-policy.html " class ="footer-link "> Privacy Policy</ a >
300+ </ li >
301+ < li class ="list-inline-item ">
302+ < span class ="text-white "> |</ span >
303+ </ li >
304+ < li class ="list-inline-item ">
305+ < a href ="/terms-and-conditions.html " class ="footer-link "> Terms and Conditions</ a >
306+ </ li >
307+ </ ul >
308+ </ nav >
309+ </ div >
310+ </ footer >
311+ <!-- Bootstrap Bundle JS -->
312+ < script src ="
https://cdn.jsdelivr.net/npm/[email protected] /dist/js/bootstrap.bundle.min.js "
> </ script > 313+ < script src ="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js "> </ script >
314+ < script src ="/js/script.js "> </ script >
315+ <!-- Google tag (gtag.js) -->
316+ < script async src ="https://www.googletagmanager.com/gtag/js?id=G-FG2ZX76XGT "> </ script >
317+ < script >
318+ window . dataLayer = window . dataLayer || [ ] ;
319+ function gtag ( ) { dataLayer . push ( arguments ) ; }
320+ gtag ( 'js' , new Date ( ) ) ;
321+
322+ gtag ( 'config' , 'G-FG2ZX76XGT' ) ;
323+ </ script >
324+ </ body >
325+ </ html >
0 commit comments