Did a quick pass of the docs, and the grid system seems to be opinionated/unconfigurable w/r/t changing column ratios as device width scales. Everything is 100% width at mobile size, and once you pass that breakpoint, there's no adjustment mechanism at any other size.
That's a big step backwards from bootstrap's col-breakpoint-width, IMO.
It also fails to address nesting columns within each other.
This feels more like a rudimentary grid system that happens to have some button styles, rather than a "framework".
If you want a bootstrap-like grid experience with flexbox and sans the bloat, I've had a decent experience with this: http://flexboxgrid.com/
Foundation Sites (F6) also comes with flexbox grid btw. It's optional, you can switch it on in the sass settings and use the same html markup as before.
I haven't found a way to handle <aside> with Flexbox.
Intended behaviour is that you're writing paragraphs of <p>, then a <p> that you wish to annotate, then the <aside>, then some more <p>.
The aside should be, well, on the side. In the margin.
So far, with floating <aside> you need to have the <aside> before the <p> that it belongs to, which is semantically false.
I had hopes with Flexbox to finally solve this issue, but it doesn't look possible, because if you imagine it as a big grid of two columns, the text would have to flow through only the left column, while only the <aside> would have to be pushed to the right column.
If you use margin: auto on an element inside a flex container (for example margin-left:auto to float right), you can position a floated element in correct content order.
There's nothing forcing you. The code is right there in the repo. You're welcome to download it via Github's download button, cloning via git, or NPM. NPM is a very helpful option because it's the fastest and easiest way to get it into my project and not have to copy and paste stuff around either from my OS UI or command line. Just `npm install` then possibly writing a line in a gulpfile to copy the css where I need it if using unaltered.
In this particular case it's because Bulma is using node-sass as a precompiler. I'd wager a guess this is true of most CSS packages that you're finding on NPM. Additionally, it's more pleasant to use than Bower (in my humble opinion).
Just as popular JavaScript libraries spawn many superfluous forks and microframeworks, the landing of Flexbox has resulted in dozens of these CSS 'frameworks' and grid systems:
I haven't bothered to sit down and actually assess whether these flexbox grids actually differ from each other (my gut says that it's not possible for them to differ too much). My gut also tells me that there has to be an apex, an optimal Flex-based grid from which there can be no improvement.
I think a big part of the problem of why websites all look a bit similar is because they're all developed using Bootstrap, Bourbon or Foundation, and apparently on the rare occasion where a front-end framework is not used, an offshoot or "heavily-inspired by" alternative is used instead.
Nobody is thinking about what /could/ be, but rather what can be done in the least time to produce the best approximation of a contemporary website. Nobody wants to push the boundaries. Maybe we've reached an optimal paradigm for the design and layout of websites. I don't think so.
I always implement my own CSS, mainly because I really don't like carrying frameworks around. If I need all of a framework's features, I'll consider using it. Since I never need all of a framework's freatures, that never happens. If I ever do need a full front-end framework's worth of features, here's a framework that seems flexible, modular and solid to me:
http://www.basscss.com/
IMO the optimal framework would be Google's Angular-Material, except for the fact that it is massively coupled with AngularJS for no reason. The assigning of layouts to row/columns, and dividing the space within are done very easily. Someone would be wise to use their system as the basis of a great CSS-only framework.
I've looked at this for all of three minutes, but it appears that it's basically an Angular version of Masonry with a dash of flexbox.
Masonry is something I'd love to implement in pure CSS, but it's not really possible. You need to know the heights and then be able to position your grid items absolutely, it's not something that can be done dynamically without using JavaScript.
You can use CSS3 Columns, but then your content is going to be displayed in a counter-intuitive order. It works great for a photo grid or Pinterest-style site, but most cases require some kind of intuitive display order. I am especially thinking of e-commerce, where it's imperative to offer the end-user the ability to sort products alphabetically, and search results in terms of relevance or whatever.
Angular Material doesn't suffer from any of those issues because it is based on flexbox. It works without Javascript, only it hasn't been written to do that. There are two issues:
- first, the elements being selected are all angular directives like `md-content`, `md-button` -- not a dependency on Javascript but clearly targeting a JS app
- a second theme stylesheet is dynamically generated and injected into the head
None of these are strict requirements -- I've extracted the stylesheet and repurposed it for my own projects.
Before bootstrap and the like came along, all of us developers were creating web apps just as we do now. They just looked like crap! The CSS frameworks have evolved everything form "ugly" to "boring" which I guess is somewhat of an improvement!
This can be beautiful, but I'd need SOME KIND of back-compatible functionality, even if it's just to tell old IE users "hey you're totally missing on stuff, check this out"
I've been working on a toy CRUD app in Elm, after hearing that Richard Feldman wants to 'make the backend team jealous!' and wanting to see why I should be jealous.
Having previously built some medium-sized apps with bootstrap and material, this is something I'd like to try for my next project. It looks simpler than either of those other two, and has enough other stuff to make it usable out of the box, unlike something like skeleton which was too minimalist for me to use easily.
I haven't used flexbox ever myself. Could someone summarize why flexbox makes this framework effective?
Flexbox layouts "work like you think they work" for the most part, which is really nice, and far better than their predecessors.
The 3 "holy shit we needed this before!" features IMO are: vertical centering, height matching (if you have 3 columns in a row, and one has more text, all 3 columns will have the same bottom position), and the ability to evenly distribute objects across space.
"Could someone summarize why flexbox makes this framework effective?"
Ever tried to center something vertically? Flex box does it easily. Is also makes it easier to do responsive layouts, with much simpler markup and styling.
IE 10 and 11 are supported with browser prefixes, so you're only losing out on 8 and 9, which constitute ~2 of all internet traffic. Some non-trivial percentage of IE 8 and 9 users have them installed only for specific websites and internal corporate sites.
There just can't be that many people browsing the web with IE 8 and 9. Additionally, we need to draw the line somewhere, especially given how much easier flexbox makes front-end styling.
IE 8, IE 9 and IE 10 are still more widely used than Win10 with its Edge browser.
Don't use flexbox for your start page, especially if you want to do business (SaaS). It will be completely broken in IE8/9 and look like shit. Corporate managers will close your website instantly.
That's a big step backwards from bootstrap's col-breakpoint-width, IMO.
It also fails to address nesting columns within each other.
This feels more like a rudimentary grid system that happens to have some button styles, rather than a "framework".
If you want a bootstrap-like grid experience with flexbox and sans the bloat, I've had a decent experience with this: http://flexboxgrid.com/