GithubHelp home page GithubHelp logo

gerhobbelt / montmartre Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 5 KB

Presentation framework inspired by (and borrowing a thing or two from) RevealJS from Hakim el Hattab. Use Montmartre whether your presentation is testing the classic boundaries of the presentation paradigm or you want your slide transitions to be controlled even when some of your slides contain complex logic and/or styling.

License: MIT License

montmartre's Introduction

Montmartre

Presentation framework inspired by (and borrowing a thing or two, three, four, five from) RevealJS from Hakim el Hattab.

  • Use Montmartre whether your presentation is testing the classic boundaries of the presentation paradigm or you want your slide transitions to be controlled even when some of your slides contain complex logic and/or styling.

  • Use Montmartre when your creation is sailing the ambiguous seas between a presentation and website, where one can reasonably argue that some material in there is not really a slide any more, but rather something else, i.e. a full-blown web page or form/control surface.

Montmartre uses BeatMaster as a fundament.

What does using this bugger solve for me?

     When the sleigh is heavy
     and the timber wolves are getting bold,
     you look at your companions
     and test the water of their friendship
     with your toe.
     They significantly edge
     closer to the gold.
     Each man has his price, Bob,
     and yours was pretty low.

     Roger Waters (in: Too much rope)

Working on and with RevealJS (and several other presentation frameworks) uncovered a few hard to tackle issues:

  • for a large deck, the CSS3 animations become a big bother due to artifacts in the overview mode.

    Current Chrome still semi-randomly 'hides' many of your slides when the overview zooms out significantly, say to a width of a slide or 7. This problem is extant since 2011 or thereabouts already and still isn't fixed in Canary.

    Do note that this is a browser (possibly in conjunction with the graphics card driver) issue, not a RevealJS issue: this issue pops up on many sufficiently complex pages with CSS3 animations.

    I have not been able to find a decent fix for this which consistently removes the issue.

    All we are left with are hacks, work-arounds and other half-baked nasties. As far as I can tell by now, the issue is due to rear its ugly head once you have CSS3 3D transforms on nested (parent + child / children) DOM elements.

  • also the CSS3 animations depend in very subtle ways on when you access the DOM to deliver the size or offset of some element in your code, i.e. on the exact moment your code triggers a repaint: when your own code does this sort of thing (often implicitly thanks to some jQuery plugin or other) the animations might not happen!

    This is not a survivable situation when your presentation happens to be (part of) a complex application where there's a strong demand for treating the various application components as 'black boxes' in order to keep the entire software maintainable.

    My answer to this conundrum is:

    • on the one side, to use a BeatMaster-like framework and require all components used to facilitate the desirable separation of 'repaint-triggering DOM inquiries' (such as $element.offset()) and 'DOM changing activity' (e.g. $el.html(html_string)) -- which may sound ridiculous but is a major factor to assist achieving good UI/UX performance for complex web apps anywhere, and

    • on the other hand to fall back to JavaScript-driven animations rather than using the CSS3 animation feature, even while browsers may optimize the latter by using hardware acceleration. (This is similar to using direct CSS3 versus a JavaScript-centric animation framework like GSAP.)

  • as I wanted to keep the slides' JavaScript code manageable through using RequireJS and related tooling, it clashed with the lazyloader in RevealJS, so I modified RevealJS to be based on RequireJS instead.

    This is a continuation of that work, which is more suitable for 'large applications development'.

[*] Yes, yes, I hear y'all and the slaps of facepalm all around...

Forget about the Laws of Presenting for a second here and bear with me: I was re-purposing the system for other means. The introduction above mentions 'testing the boundaries of the paradigm' for a reason ;-)

Inspiration / Other Presentation Tools

montmartre's People

Contributors

gerhobbelt avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.