Флексбокс уверенно шагает по планете — наступает эпоха комфортной веб-разработки. В этой статье я расскажу о необычном способе верстки всего флексбоксами, и поделюсь готовым кодом для верстки таблиц и текста флексбоксами.

Три метода позиционирования:


image

1) Флексбокс по умолчанию. Вместо обычного классического потока можно использовать флексбокс-форматирование. Результат будет аналогичный, кроме возможности float-обтекания, без которого можно вполне обойтись.

2) Абсолютное или фиксированное расположение относительно родительского контейнера или окна. Для того чтобы в любом контейнере можно было так позиционировать элементы — для каждого элемента по умолчанию position:relative.

3) Смещение относительно своего положения, и трансформации. Смещение через position:relative не анимируется, поэтому лучше использовать translate.

Графическая композиция — это комбинация этих трех методов + эффекты, прозрачность и z-index.

*
{
position:relative;
display:flex;
}

title,script,style
{
display:none;  //Свойство display принимает только два значения — flex или ничего
} 

Вот и всё! Это очень простой фреймворк, но он значительно упрощает верстку.

Верстка таблиц флексбоксами


Флексбокс — это способ позиционирования элементов внутри блока. Таблицы тоже могут быть свёрстаны флексбоксами потому что их структура — элементы внутри блоков.

Вёрстка традиционных html-таблиц значительно сложней чем верстка флексбоксов.

Для флексбокс-таблиц типа ОС, ООО, ООН, ОСО может быть достаточно всего пяти кнопок управления:

image

> Код редактора таблиц, 700 строк

Верстка текста флексбоксами


Обычный текст это тоже элементы внутри блока, поэтому текст вполне возможно верстать флексбоксами. Для этого надо каждое слово поместить в собственный span — абзац это div в котором span-слова. Каждое span-слово может иметь собственные id, class и data. При редактировании span-слова, каждая его буква временно помещается в собственный span.

Так удобнее работать с текстом на сенсорном экране.

image

> Код редактора текста, 600 строк

При таком способе сокращается количество CSS-cвойств, необходимых для оформления текста, до десяти:

  1. color
  2. direction
  3. font-family
  4. font-style
  5. font-size
  6. text-decoration
  7. text-transform
  8. text-shadow
  9. text-overflow: ellipsis;
  10. white-space: nowrap;

Мой нанофреймворк


Я инженер-программист, в программирование пришел из лингвистики. Изучив языки JS CSS HTML, я выделил в каждом простое ядро-подмножество. Это мой «супер строгий режим» — максимальный минимализм.

Веб-программирование прекрасно тем что оно в десять раз проще обычного классического, например на С++Qt. Выделив главное и отбросив избыточное, я уменьшил сложность еще в десять раз.

Например мне достаточно десяти тегов языка HTML внутри body:

  1. span
  2. div
  3. img
  4. audio
  5. video
  6. svg
  7. canvas
  8. iframe
  9. form
  10. input

— это семантические примитивы, дополнительная семантика через WAI-ARIA.

Я больше ориентируюсь на простую кросс-платформенную разработку приложений на веб-языках.

Мой фреймворк уменьшает сложность, а не увеличивает её как обычные фреймворки. Моё понимание принципа KISS — программирование должно быть простым и понятным даже детям 12+. Моя задача — максимально снизить порог вхождения в программирование.

image
Поделиться с друзьями
-->

