├── .gitignore ├── docs ├── img │ ├── css.png │ └── imagem.jpeg ├── font │ ├── fontello.eot │ ├── fontello.ttf │ ├── fontello.woff │ ├── fontello.woff2 │ └── fontello.svg ├── js │ ├── certificado.png │ └── highlight.min.js ├── css │ ├── github.min.css │ ├── fontello.css │ ├── docs.css │ ├── organico.css │ └── normalize.css └── index.html ├── README.md ├── base.html ├── package.json └── css ├── organico.min.css ├── organico.css └── normalize.css /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /docs/img/css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/estevanmaito/organico/HEAD/docs/img/css.png -------------------------------------------------------------------------------- /docs/img/imagem.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/estevanmaito/organico/HEAD/docs/img/imagem.jpeg -------------------------------------------------------------------------------- /docs/font/fontello.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/estevanmaito/organico/HEAD/docs/font/fontello.eot -------------------------------------------------------------------------------- /docs/font/fontello.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/estevanmaito/organico/HEAD/docs/font/fontello.ttf -------------------------------------------------------------------------------- /docs/font/fontello.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/estevanmaito/organico/HEAD/docs/font/fontello.woff -------------------------------------------------------------------------------- /docs/js/certificado.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/estevanmaito/organico/HEAD/docs/js/certificado.png -------------------------------------------------------------------------------- /docs/font/fontello.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/estevanmaito/organico/HEAD/docs/font/fontello.woff2 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Orgânico CSS 2 | 3 | ## Um framework CSS 100% brasileiro 4 | 5 | ### Leve, natural e inobstrusivo. 6 | 7 | Inicialmente um arquivo CSS para o [Curso de Framework CSS](http://cursocss.com.br), que acabei incorporando ao desenvolvimento dos meus sites e que pode ser útil para mais pessoas que procurem: 8 | 9 | - Uma ferramenta que não imponha suas opiniões; 10 | - Escrever menos ```!important``` e mais estilo; 11 | - Entender a estrutura através de classes idênticas à linguagem falada; 12 | - Uma ferramenta leve, que não impacte negativamente a performance em redes limitadas; 13 | - Responsividade, mobile-first e flexbox; 14 | - Sair do submundo do suporte ao IE8 e 9. 15 | 16 | ## Utilização 17 | 18 | EM BREVE -------------------------------------------------------------------------------- /base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |Esta é a estrutura mínima para você começar com o Orgânico CSS!
16 | Documentação 17 |Leve, natural e inobstrusivo.
25 | Download 26 | 27 | CURSO 28 | Aprenda a criar um framework 29 | Domine layouts responsivos 30 | 31 |4,8kb minificado, perfeito para mobile
46 |Linguagem semântica, como no português escrito.
55 |Não se preocupe em sobrescrever estilos.
64 |Uma ferramenta para facilitar a criação de layouts com o objetivo de interferir o mínimo possível no layout, dando flexibilidade ao desenvolvedor (menos estilos, menor a necessidade de sobrescrever regras), além de semântica idêntica ao português falado (quatro colunas e já temos um grid!).
Se você está começando com CSS e procura por um projeto de fácil compreensão e em português ou quer apenas um framework que não fique no seu caminho te obrigando a escrever mais !important do que estilos propriamente ditos, fique conosco!
css ao seu projeto.head do seu html.<link rel="stylesheet" href="css/normalize.css">
85 | <link rel="stylesheet" href="css/organico.min.css">
86 | O grid responsivo é composto por 12 colunas que se adaptam ao tamanho da janela ou dispositivo.
96 |.linha) devem ser colocadas dentro de um container (.container) para alinhamento apropriado..coluna ou .colunas) que devem ser filhas imediatas de linhas (.linha).uma a doze) e o termo apropriado de acordo com a quantidade, coluna ou colunas.<div class="linha">
166 | <div class="uma coluna">UMA</div>
167 | <div class="onze colunas">ONZE</div>
168 | </div>
169 | <div class="linha">
170 | <div class="duas colunas">DUAS</div>
171 | <div class="dez colunas">DEZ</div>
172 | </div>
173 | <div class="linha">
174 | <div class="tres colunas">TRÊS</div>
175 | <div class="nove colunas">NOVE</div>
176 | </div>
177 | ...
178 | <div class="linha">
179 | <div class="quatro colunas">QUATRO</div>
180 | <div class="quatro colunas">QUATRO</div>
181 | <div class="quatro colunas">QUATRO</div>
182 | </div>
183 | Cabeçalhos são identificados pelo respectivo elemento padrão. Nenhuma classe é necessária. O tamanho de fonte padrão (font-size) para o corpo do texto é de 16px, com altura de linha (line-height) de 1.6.
Parágrafo em negrito com itálico, um pouco de sublinhado e marcação.
198 |Pra finalizar, um link.
199 |<h1>Tipografia</h1>
204 | <h1>Cabeçalho 1</h1>
205 | <h2>Cabeçalho 2</h2>
206 | <h3>Cabeçalho 3</h3>
207 | <h4>Cabeçalho 4</h4>
208 | <h5>Cabeçalho 5</h5>
209 | <h6>Cabeçalho 6</h6>
210 | <p>Parágrafo em <strong>negrito</strong> com <em>itálico</em>, um pouco de <u>sublinhado</u> e <mark>marcação</mark>.</p>
211 | <p>Pra finalizar, um <a href="#">link</a>.</p>
212 | Botão com o mínimo de estilo, criado simplesmente inserindo um elemento que resulte em um botão, ou adicionando a classe .botao a um link (a).
<button>Button</button>
230 | <input type="button" value="Input">
231 | <input type="submit" value="Submit">
232 | <a href="#" class="botao">Link</a>
233 | Botão em contraste com a cor padrão, criado ao adicionar as classes .botao e .destacado aos elementos que resultem em botões.
<button class="botao destacado">Button</button>
250 | <input type="button" value="Input" class="botao destacado">
251 | <input type="submit" value="Submit" class="botao destacado">
252 | <a href="#" class="botao destacado">Link</a>
253 | Dentro ou fora de um formulário (form), os elementos input dos tipos email, number, search, text, tel, url e password, textarea, select e label recebem estilos sem a necessidade de adicionar classes.
Para que o elemento em questão ocupe a largura total da coluna em que está inserido, pode-se utilizar a classe utilitária .u-width-100, que faz com que o elemento ocupe 100% da largura.
<form>
294 | <div class="linha">
295 | <div class="seis colunas">
296 | <label for="nome">Nome</label>
297 | <input type="text" id="nome" class="u-width-100">
298 | </div>
299 | <div class="seis colunas">
300 | <label for="assunto">Assunto</label>
301 | <select id="assunto" class="u-width-100">
302 | <option value="1">Opção 1</option>
303 | <option value="2">Opção 2</option>
304 | <option value="3">Opção 3</option>
305 | </select>
306 | </div>
307 | </div>
308 | <div class="linha">
309 | <div class="doze colunas">
310 | <label for="mensagem">Mensagem</label>
311 | <textarea id="mensagem" rows="10" class="u-width-100"></textarea>
312 | </div>
313 | </div>
314 | <label>
315 | <input type="checkbox"> Aceitar os termos
316 | </label>
317 | <input type="submit" value="Enviar" class="botao destacado">
318 | </form>
319 | Os elementos que compõem listas são estilizados diretamente, não havendo assim a necessidade da adição de classes. Ainda, é possível inserir listas dentro de listas.
326 |<ul>
359 | <li>Listas sem ordem tem estilo básico</li>
360 | <li>
361 | E podem ter até um nível interno
362 | <ul>
363 | <li>Lorem ipsum</li>
364 | <li>Dolor sit amet</li>
365 | </ul>
366 | </li>
367 | <li>Lorem ipsum dolor</li>
368 | </ul>
369 | Para facilitar a apresentação de pequenos trechos de código, estilos são aplicados aos elementos code e pre. Havendo necessidade de se apresentar longos trechos de código, recomenda-se o uso de uma biblioteca apropriada para a formatação, como highlight.js, utilizada nos exemplos por aqui.
Código em linha assim
.alguma-classe {
379 | background-color: blue;
380 | }
381 | <p>Código em linha <code>assim</code></p>
387 | <pre><code>.alguma-classe {
388 | background-color: blue;
389 | }</code></pre>
390 | Uma tabela é estilizada diretamente também, evitando o uso de classes. Para atingir o resultado de largura total, é aconselhável o uso da classe utilitária .u-width-100.
| Nome | 402 |Idade | 403 |Sistema | 404 |Cidade | 405 |
|---|---|---|---|
| Estevan Maito | 410 |24 | 411 |Linux | 412 |Caxias do Sul | 413 |
| João Ninguém | 416 |30 | 417 |Windows | 418 |Lugar Algum | 419 |
<table class="u-width-100">
428 | <thead>
429 | <tr>
430 | <th>Nome</th>
431 | <th>Idade</th>
432 | <th>Sistema</th>
433 | <th>Cidade</th>
434 | </tr>
435 | </thead>
436 | <tbody>
437 | <tr>
438 | <td>Bill Jobs</td>
439 | <td>24</td>
440 | <td>Linux</td>
441 | <td>Oiapoque</td>
442 | </tr>
443 | <tr>
444 | <td>João Ninguém</td>
445 | <td>30</td>
446 | <td>Windows</td>
447 | <td>Lugar Algum</td>
448 | </tr>
449 | </tbody>
450 | </table>
451 | Conjunto de classes utilizadas com frequência em diversos elementos.
458 |.u-width-100 - Expande um elemento a 100% da largura do elemento em que ele está contido. Comum em formulários e imagens.É possível tornar uma imagem responsiva adicionando a classe .u-width-100 a ela.
467 |
470 | <div class="linha">
478 | <div class="seis colunas">
479 | <img src="img/exemplo1.jpg" class="u-width-100">
480 | </div>
481 | <div class="seis colunas">
482 | <img src="img/exemplo2.jpg" class="u-width-100">
483 | </div>
484 | </div>
485 |
510 |
511 |
512 |
513 |
514 |
515 |
541 |
542 |
543 |
--------------------------------------------------------------------------------
/docs/js/highlight.min.js:
--------------------------------------------------------------------------------
1 | /*! highlight.js v9.7.0 | BSD3 License | git.io/hljslicense */
2 | !function(e){var t="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):t&&(t.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return t.hljs}))}(function(e){function t(e){return e.replace(/[&<>]/gm,function(e){return S[e]})}function r(e){return e.nodeName.toLowerCase()}function a(e,t){var r=e&&e.exec(t);return r&&0===r.index}function n(e){return C.test(e)}function i(e){var t,r,a,i,s=e.className+" ";if(s+=e.parentNode?e.parentNode.className:"",r=E.exec(s))return y(r[1])?r[1]:"no-highlight";for(s=s.split(/\s+/),t=0,a=s.length;a>t;t++)if(i=s[t],n(i)||y(i))return i}function s(e,t){var r,a={};for(r in e)a[r]=e[r];if(t)for(r in t)a[r]=t[r];return a}function c(e){var t=[];return function a(e,n){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?n+=i.nodeValue.length:1===i.nodeType&&(t.push({event:"start",offset:n,node:i}),n=a(i,n),r(i).match(/br|hr|img|input/)||t.push({event:"stop",offset:n,node:i}));return n}(e,0),t}function o(e,a,n){function i(){return e.length&&a.length?e[0].offset!==a[0].offset?e[0].offset"}function c(e){u+=""+r(e)+">"}function o(e){("start"===e.event?s:c)(e.node)}for(var l=0,u="",d=[];e.length||a.length;){var b=i();if(u+=t(n.substr(l,b[0].offset-l)),l=b[0].offset,b===e){d.reverse().forEach(c);do o(b.splice(0,1)[0]),b=i();while(b===e&&b.length&&b[0].offset===l);d.reverse().forEach(s)}else"start"===b[0].event?d.push(b[0].node):d.pop(),o(b.splice(0,1)[0])}return u+t(n.substr(l))}function l(e){function t(e){return e&&e.source||e}function r(r,a){return new RegExp(t(r),"m"+(e.cI?"i":"")+(a?"g":""))}function a(n,i){if(!n.compiled){if(n.compiled=!0,n.k=n.k||n.bK,n.k){var c={},o=function(t,r){e.cI&&(r=r.toLowerCase()),r.split(" ").forEach(function(e){var r=e.split("|");c[r[0]]=[t,r[1]?Number(r[1]):1]})};"string"==typeof n.k?o("keyword",n.k):N(n.k).forEach(function(e){o(e,n.k[e])}),n.k=c}n.lR=r(n.l||/\w+/,!0),i&&(n.bK&&(n.b="\\b("+n.bK.split(" ").join("|")+")\\b"),n.b||(n.b=/\B|\b/),n.bR=r(n.b),n.e||n.eW||(n.e=/\B|\b/),n.e&&(n.eR=r(n.e)),n.tE=t(n.e)||"",n.eW&&i.tE&&(n.tE+=(n.e?"|":"")+i.tE)),n.i&&(n.iR=r(n.i)),null==n.r&&(n.r=1),n.c||(n.c=[]);var l=[];n.c.forEach(function(e){e.v?e.v.forEach(function(t){l.push(s(e,t))}):l.push("self"===e?n:e)}),n.c=l,n.c.forEach(function(e){a(e,n)}),n.starts&&a(n.starts,i);var u=n.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([n.tE,n.i]).map(t).filter(Boolean);n.t=u.length?r(u.join("|"),!0):{exec:function(){return null}}}}a(e)}function u(e,r,n,i){function s(e,t){var r,n;for(r=0,n=t.c.length;n>r;r++)if(a(t.c[r].bR,e))return t.c[r]}function c(e,t){if(a(e.eR,t)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?c(e.parent,t):void 0}function o(e,t){return!n&&a(t.iR,e)}function b(e,t){var r=v.cI?t[0].toLowerCase():t[0];return e.k.hasOwnProperty(r)&&e.k[r]}function p(e,t,r,a){var n=a?"":R.classPrefix,i='',i+t+s}function m(){var e,r,a,n;if(!N.k)return t(E);for(n="",r=0,N.lR.lastIndex=0,a=N.lR.exec(E);a;)n+=t(E.substr(r,a.index-r)),e=b(N,a),e?(M+=e[1],n+=p(e[0],t(a[0]))):n+=t(a[0]),r=N.lR.lastIndex,a=N.lR.exec(E);return n+t(E.substr(r))}function f(){var e="string"==typeof N.sL;if(e&&!k[N.sL])return t(E);var r=e?u(N.sL,E,!0,x[N.sL]):d(E,N.sL.length?N.sL:void 0);return N.r>0&&(M+=r.r),e&&(x[N.sL]=r.top),p(r.language,r.value,!1,!0)}function g(){C+=null!=N.sL?f():m(),E=""}function _(e){C+=e.cN?p(e.cN,"",!0):"",N=Object.create(e,{parent:{value:N}})}function h(e,t){if(E+=e,null==t)return g(),0;var r=s(t,N);if(r)return r.skip?E+=t:(r.eB&&(E+=t),g(),r.rB||r.eB||(E=t)),_(r,t),r.rB?0:t.length;var a=c(N,t);if(a){var n=N;n.skip?E+=t:(n.rE||n.eE||(E+=t),g(),n.eE&&(E=t));do N.cN&&(C+=B),N.skip||(M+=N.r),N=N.parent;while(N!==a.parent);return a.starts&&_(a.starts,""),n.rE?0:t.length}if(o(t,N))throw new Error('Illegal lexeme "'+t+'" for mode "'+(N.cN||"