Комментарии (31)


  1. kafeman
    20.01.2017 18:04
    +2

    мне достаточно десяти тегов языка HTML внутри body
    Тогда у вас не будет семантики, к чему сейчас все так стремятся.


    1. maxminimus
      20.01.2017 18:21

      спасибо, добавил


      1. kafeman
        20.01.2017 18:31
        +2

        1. maxminimus
          20.01.2017 18:39
          -6

          Мой принцип максимально простой — если машина хочет понимать семантику элементов документа, то пусть учится читать имена классов, которые я старательно придумываю и пишу понятно по русски, например: class='заголовок_документа'

          Зачем машине это делать? — не понятно.
          Для машины я специально отдельно пишу то что добавил выше

          Машины пусть страдают, а не разработчики


          1. lair
            20.01.2017 18:48
            +3

            Зачем машине это делать?

            Например, чтобы корректно зачитывать страницу вслух.


            1. maxminimus
              20.01.2017 19:03
              -1

              Да, забыл я про инвалидов, стыдно даже как-то получается.
              В принципе я не запрещаю использовать доп теги — я выделил минимальное ядро

              Я больше ориентируюсь не на сайтостроение, а на кроссплатформенную клиент-серверную разработку приложений, например для апстора.


              1. lair
                20.01.2017 22:26
                +1

                а на кроссплатформенную клиент-серверную разработку приложений, например для апстора.

                … и с каких пор она стала веб-разработкой? А то вы пишете о "комфортной веб-разработке" и "веб-программировании" в хабе "Разработка веб-сайтов".


                Ну и да, если вы думаете, что в приложениях для апп-стора озвучка не нужна — вы глубоко ошибаетесь.


          1. Mingun
            21.01.2017 12:12
            +2

            Вы вообще в курсе, что названия классов и идентификаторов могут содержать только латинские буквы (A-Z, a-z), цифры (0-9), дефис (-) и знак подчёркивания (_)? Зачем вы учите неправильно?


            1. andreymal
              21.01.2017 19:52
              +1

              Вы не правы и даёте ссылки на устаревшую информацию. Согласно стандарту на идентификаторы не накладывается никаких ограничений, кроме отсутствия пробелов. С классами аналогично.


              1. Mingun
                21.01.2017 20:07

                Гм. Ваша правда, был не в курсе этой особенности. Тем не менее, существуют лучшие и общепринятые практики наименования идентификаторов и классов, так что многие согласятся с тем, что ничего кроме вышеперечисленных символов идентификаторы с классами содержать не должны. Конечно, всегда есть исключения из правил, но это не тот случай.


              1. psFitz
                23.01.2017 10:54

                редактор_строки.выделенное_слово.textContent===' '

                Это какой-то ужас, про стандарты не слышали?
                Никому не пожелал бы поддерживать код после вас.


  1. RubaXa
    20.01.2017 18:08
    +4

    Очень понравился фреймврок, жаль нет ссылки гитхаб :(


  1. chill84
    20.01.2017 18:14
    +6

    Хороший тамада и конкурсы интересные


  1. sets
    20.01.2017 18:16
    +2

    Мне кажется, я недавно видел эту статью с каким-то другим набором комментариев.


    1. ZoomLS
      20.01.2017 18:43

      И меня. Помню было обсуждение таблиц.


    1. maxminimus
      20.01.2017 18:48
      -1

      Произошла техническая ошибка. Спасибо. Продолжайте вести наблюдение


  1. andreymal
    20.01.2017 18:51

    А табличка-то с жестко прописанными размерами (пусть и в процентах) и под содержимое сама не подстваивается, бесполезна такая табличка


    1. maxminimus
      20.01.2017 18:57
      -1

      Мне кажется эта таблица пригодна для большинства табличных случаев в жизни. Это демка. Можно усложнить при желании.


  1. saggid
    20.01.2017 19:57
    +3

    position:relative на все элементы? ну вообще-то это такое свойство, которое надо очень тонко подставлять, иначе у вас потом не получится никаким образом применить какому-то объекту position:absolute по отношению к какую-то конкретному блоку, который вам нужен. Что очень часто используется при вёрстке.


    Мне кажется, лучше не ломать вёрстку таким образом.


  1. lain8dono
    20.01.2017 20:08
    +3

    Мне одному кажется, что для вставки таблиц лучше использовать <table>? Например вот так: https://jsfiddle.net/uf4uefst/


    Программинг в вебе не проще. Порог вхождения ниже.


  1. saggid
    20.01.2017 20:47
    +1

    Посмотрел ваш исходный код для работы с таблицами. Советую почитать книгу Выразительный JavaScript, думаю, много полезного для себя почерпнёте)


  1. raveclassic
    20.01.2017 21:23
    +2

    Ну, собственно, с прошлой версии вопрос не изменился — а статья-то о чем вообще?


  1. Kanumowa
    20.01.2017 21:34

    Название статьи про флексы, потом про фреймворк и минимальный набор тегов, имхо название статьи должно быть- минимальные знания для верстки. Автору посоветую послушать подкаст: Вебстандарты.


  1. PapaBubaDiop
    20.01.2017 21:54
    +2

    Треугольник — символ жесткой конструкции. Четырехугольная же ячейка легко меняет форму.

    Ни разу не про верстку, это про картинку-заставку.


  1. k12th
    20.01.2017 22:24

    Разметку, состоящую из одних дивов и спанов, читать очень трудно. Есть даже шуточный диагноз «дивитоз». Как лингвисту, вам должно быть понятно, почему мы пишем на HTML/CSS/JS, а не на ассемблере.


  1. sashabeep
    20.01.2017 23:55
    +1

    Опять 25? Эта статья уже была, но автору не понравились комменты?


  1. popov654
    21.01.2017 07:50
    +1

    Не согласен с подходом автора. Уменьшение числа необходимых тегов не делает разметку красивее или читабельнее. Порог вхождения действительно становится ниже, но возможности сужаются.

    >Для этого надо каждое слово поместить в собственный span

    И получаем чудовищную нагрузку на слабые устройства/старые браузеры.

    >для каждого элемента по умолчанию position:relative

    Уже писали выше меня.

    В целом я имел удовольствие работать с сайтом, где применялась вёрстка на display:flex там, где она была уместна. Но в итоге ломалась совместимость, и приходилось добавлять альтернативные методы позиционирования (хотя бы display:inline-block), например, для старых Опер.

    Насчёт простых таблиц — они ничуть не хуже делаются через inline-block или float. А ещё есть display:table-cell, который иногда тоже даёт неплохие результаты.


    1. Extremum
      21.01.2017 09:12

      При использовании миксинов bourbon в sass, flex становится практически универсальным.


  1. Alex_T666
    21.01.2017 19:37

    Когда я вижу звездочку моя рука тянется к пистолету.


    1. psFitz
      23.01.2017 17:51

      Да ладно)
      Понятно, что если всем поставить display: block — это печаль.
      Но box-sizing указать напрмиер, всегда надо.


  1. akzhan
    21.01.2017 22:35
    +3

    Отказ от таблиц, потому что немодно.


    Я пока продолжу старым способом.