Континуум Q использование единиц измерения q в CSS


Содержание материала:

Единицы измерения CSS

Единицы измерения CSS используются для указания величины в различных свойствах. Они делятся на абсолютные и относительные.

Абсолютные единицы

К абсолютным единицам измерения относятся сантиметры (cm), миллиметры (mm) и дюймы (in). Не смотря на то, что они предназначены для одинакового отображения элементов на веб-странице, браузер не всегда может точно вычислить физический размер дисплея или монитора, поэтому на разных устройствах элементы могут иметь разные размеры.

Обычно эти единицы измерения используются при указании размера для вывода страниц на печать.

Типографские единицы

К типографским единицам измерения относятся точки (pt) и пики (pc). Точка (1pt) имеет фиксированный размер 1/72 дюйма, в то время как пика (1pc) равна 1/6 дюйма (1pc = 12pt). Эти две единицы измерения наиболее полезны в стилях, написанных для печатных версий документов, а не для использования на экранах.

Относительные единицы

К относительным единицам измерения относятся пиксели (px) и проценты (%). Процент — единица измерения, не имеющая напрямую никакого отношения к размеру шрифта в элементе или к размеру самого элемента. Величина свойства, установленная в процентах, напрямую зависит от величины этого же свойства, установленного для родительского элемента. Например, размер шрифта задается относительно размера шрифта родительского элемента, также высота и ширина выражается в процентах относительно высоты и ширины области содержимого родительского элемента.

Пиксель — точка равная одному физическому пикселю на экране. Однако браузеры не всегда точно расчитывают размер области просмотра в пикселях.

Рассмотрим последние модели ноутбуков, планшетов и смартфонов, оснащенные экранами с высоким разрешением. На таких устройствах браузер не соотносит единицу px с количеством физических пикселей на экране. Вместо этого он нормализует единицу px, так чтобы приблизить характеристики просмотра к традиционному настольному монитору с плотностью пикселей в районе от 96 до 120 пикселей/дюйм. В результате квадрат со стороной в 10px может отрисовыватся браузером на смартфоне так, что на каждой стороне окажется от 15 до 20 физических пикселей. Это означает, что px также оказывается относительной единицей измерения.

Шрифтозависимые относительные единицы

Двумя дополнительными относительными единицами измерения являются em и ex. Em — высота текущего шрифта, ex — высота символа «х» в нижнем регистре указанного шрифта.

Как и проценты, em является распространенной единицей измерения, которую обычно используют для установки размера шрифта для текста на веб-странице.

В CSS3 введены две дополнительные единицы измерения: rem и ch. Rem — размер шрифта корневого элемента ( ), она может использоваться вместо em для предотвращения влияния размеров шрифта родителя или предков на размер шрифта текущего элемента.

Единица ch равна ширине символа ноль (0) шрифта элемента. Ее использование может быть полезным для определения ширины поля, содержащего текст, потому что 1ch примерно соответствует одному символу.

Единица ch поддерживается только в Chrome 27+, Firefox 19+ и IE9. Rem поддерживается в Chrome 4+, Firefox 3.6+, IE9+, Safari 4.1+ и Opera 11.6+.

Единицы области просмотра

К единицам измерения области просмотра относятся vw (ширина) и vh (высота), позволяющие масштабировать элементы относительно области просмотра, то есть видимой части веб-страницы.

Двумя дополнительными единицами являются vmin и vmax, которые задают минимальное или максимальное значение размера области просмотра.

Единицы измерения относительные области просмотра поддерживаются в Chrome 26+, Firefox 19+, IE11+, Safari 6.1+ и Opera 15+.

Значения единиц измерения

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

Обратите внимание, что объявление не будет работать, если перед единицей измерения стоит пробел, или если единица измерения не указана (за исключением нулевого значения). Если в качестве значения используется ноль, то указание единицы измерения можно опустить.

Всякий раз, когда CSS объявление содержит ошибку, оно игнорируется браузером, при этом остальные объявление продолжают работать.

Единицы измерений в CSS

Единицы измерений в CSS — это важная часть кода, которая используется при верстке страницы постоянно.

Они бывают абсолютными и относительными.

Абсолютные единицы измерений CSS

Абсолютные единицы измерений имеют фиксированное значение, часто зависящее от друг от друга, и привязаны к некоторым физическим измерениям. Они полезны в том случае, когда известно средство вывода. Абсолютные единицы состоят из физических единиц (дюймов, см, мм, пунктов, пик) и единицы визуального угла (px):

Единица измерения Название Эквивалент
сантиметры 1cm = 96px/2.54
миллиметры 1mm = 1/10 от 1cm
дюймы 1in = 2.54cm = 96px
пика 1pc = 1/6 от 1in (дюйма) или 12 пунктов
пункты 1pt = 1/72th от 1in (дюйма)
пиксели 1px = 1/96 от 1in (дюйма)

Из всех этих единиц чаще всего используют пиксели или пункты. Первые — потому что устройства просмотра (мониторы, планшеты, телефоны и даже телевизоры) имеют разрешение именно в пикселях. А вторые — потому что масса текстовых редакторов позволяют набирать текст именно в пунктах.

Самое интересное, что все остальные единицы можно представить, оттолкнувшись от пикселей:

  • 1mm (мм) = 3.8px
  • 1cm (см) = 38px
  • 1pt (типографский пункт) = 4/3 px
  • 1pc (типографская пика) = 16px

Поэтому смысла в их практическом использовании нет. Соответственно, вы вряд ли найдете примеры, где эти единицы применяются. Зато пиксели применяются очень часто, хотя в разных устройствах размер пикселя тоже будет разным. Но в CSS используется некий «стандартизованный опорный пиксель», поэтому его размер считается абсолютным.

Цитата из спецификации:

Опорный пиксель представляет собой угол зрения одного пикселя на устройстве с плотностью пикселей 96dpi и расстоянием от считывателя длины руки. Таким образом, при номинальной длине руки 28 дюймов угол зрения составляет около 0,0213 градусов. Для чтения на расстоянии вытянутой руки 1px соответствует примерно 0,26 мм (1/96 дюйма).

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

Относительные единицы измерений

Относительные единицы измерений применяются в верстке намного чаще. Они определяют размер какого-либо элемента относительно другого размера. Таблицы стилей, которые используют относительные единицы, легче масштабируются из одной среды вывода в другую.

Единица Относительно чего измеряется
% от высоты шрифта родительского элемента
Высота шрифта текущего элемента (по умолчанию в браузерах обычно =16px)
Размер шрифта корневого элемента
Высота символа «x» шрифта элемента в нижнем регистре
Ширина символа «0» (ZERO, U + 0030) в шрифте элемента
1% ширины окна просмотра
1% высоты окна просмотра
1% меньшего размера окна просмотра, т.е. меньшее значение из 1vw или 1vh.
1% большего размера окна просмотра, т.е. большее значение из 1vw или 1vh.

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

Начнем с настроек браузера и единицы rem (root em)

Это единица, соответствующая размеру «корневого» элемента, а именно — тега html. Для него не так часто задаются стили, поэтому размер берется из настроек браузера.

В каждом браузере есть настройки шрифтов по умолчанию. Посмотреть их в Хроме можно, нажав в меню «Настройки» на ссылку «расширенные настройки». В открывшемся окне задается тип шрифта по умолчанию для различных семейств шрифта (с засечками, без засечек и моноширинный), а также его размер. Чаще всего, это 16px. Именно он берется за «корневой» — «root» emrem. От этого размера и рассчитывается единицы, указанные в rem.

В инспекторе свойств для выделенного абзаца со стилевым правилом

Единицы измерения CSS (пиксели, Em и Ex) и функция calc. Примеры

Приветствую Вас, уважаемые читатели блога webcodius! Для задания размеров различных элементов html страницы, в CSS существуют единицы измерения. Причем могут использоваться как относительные, так и абсолютные единицы.

Абсолютные единицы связаны с физическим миром и не зависят от устройства вывода. Для их указания можно использовать следующие единицы:

Единица Описание
mm Миллиметр
cm Сантиметр (равен 10mm)
in Дюйм (равен 2,54cm)
pt Пункт (равен 1/72in)
pc Пика (равна 12pt)

Абсолютные единицы используются реже чем относительные и применяются в основном для задания размера текста. А для указания размера текста в основном используют пункт (pt), который получается путем деления одного дюйма на 72 части. Дюйм в свою очередь равен примерно 25,4 миллиметра, соответственно один пункт примерно равен одной трети миллиметра. Пример использования абсолютных единиц измерения:

Q Continuum

The Continuum, as it was perceivable by Humans

A symbolic representation of the Q existence

For the CCG expansion with a similar name, please see CCG: Q-Continuum.

The Q Continuum was an extra-dimensional plane of existence inhabited by a race of beings known as the Q. The term could also refer to the Q society itself.

As a race, the Q were immortal, but not absolutely omniscient or omnipotent (according to Quinn). They possessed the ability to alter, create, or destroy virtually any form of matter or energy, and to affect time in essentially any way they chose. Their apparent abilities included moving entire astero >TNG : » Deja Q «, » Tapestry «, » All Good Things. «)

The Q claimed to have always existed, and their origins (if they had any), are unknown. ( VOY : » The Q and the Grey «)

Based on descriptions by numerous Q, including the Q later known as Quinn, as well as Amanda Rogers (the child of two Q in Human form), the Q Continuum was a very highly ordered society, but also a virtually stagnant one.

In the beginnings of what Quinn called the «new era», the Q engaged in constant dialogues of discovery and other universal issues. However, eventually, the Q came to realize that they had experienced, observed, or discussed literally everything imaginable. This resulted in the virtual shutdown of the Continuum as a society, as the immortal beings simply saw no point in even conversing with one another anymore. This resulted in one of the Q, Q, deciding to simply use his powers to stir up trouble and cause chaos, simply because there was nothing else to do. As a result of Q’s rebellious behavior, Quinn, a respected philosopher in the Continuum, decided that he wanted to shake things up even further by committing suicide, as he not only saw no purpose in continuing to exist, but wanted to break the monotonous stagnation afflicting the Continuum. The Continuum, however, stopped him from doing so because they were unable to predict what sort of societal chaos might result in the Continuum as a result of a Q committing suicide.

As a result of Quinn’s action, the Continuum was plunged into a massively destructive civil war that set the «Freedom Faction» against the traditional Q. The two factions were able to construct weapons that could even compromise the immortality of a Q. When these weapons were fired in the Continuum, this resulted in massive damage to subspace, causing some stars in normal space to go supernova. Eventually it damaged subspace to such an extent that Q outside of the Continuum lost their powers and immortality.

Later on, the new Q became an intergalactic troublemaker. He started wars between innocent races, knocked planets out of orbit, detonated Omega molecules, and created havoc in every way he could. His mother disowned him, humiliated by his actions. Q, however, followed him, cleaning up all the damage.

Under advice from Janeway, Q implemented punishment on the boy. Q dumped him on Voyager, and, with the help of the «Q government», took away his powers. Q Junior, as he was called by his father, had one week to become a good citizen, or he would be sentenced to eternity as an Oprelian amoeba. Junior did well for the first few days, until he stole the Delta Flyer II. After his friend Icheb was injured, however, he returned to Voyager. Janeway made him apologize to the ship he attacked, which was in fact Q, who masqueraded as a likely target to test his son’s attitude.

When Judgment Day came, Junior was still found unworthy of being a Q, but was good enough to be a Human. After this sentence, Q threatened to leave the Continuum unless his son was allowed to stay. After further pleading, the Continuum agreed to grant the young Q’s powers back to him on the condition that his father act as his guardian and supervisor in perpetuity, or at least until he could prove himself worthy. ( VOY : » Q2 «)

Apocrypha Edit

The history of the Q Continuum is explored in the Q Continuum series, which features flashbacks to Q’s «youth», including him being sentenced to safeguard Earth as punishment after his actions released a powerful entity known as «0» into the universe when Earth was damaged in the last stage of the war with 0 and his allies, which included Gorgan and the Beta XII-A entity. The conclusion of the trilogy sees 0 briefly return to this universe, achieving a level of power temporarily beyond even Q himself as his insanity from millennia of solitude allows him to warp reality at a fundamental level that Q would never be able to do without risking damage to himself. The series revealed that the Continuum was responsible for the creation of the Galactic barrier and for the imprisonment of the entity they knew as The One on the planet dubbed «Sha Ka Ree» by Sybok. This barrier was weakened as a result of the civil war in the Continuum, which was what allowed 0 to make his return, but later repaired after 0 was exiled yet again.

In The Eternal Tide, it is revealed that the Q Continuum manifested as a creative force to «oppose» the destructive potential of the Omega Continuum after it was disrupted and the decay of the universe accelerated. Voyager is later able to slow down the decay to a more tolerable level – shortening the universe’s lifespan by a few million years rather than by trillions – as the only way to completely halt and undo the disruption would have erased the Q Continuum from existence as their creative force was no longer «needed». Eternal Tide also reveals that there are at least six rules that the Q must obey, with number six being «Don’t bring the dead back to life», as the consequences of such an action can be problematic as not even the Q fully know what happens after death.

In the Star Trek: Ongoing story arc The Q Gambit, it is revealed that the higher species are at war and the Q Continuum is on the verge of defeat. Galvanized by their victory over the Prophets, the Pah-wraiths have turned on their other neighbors. Not even the Q cannot stop their onslaught because in spite of all the power the Q wield in the three-dimensional universe, they are as powerless and clueless as humans in their own realm. Unable to find a path to victory, Q left to seek the counsel of Picard on what action to take. But when he couldn’t get an answer, Q left for the alternate reality, intended to instead seek the counsel of James T. Kirk for his experience in triumphing over no-win scenarios.

SavePearlHarbor

Ещё одна копия хабора

Дайджест свежих материалов из мира фронтенда за последнюю неделю №235 (1 — 6 ноября 2020)

Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы и интересные материалы из области фронтенда.

Веб-разработка

  • Инструменты:
    • Опросник по Front-End инструментам – 2020 (Front-End Tooling Survey – 2020)
    • Более быстрые и надёжнее CI билды с Yarn (Faster, More Reliable CI Builds with Yarn)
    • RFC: бюджет производительности Webpack (RFC: Webpack Performance Budgets)
    • webpack-bundle-analyzer — визуализатор содержимого бандла (webpack-bundle-analyzer — Webpack plugin and CLI utility that represents bundle content as convenient interactive zoomable treemap)

    JavaScript

  • ES6:
    • Промисы в Javascript: зачем и как (Javascript Promises; the Why and the How)
    • Шесть маленьких, но клевых свойств ES6 (Six Tiny But Awesome ES6 Features)
    • Введение в ES6: Переменные, стрелочные функции (Getting to Grips with ES6: )
    • Используйте лучшее из ES6 везде (Use the coolest ES6 features everywhere)
    • Вычисляемые tag функции для литералов шаблонов ES6
      (Computing tag functions for ES6 template literals)
  • Плагины:
    • utransition, микробиблиотека, упрощающая создание анимаций и управление ими в JS
    • typeis.js — простой и интеллектуальный детектор типов данных
    • Lightflow — библиотека для управления потоком по типу промисов для браузера и Node.js
    • SkateJS — библиотека для написания функциональных, лёгких и кросс-фреймворк совместимых веб компонентов по спецификациям W3C
    • egjs — библиотека с набором интерактивных UI компонентов
    • Recordy — запись с микрофона и добавление эффекта прямо в браузере

    Браузеры

    Новости и занимательное

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

    Как устроен парсер Python, и как втрое уменьшить потребление им памяти

    Любой, кто изучал устройство языков программирования, примерно представляет, как они работают: парсер в соответствии с формальной грамматикой ЯП превращает входной текст в некоторое древовидное представление, с которой работают последующие этапы (семантический анализ, различные трансформации, и генерация кода).

    В Python всё немного сложнее: парсеров два. Первый парсер руководствуется грамматикой, заданной в файле Grammar/Grammar в виде регулярных выражений (с не совсем обычным синтаксисом). По этой грамматике при помощи Parser/pgen во время компиляции python генерируется целый набор конечных автоматов, распознающих заданные регулярные выражения — по одному КА для каждого нетерминала. Формат получающегося набора КА описан в Include/grammar.h , а сами КА задаются в Python/graminit.c , в виде глобальной структуры _PyParser_Grammar . Терминальные символы определены в Include/token.h , и им соответствуют номера 0..56; номера нетерминалов начинаются с 256.

    Проиллюстрировать работу первого парсера проще всего на примере.
    Пусть у нас есть программа if 42: print(«Hello world»)

    (За нижеследующим описанием работы парсера удобно было бы следить по этому листингу — например, открыв его в соседней вкладке.)

    Парсер начинает разбор с КА для single_input ; этот КА задан массивом states_0 из трёх состояний. Из начального состояния выходят три дуги ( arcs_0_0 ), соответствующие входным символам NEWLINE (метка №2, символ №4), simple_stmt (метка №3, символ №270) и compound_stmt (метка №4, символ №295). Входной терминал «if» (символ №1, метка №97) входит во множество d_first для compound_stmt , но не для simple_stmt — ему соответствует бит \002 в 13-том байте множества. (Если во время разбора оказывается, что очередной терминал входит во множества d_first сразу для нескольких исходящих дуг, то парсер выводит сообщение о том, что грамматика неоднозначна, и отказывается продолжать разбор.) Итак, парсер переходит по дуге <4, 2>в состояние №2, и одновременно переключается к КА compound_stmt , заданному массивом states_39 . В этом КА из начального состояния выходят сразу девять дуг ( arcs_39_0 ); выбираем среди них дугу <91, 1>, соответствующую входному символу if_stmt (№297). Парсер переходит в состояние №1 и переключается к КА if_stmt , заданному массивом states_41 . Из начального состояния этого КА выходит всего одна дуга , соответствую­щая нашему входному терминалу «if» . По ней парсер переходит в состояние №1, откуда опять выходит единственная дуга <26, 2>, соответствующая нетерми­налу test (№305). По этой дуге парсер переходит в состояние №2 и переклю­чается к КА test , и так далее. После долгого-предолгого превращения числа 42 в нетерминал test , парсер вернётся в состояние №2, из которого выходит единственная дуга <27, 3>, соответству­ющая терминалу COLON (символ №11), и продолжит разбор нетерминала if_stmt . В качестве результата его разбора парсер создаст узел конкретного синтаксического дерева (структура node ), у которого будет тип узла №297, и четыре ребёнка — типов №1 ( NAME ), №305 ( test ), №11 ( COLON ) и №304 ( suite ). В состоянии №4 создание узла для if_stmt завершится, парсер вернётся в состояние №1 КА compound_stmt , и вновь созданный узел для if_stmt станет единственным ребёнком узла, соответствующего compound_stmt . Целиком КСД нашей программы будет выглядеть так, как показано справа. Заметьте, как короткая программа из семи терминалов

    превратилась в «бамбук» — огромное, почти неветвящееся дерево разбора из аж 64 узлов! Если считать в байтах, то исходная программа занимает 27 байт, а её КСД — на два порядка больше: полтора килобайта на 32-битной системе, и три — на 64-битной! (64 узла по 24 либо 48 байтов каждый). Именно из-за безудержно растягивающегося КСД попытки пропустить через python исходные файлы размером всего в несколько десятков мегабайт приводят к фатальной MemoryError .

    Для работы с КСД в Python есть стандартный модуль parser :

    В его исходном коде ( Modules/parsermodule.c ) для проверки КСД на соответствие грамматике Python были >2000 рукописных строк, которые выглядели примерно так:

    Легко догадаться, что такой однообразный код можно было бы и автоматически генерировать по формальной грамматике. Немногим сложнее догадаться, что такой код уже генерируется автоматически — именно так работают автоматы, используемые первым парсером! Выше я затем в подробностях объяснял его устройство, чтобы пояснить, каким образом я в марте этого года предложил заменить все эти простыни рукописного кода, которые нужно править каждый раз, когда меняется грамматика, — на прогон всех тех же самых автоматически сгенерированных КА, которыми пользуется сам парсер. Это к разговорам о том, нужно ли программистам знать алгоритмы.

    В июне мой патч был принят, так что в Python 3.6+ вышеприведённых простыней в Modules/parsermodule.c уже нет, а зато есть несколько десятков строк моего кода.

    Работать с таким громоздким и избыточным КСД, как было показано выше, довольно неудобно; и поэтому второй парсер ( Python/ast.c ), написанный целиком вручную, обходит КСД и создаёт по нему абстрактное синтаксическое дерево. Грамматика АСД описана в файле Parser/Python.asdl ; для нашей программы АСД будет таким, как показано справа.

    Вместо работы с КСД при помощи модуля parser , документация советует использовать модуль ast и работать с абстрактным деревом:

    Как только АСД создано — КСД больше низачем не нужно, и вся занятая им память освобождается; поэтому для «долгоиграющей» программы на Python нет большого значения, сколько памяти занимало КСД. С другой стороны, для больших, но «скорострельных» скриптов (например, поиск значения в огромном dict -литерале) — размер КСД как раз и будет определять потребление памяти скриптом. Всё это впридачу к тому, что именно размер КСД определяет, хватит ли памяти для того, чтобы загрузить и запустить программу.

    Необходимость прохода по длинным «бамбуковым ветвям» делает код Python/ast.c просто отвратительным:

    Многократно повторяющиеся на всём протяжении второго парсера if (NCH(n) == 1) n = CHILD(n, 0); — иногда, как в этой функции, внутри цикла — означают «если у текущего узла КСД всего один ребёнок, то вместо текущего узла надо рассматривать его ребёнка».

    Но разве что-то мешает сразу во время создания КСД удалять «однодетные» узлы, подставляя вместо них их детей? Ведь это и сэкономит кучу памяти, и упростит второй парсер, позволяя избавиться от многократного повторения goto loop; по всему коду, от вида которого Дейкстра завращался бы волчком в своём гробу!

    В марте, вместе с вышеупомянутым патчем для Modules/parsermodule.c , я предложил ещё один патч, который:

    1. Добавляет в первый парсер автоматическое «сжатие» неветвящихся поддеревьев — в момент свёртки (создания узла КСД и возврата из текущего КА в предыдущий) «однодетный» узел подходящего типа заменяется на своего ребёнка:
    2. Соответствующим образом исправляет второй парсер, исключая из него обход «бамбуковых ветвей»: например, вышеприведённая функция ast_for_expr заменяется на

    С другой стороны, у многих узлов в результате «сжатия ветвей» дети теперь могут быть новых типов, и поэтому во многих местах кода приходится добавлять новые условия.

    Поскольку «сжатое КСД» уже не соответствует грамматике Python, то для проверки его корректности в Modules/parsermodule.c вместо «сырой» _PyParser_Grammar теперь нужно использовать автоматы, соответствующие «транзитивному замыканию» грамматики: например, для пары продукций

    —добавляются следующие «транзитивные» продукции:

    Во время инициализации модуля parser , функция Init_ValidationGrammar обходит автосгенерированные КА в _PyParser_Grammar , на основе них создаёт «транзитивно замкнутые» КА, и сохраняет их в структуре ValidationGrammar . Для проверки корректности КСД используется именно ValidationGrammar .

    Сжатое КСД для нашего примера кода содержит всего 21 узел:

    С моим патчем стандартный набор бенчмарков показывает сокращение потребления памяти процессом python до 30%, при неизменившемся времени работы. На вырожденных примерах сокращение потребления памяти доходит до трёхкратного!

    Но увы, за полгода с тех пор, как я предложил свой патч, никто из мейнтейнеров так и не отважился его отревьюить — настолько он большой и страшный. В сентябре же мне ответил сам Гвидо ван Россум: «Раз за всё это время никто к патчу интереса не проявил, — значит, никого другого потребление памяти парсером не заботит. Значит, нет смысла тратить время мейнтейнеров на его ревью.»

    Надеюсь, эта статья объясняет, почему мой большой и страшный патч на самом деле нужный и полезный; и надеюсь, после этого объяснения у Python-сообщества дойдут руки его отревьюить.
    ссылка на оригинал статьи https://habrahabr.ru/post/314062/

    Введена в строй 54-х терабитная магистраль в Азии

    На Хабре незамеченной прошло одно событие, которое может иметь большое влияние на всю телекоммуникационную сферу. Речь идет о введении в строй новой интернет-магистрали Asia Pacific Gateway (APG) с пропускной способностью 54 терабита в секунду. Длина оптоволоконного канала связи составила 10400 километров. Этот амбициозный проект реализовывался силами японской компании NTT Communications несколько лет.

    Интересно, что теоретическая пропускная способность в 54 Тб/с — это больше, чем планировалось изначально. На старте проекта разработчики рассчитывали достичь пропускной способности в 40 Тб/с. Но теория — теорией, а на карте интернет-магистралей пропускная способность этого канала показана, как 38,4 Тб/с. Как бы там ни было, но это также очень значительный результат. Азиатские страны давно ожидали введения в строй новой магистрали, поскольку магистраль Asia America Gateway (AAG) часто повреждалась, причем в марте этого года ее решили не ремонтировать.

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

    Новая магистраль соединит вьетнамский город Дананг с японскими городами Осака и Токио. В этих точках кабель залинкуют с PC-1, 640 гигабитной магистралью, которая соединяет Гровер Бич, Калифорния и Харбор Поинт, Вашингтон. PC-1 работает без особых проблем, начиная с 2001 года. APG будет проходить и через ряд других населенных пунктов Тайланда, Вьетнама, Южной Кореи.

    Поскольку в Южной Корее будут проводиться Зимние Олимпийские игры, проект постарались реализовать как можно быстрее, ведь по терабитному каналу можно будет транслировать видеоматериалы с Игр в ultra-HD качестве.

    Три года назад в этом же регионе была проложена еще одна магистраль, Southeast Asia-Japan Cable (SJC). Значительную часть средств здесь вложила корпорация Google. Теоретическая пропускная способность SJC составляет 23 Тбит/с. Магистраль объединяет Китай, Бруней, Сингапур и Филиппины. Но он не включает в общую систему Вьетнам и Южную Корею.

    Финансирование APG производится несколькими крупными технологическими корпорациями, включая Facebook. Социальная сеть предоставила разработчикам крупную сумму инвестиций (размер неизвестен) в 2012 году. По мнению некоторых местных СМИ, Facebook вкладывает средства в магистраль, поскольку собирается агрессивно зайти на азиатский рынок. Возможно, это правда, поскольку в мае этого года социальная сеть объединила инвестиционные усилия с Microsoft. Обе компании приняли решение финансировать прокладку подводного кабеля через Тихий океан. Эта магистраль после ее прокладки будет иметь рекордную пропускную способность с 160 Тбит/с. Это в 256 раз больше, чем у РС-1.

    Facebook и Google финансируют еще один схожий проект по прокладке 120-терабитной магистрали, которая получила название PLCN.

    Кроме всего перечисленного выше, в Азиатско-Тихоокеанском регионе работает еще одна магистраль, Asia Submarine-Cable Express (ASE). Ее протяженность составляет 7800 километров. Магистраль соединяет Филиппины, Гонконг, Малайзию и Сингапур. ASE была введена в строй в 2012 году.

    По информации за 2014 год по дну океана проложено 285 кабелей связи. 22 магистрали не используются в настоящий момент. Средний срок службы оптоволокна составляет 25 лет. Интересно, что некоторым компаниям, например, Google, выгоднее прокладывать собственный кабель через океан, чем арендовать чужие магистрали.

    Наиболее «широким» каналом является транс-тихоокеанский кабель FASTER. Эта магистраль длиной в 9000 км имеет пропускную способность в 60 Тбит/с. Связывает магистраль Японию и США, причем Япония здесь играет роль хаба между США и Китаем.
    ссылка на оригинал статьи https://habrahabr.ru/post/314542/

    Microsoft предоставит антивирусам возможность контроля за активностью подсистемы Linux на Windows 10

    В предыдущих постах нашего корпоративного блога мы несколько раз касались темы поддержки подсистемы Linux на Windows 10 (WSL), а также описывали особенности ее технической реализации. Бета-версия этой подсистемы была доставлена пользователям в выключенном виде в рамках обновления Windows 10 Redstone 1 (Anniversary Update) в августе этого года.

    Недавно Microsoft начала анонсировать изменения в ядре Windows, которые помогут AV-драйверам правильным образом работать с процессами подсистемы Linux, в контексте которых запускаются исполняемые ELF-файлы.

    Известно, что до появления механизмов функций обратного вызова для контроля за различными операциями в режиме ядра, авторы драйверов брандмауэров и антивирусов использовали перехваты API-вызовов в системной таблице вызовов KiServiceTable, которую можно было обнаружить с использованием экспортируемой ядром переменной KeServiceDescriptorTable. С появлением новых уже документированных API-вызовов для регистрации callback-функций, разработчики перешли на их использование. К тому же 64-разрядные версии Windows не позволяли просто так перехватывать сервисы KiServiceTable изначально.

    Рис. Архитектура файловой системы WSL. Видно, что LXCore.sys эмулирует различные объекты Linux с использованием функций ядра Windows.

    Одной из основных операций, которая контролируется антивирусами или HIPS является создание процессов и потоков. Драйвер может зарегистрировать функцию обратного вызова с помощью PsSetCreateProcessNotifyRoutineEx, а также PsSetCreateThreadNotifyRoutine. После этого при создании процессов или потоков в процессе, драйвер будет получать уведомление об этой операции. Microsoft модернизировала эти функции, добавив API PsSetCreateProcessNotifyRoutineEx2 и PsSetCreateThreadNotifyRoutineEx. Эти API-функции ядра помогут драйверам отслеживать активность внутри процессов подсистемы Linux.

    Type = PsCreateProcessNotifySubsystems; //новый тип уведомлений
    Status = PsSetCreateProcessNotifyRoutineEx2(Type, Callback,TRUE); //новая API

    void Callback (_In_ HANDLE ParentId, _In_ HANDLE ProcessId, _Inout_opt_ PPS_CREATE_NOTIFY_INFO CreateInfo) <
    if (CreateInfo->Flags.IsSubsystemProcess == 0) <
    /* Код оригинального обработчика callback */
    > else <
    Type = ProcessSubsystemInformation;
    Status = NtQueryInformationProcess(ProcessHandle, Type, &Subsystem, sizeof(Subsystem), NULL);
    if (Subsystem == SubsystemInformationTypeWSL) <
    /* Новый код для обработки создания процессов WSL */
    >
    >
    >

    Type = PsCreateThreadNotifySubsystems; //новый тип уведомлений
    Status = PsSetCreateThreadNotifyRoutineEx(Type, Callback); //новая API

    void Callback (_In_ HANDLE ProcssId, _In_ HANDLE ThreadId, _In_ BOOLEAN Create) <
    Type = ThreadSubsystemInformation;
    Status = NtQueryInformationThread(ThreadHandle, Type, &Subsystem, sizeof(Subsystem), NULL);
    if (Subsystem == SubsystemInformationTypeWin32) <
    /* Код оригинального обработчика callback */
    > else if (Subsystem == SubsystemInformationTypeWSL) <
    /* Новый код для обработки создания процессов WSL */
    >
    >

    Microsoft опубликовала информацию о реализации VFS в подсистеме Linux на Windows 10
    habrahabr.ru/company/eset/blog/303438

    Microsoft раскрыла технические аспекты реализации подсистемы Linux в Windows 10
    habrahabr.ru/company/eset/blog/302976

    Microsoft подтвердила слухи об интеграции подсистемы Linux в Windows 10
    habrahabr.ru/company/eset/blog/280584

    Измеряем мощность сотового телефона

    Интернет полон страшилок про вред мобильных телефонов. Страшилки эти не сильно подтверждены серьёзными исследованиями, так что оставим их на совести авторов. Но ведь телефон действительно излучает какое-то количество мощности. Попробуем разобраться в проблеме. Первые тесты на осциллографе показали, что мощность очень быстро меняется во времени, поэтому вариант с условно одновременным измерением с разных точек не подойдёт, и нам придётся сгородить собственными руками рупорную антенну, чтобы собрать максимум излучаемой мощности.

    Результат представлен на КДПВ. Баланс белого сознательно был выбран неправильным, т.к. с правильным балансом, как мы увидим, поверхность фольгирования несколько непрезентабельного цвета. Но приукрашивать — не наш метод, поэтому все остальные картинки «честные» — лучше горькая, но правда, чем приятная, но лесть (с).

    Для начала нам надо измерить частотный диапазон в котором телефон общается с ближайшими вышками, т.к. сам исследовавшийся аппарат был трёхдиапазонным: 900/1800/1900 МГц. Поскольку для определения диапазона нам не нужно ни согласование, ни полная мощность, то можно воспользоваться простейшей петлевой антенной диаметром порядка 300 мм, вставленной в центральный контакт входного разъёма анализатора спектра. Сказано — сделано, диапазон 900 МГц. Не очень приятно, т.к. размер нашего будущего подопечного — максимально возможный. Длина волны составляет примерно 330 мм, половина её — 165 мм, а значит, как учат нас учебники, разумно воспользоваться волноводом сечения примерно 200х100 мм (середина октавы между отсечкой основной моды и заходом в волновод второй моды). Разумно-то, разумно, но где взять этого многокилограммового монстра? А что, если мы его сделаем из фольгированного стеклотекстолита? Размеры небольшие, материала хватит, жёсткости, скорее всего, тоже. Но что будет с самой антенной? Если делать её как следует, то придётся делать раскрыв около метра, а длину и того больше. С учётом сомнений в жёсткости такой конструкции и сомнений в достаточности материалов в итоге было принято волевое решение — раскрыв сделать 400 мм, а длину конструкции ограничить 600 мм. По крайней мере стоит пройти первичные тесты, прежде, чем делать сооружение, сопоставимое с детектором реликтового излучения.

    Линейка и маркер в руках, позже — ножницы по металлу, в итоге имеем четыре симпатичные заготовки, из которых мы спаяем собственно рупорную антенну и коаксиально-волноводный переход в виде единого изделия. На первый взгляд поверхность фольгирования была чистой, так что я решил обойтись без шкурки и сразу начал процесс пайки С помощью обычного ПОС-60 и канифоли. Совмещаем две заготовки, фиксируем примерно прямой угол между ними (я обошёлся без угольника), прихватываем с одного торца, далее в месте изгиба и, наконец во втором торце. Текстолит тонкий, а значит лёгкий, так что этого уже хватает, чтобы конструкция не опадала под собственным весом. Далее пропаиваем полностью шов с внутренней стороны. Но не тут-то было — на первый шов ушло порядка получаса, кроме того последние два шва придётся делать в условиях усиливающейся клаустрофобии от собранной конструкции. Переборов нежелание испачкать чистые штаны летящей со шкурки пылью, я всё-таки зачистил поверхность под пропайку, после чего залудил все общие края заготовок. После этого процесс полной пропайки одного шва с контролем напросвет стал занимать пару минут, а выполнение последних двух швов не так уж и заметно сложнее первых. Макрофотография со внешней стороны:

    Шов выглядит на мой взгляд вполне неплохо, волнистость в доли миллиметра, что вполне приемлемо. Теперь изготавливаем короткозамыкающий поршень из обрезков текстолита. Для этого сгибаем П-образную заготовку, центральная часть которого чуть меньше внутреннего сечения волноводной части и припаиваем к ней очередной обрезок, за который поршень можно будет вытащить, если он заупрямится:

    Припаиваем антенну длиной поменьше половины короткой стороны волновода на SMA-разъём:

    Это неиспользованный кривой вариант. Устанавливаем его в проделанное посередине длинной стенки отверстие:

    И видим антенну с передней части рупора (видно и антенну, и её отражение):

    В принципе мы уже готовы к измерениям с помощью осциллографа, но для страховки прежде всего посмотрим, с каким уровнем мощности мы можем столкнуться. Всемирная энциклопедия даёт нам следующие данные: максимальная излучаемая мощность мобильных телефонов стандарта GSM-1800 — 1 Вт, у GSM-900 — 2 Вт. Мощности эти достаточно велики, коаксиальный детектор будет работать уже не в квадратичном режиме. Для уменьшения мощности и перевода детектора ближе к правильному режиму ставим аттенюатор на 15 дБ (больше, к сожалению, не нашлось, лучше было бы тридцаточку). Переходим к тестам на осциллографе.

    Кладём телефон на деревянный стул, включаем дозвон и ставим поверх телефона рупор с подсоединённым детектором. Сначала убеждаемся, что максимальная амплитуда принимаемого сигнала достигается ровно в центре рупора при расположении длинного (вертикального) размера телефона параллельно антенне рупора, затем настраиваем положение поршня по максимуму сигнала. Теперь можно начинать снимать «осмысленные» осиллограммы с детектора. Ни в одном из тестов не удалось добиться амплитуды сигнала более 200 мВ. К сожалению, это значение выше, чем диапазон имеющейся в наших руках калибровки:

    Тем не менее, можно проэкстраполировать данные вправо и получить величину мощности около +3 dBm (десятичный логарифм от мощности, делённой на 1 мВт). Добавим сюда 15 дБ аттенюатора и 3 дБ на симметричное излучение внутрь антенны и в обратную сторону (проверяем переворотом телефона). Итого получаем +21 dBm или 126 мВт. Значение, на мой взгляд, довольно разумное. К сожалению, попытки заставить телефон потерять сигнал базовой станции и увеличить мощность передачи до максимума не увенчались успехом. Для этого идеально подошла бы экранированная комната или клетка Фарадея с сеткой много меньше длины волны, но ничего похожего поблизости не обнаружилось. Доставать рулон сетки-рабицы и обматываться им мне почему-то не захотелось. Таким образом, никаких окончательных ответов получено не было, и я даже подумал не публиковать статью. Но, немного поразмыслив, решил, что небольшая добавка графиков скрасит DIY статью.

    На картинке ниже два набора данных — во время попытки дозвона и во время разговора:

    Как ни странно, но во время разговора (красная кривая) данных передаётся даже меньше. Тот же график подробнее:

    Длительность фрейма примерно соответствует номинальному значению 577 мкс, период тоже соответствует номинальному — восемь фреймов. У некоторых читателей наверняка возник вопрос — как можно передавать голосовые данные при частоте следования фреймов (битов) около 200 Гц (а по факту и ниже)? Дело в том, что для передачи данных используется не амплитудная, а квадратурная модуляция. Не вдаваясь в дебри этого не самого простого предмета, скажу, что один фрейм — это не один бит, полученный с помощью амплитудной модуляции, а целый пакет данных, модулированных не амплитудно, а фазово (на самом деле всё ещё хитрее, но это, нмв, выходит за рамки статьи). Естественно, после простого детектирования никаких следов фазы мы не видим. Замечу, что средняя мощность меньше пиковой в восемь раз за счёт промежутков между фреймами, и ещё раз в пять за счёт разреженности промежутков передачи.

    Чтобы доказать линейность поляризации излучения, снимем сигнал, повернув телефон на 90 градусов вокруг направления на рупор:

    Амплитуда заметно просела, но сигнал всё ещё обнаруживается. Это может быть результатом как неточно линейной поляризации, так и просто точностью ориентации оси телефона.

    Раз мы посмотрели на детектированный сигнал, почему бы нам не посмотреть на сам сигнал вживую? Частота, конечно, высоковата, но нынче есть и быстрые осциллографы. Вот результат:

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

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

    Спасибо за внимание, надеюсь, было интересно.

    Единицы измерения CSS, размер шрифта

    Данная статья учебника посвящена вопросам, связанным с управлением размера шрифта в CSS, в том числе существующие ключевые слова. Рассмотрено применение всех единиц измерения современного стандарта, а именно: дюймы, сантиметры, миллиметры и четверь миллиметра, пики, пункты, пиксели, процентные значения, единица измерения еm, rem, еx, ch и масштабируемые величины относительно экрана — vw, vh, vmin и vmax.

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


    В CSS за установку размера шрифта отвечает CSS свойство font-size, которое имеет поддержку всеми основными браузерами. Свойство font-size записывается следующим образом:

    Обращаю Ваше внимание, что при использовании свойства font-size необходимо всегда указывать положительные единицы измерения величины, при этом, вы не должны указывать пробел между числом и единицей измерения:

    В CSS 3 существует разнообразный набор единиц измерения для различных задач, давайте рассмотрим, что нам предлагает современный стандарт.

    Абсолютные величины

    Физические единицы:

    • Дюймы (in), 1in = 2.54cm (сантиметры) = 96px (пиксели).
    • Сантиметры (cm), 1cm = 96px/2.54.
    • Миллиметры (mm), 1mm = 1/10 от 1cm.
    • Четверть миллиметра, (q) 1q = 1/40 от 1cm.
    • Пики (pc), 1pc = 1/6 от 1 дюйма, 1pc = 12pt = 1/6 дюйма.
    • Пункты (pt), 1pt = 1/72 дюйма.

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

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

    Визуальные единицы:

    Пиксели (px), 1px = 1/96 от 1in (дюйма).

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

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

    К недостаткам использования единицы измерения пиксель относится то, что они не позволяют изменять масштаб для слабовидящих пользователей.

    Относительные единицы

    Процентные значения.

    Давайте рассмотрим из чего формируются процентные значения, применяемые в каскадных таблицах стилей. Если для элемента не задан размер шрифта средствами CSS, то браузер применит к тексту свои значения «по умолчанию». В большинстве случаев текст, находящийся вне заголовков отобразится высотой 16 пикселей (базовый размер шрифта текста).

    Как вы можете догадаться, процентные значения высчитываются относительно значения свойства родительского элемента. Независимо от основного размера шрифта, он будет эквивалентен 100%.

    Давайте рассмотрим пример. Допустим, у всех параграфов (элемент

    ) установлен базовый размер шрифта 16px и мы хотим отобразить в одном параграфе определённую информацию шрифтом в два раза больше, а в другом в два раза меньше. Для этого мы создадим для них отдельные блоки описаний (стили):

    Результат нашего примера:

    Рис.51 Пример использования процентных значений.

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

    При работе с процентными значениями обратите Ваше внимание на то, что все вложенные элементы наследуют значения и используют их для вычисления своих размеров шрифтов. Что это значит, разберем в примере:

    Результат нашего примера:

    Рис.52 Пример наследования процентных значений.

    В данном примере для вложенного блока

    Расчёт размера шрифта для вложенного блока будет выглядеть следующим образом:

    Если бы мы не изменили значение размера шрифта для блока

    Кроме того, мы, использовали селектор дочерних элементов, который устанавливает, что все вложенные элементы

    Надо понять, что для этих вложенных элементов размер шрифта в 100% теперь равен 24px, а значение в 200% равно 48px, т.к. расчёт происходит исходя из размера шрифта родительского элемента:

    Единица измерения еm.

    Em является стандартной единицей измерения, используемой в типографской системе, она соответствует размеру заглавной буквы «M» шрифтом Цицеро. Но это, что касается типографской системы, давайте рассмотрим, как она применяется на веб-страницах и чему соответствует.

    Если вы внимательно отнеслись к изучению использования и наследования процентных значений, то вы быстро сможете освоить работу с такой единицей измерения как em.

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

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

    Результат нашего примера:

    Рис.53 Пример использования значений em.

    Многие создатели сайтов выбирают именно эти единицы измерения при создании своих таблиц стилей.

    Единица измерения rеm.

    Стандарт CSS 3 подарил нам новую относительную единицу измерения rem, что является сокращением от Root em – значение основано на размере текста корневого (root) элемента.

    Основное отличие от em заключается в том, что размер текста задается от базового размера корневого элемента, а не текущего размера шрифта родительского элемента. Чтобы окончательно понять, давайте рассмотрим сравнение на примерах:

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

    Если у Вас где-то размер не соответствует Вашим ожиданиям, ищите проблему в наследовании 🙂

    Рис.54 Пример наследования значений em.

    Оставим единицу измерения em и рассмотрим этот же пример с использованием единицы rem .

    В данном примере, мы вложили блоки последовательно один в другой и установили значение размера шрифта равным 1.25rem . В результате, как Вы можете заметить, размер каждого блока одинаков, это происходит по той причине, что размер текста рассчитывается исходя из размера текста корневого (root) элемента, а не родительского элемента.

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

    Рис.55 Пример использования значений rem.

    Обе вышерассмотренные единицы измерения имеют широкое применение среди разработчиков, но при этом имеют как сильные, так и слабые стороны. С опытом вы определите для себя те критерии, когда необходимо использовать ту или иную единицу измерения в зависимости от возникших обстоятельств.

    Единица измерения еx.

    Единица измерения ex зависит от того шрифта, который вы применяете, так как его размер рассчитывается исходя из высоты прописной буквы «x». Данная единица измерения имеет очень редкое применение, в основном касается типографских микро настроек.

    В большинстве шрифтов высота прописной «x» соответствует 0.5em. Если браузер не может определить размер прописной «x», то в этом случае будет установлено значение равное 0.5em.

    Единица измерения ch.

    Единица измерения ch зависит от того шрифта, который вы применяете, так как его размер рассчитывается исходя из ширины символа ‘0’ (ноль, символ Юникода U+0030). Данная единица измерения имеет очень редкое применение, например, если вы хотите создать блок моноширинным шрифтом (имеет символы одной ширины) с заданным количеством символов, которые он может вместить:

    Если браузер не может определить размер «0», то в этом случае будет установлено значение равное 0.5em.

    Масштабируемые величины относительно экрана

    С развитием стандарта каскадных таблиц стилей стали доступны такие единицы измерения, которые позволяют задать размеры относительно окна пользователя (области просмотра).

    Область просмотра (viewport) это то место, где браузер отображает сайт минус зарезервированное пространство браузера.

    В CSS 3 существуют 4 (четыре) различных единицы измерения величины относительно экрана — две для каждой оси и две единицы измерения, определяющие минимальное и максимальное значение:

    Например, если ширина области просмотра 1000px, то 1vw будет соответствовать 10 (десяти) пикселям.

    1vh (viewport height)= 1% от высоты области просмотра. При уменьшении высоты окна пропорционально уменьшается тот параметр элемента, который был задан.

    Например, если высота области просмотра 500px, то 1vh будет соответствовать 5 (пяти) пикселям.

    В данном примере мы установили для трёх блоков разные значения таких параметров как размер шрифта (для первого – 5vw (5% от ширины области просмотра), для второго — 4vw , для третьего — 3vw ), ширину блоков (для первого – 100vw (100% от ширины области просмотра), для второго — 75vw , для третьего — 50vw ) и высоту блоков (для первого – 30vh (30% от высоты области просмотра), для второго — 50vh , для третьего — 20vh ).

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

    Чтобы избавится от полосы прокрутки, мы установили универсальный селектор *, который выбирает все элементы и убирает внешние отступы у всех элементов. Это мы сделали по той причине, что некоторые браузеры при работе с данными единицами измерения при 100vw добавляют полосу прокрутки, чего быть не должно (этот баг возникает при overflow : auto – свойство, которое отвечает за переполнение элемента содержимым, установленное по умолчанию).

    Полную информацию о работе с внешними отступами вы получите в статье учебника «Блочная и строчная модель в CSS», а работу с переполнением элементов мы рассмотрим в статье «Размеры блочных элементов в CSS».

    Результат нашего примера:

    Рис.57 Масштабируемые единицы измерения.

    Минимальное и максимальное значение области просмотра

    Заключительные единицы измерения, которые мы рассмотрим в этой статье это vmin и vmax. Обратите внимание на то, что эти значения могу принимать как значения высоты, так и ширины области просмотра:

    1vmin = 1vw или 1vh. Выбирает минимальное значение между высотой и шириной области просмотра.

    1vmax = 1vw или 1vh. Выбирает максимальное значение между высотой и шириной области просмотра.

    Давайте рассмотрим, в чем заключается разница между vmin и vmax на следующем примере:

    В нашем примере мы создали два блока, которые разместили в «линейку» (используя свойство display : inline-block ), как и в прошлом примере убрали все внешние отступы свойством margin со значением 0 .

    Первый блок с классом viewportMin (черный на изображении) имеет значения для высоты и ширины 40vmin . Это означает, что выбирается минимальное значение между высотой и шириной окна просмотра и устанавливается 40%. В нашем случае разрешение окна браузера было 400 пикселей ширина и 700 пикселей высота. В этом случае 400 пикселей минимальное значение и браузер выбирает его. Ширина высчитывается как:

    Для высоты расчёт аналогичен:

    В итоге мы получили «квадрат Малевича».

    Что касается второго блока с классом viewportMax, то всё происходит с точностью да наоборот. Браузер определяет текущее максимальное значение viewport (область просмотра), оно у нас равно 700px на изображении и высчитывает ширину и высоту элемента:

    Обращаю Ваше внимание, что при изменении области видимости (размеров окна) браузер пересчитывает значения «на лету», что очень удобно и пригодится в будущем при адаптивном дизайне.

    Рис.58 Пример использования vmin и vmax c масштабируемыми единицами измерения.

    Масштабируемые единицы измерения, надеюсь, имеют счастливое будущее, но в настоящее время не так активно используются по тем основным причинам, что:

    1. Отсутствует полная поддержка данных единиц измерения некоторыми мобильными браузерами (например, Opera Mini и UC Browser for Andro >vmax , iOS Safari – стабильная поддержка только с 8 версии (6 версия — не поддерживала vmax , 7 версия – некорректно работала единица измерения vh ).
    2. Internet Explorer и Edge не имеют полную поддержку данных единиц измерения:
      • IE работает только с версии 9.0 (поддерживает значение vm , вместо vmin ).
      • IE 10, IE 11 не поддерживают значение vmax .
      • Edge 12, 13, 14 не поддерживают значение vmax .

    Завершая данную большую тему, думаю стоит рассмотреть еще один способ как можно задать размер шрифта в CSS, а именно использование ключевых слов совместно со свойством font-size.

    Полный перечень возможных ключевых слов с расшифровкой размещен в следующей таблице:

    Значение Описание
    medium Устанавливает размер шрифта среднего размера. Это значение по умолчанию.
    small Устанавливает размер шрифта маленького размера. Эквивалент 13px (пикселов).
    x-small Задает размер шрифта очень маленького размера. Эквивалент 10px (пикселов).
    xx-small Задает размер шрифта сверх маленького размера. Эквивалент 9px (пикселов).
    smaller Устанавливает размер шрифта меньшего размера, чем у родительского элемента.
    large Устанавливает размер шрифта большого размера. Эквивалент 18px (пикселов).
    x-large Устанавливает размер шрифта очень большого размера. Эквивалент 24px (пикселов).
    xx-large Задает размер шрифта сверх большого размера. Эквивалент 32px (пикселов).
    larger Устанавливает размер шрифта большего размера, чем у родительского элемента.

    Рассмотрим пример использования ключевых слов на странице:

    В нашем случае ключевое слово smaller (одноименный класс) устанавливает шрифт на один пиксель меньше, чем у родительского элемента с классом xx-small, а ключевое слово larger устанавливает шрифт на 6 пикселей больше, чем у родительского элемента (xx-large).

    Результат нашего примера:

    Рис.59 Использование ключевых слов для управления размером шрифта.

    Вопросы и задачи по теме

    Перед тем как перейти к изучению следующей темы пройдите следующие практические задания:

      Практическое задание № 13
      У нас имеются следующие стили, в которых элемент и элементы

    Ответьте на следующие вопросы к практическому заданию:

    • Сколько в пикселях составляет размер шрифта текста, вложенного внутри тела документа — .
    • Сколько в пикселях составляет размер шрифта текста, внутри блока

    Ответьте на следующие вопросы к практическому заданию:

    • Сколько в пикселях составляет размер шрифта текста, вложенного внутри тела документа — .
    • Сколько в пикселях составляет размер шрифта текста, внутри блока

    Ответьте на следующие вопросы к практическому заданию:

    • Сколько в пикселях составляет размер шрифта текста, вложенного внутри тела документа — .
    • Сколько в пикселях составляет размер шрифта текста, внутри блока

    Какие единицы измерения выбирать при верстке

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

    Единицы длины бывают двух категорий: абсолюные и относительные. К абсолютным относятся:

    • дюймы (in)
    • сантиметры (cm)
    • миллиметры (mm)
    • пункты (pt)
    • пики (pc)

    В терминах спецификации css 1pt = 1/72in, а 1pc = 12pt.
    В свойстве font-size задание отрицательного значения в единицах длины, например -25cm, недопустимо.
    Почему абсолютные? Потому что за ними в физическом мире стоит реальная величина, тоесть эталоны.
    С такими единицами работает устройство вывода, которое имеет реальный физический размер, например: при печати будем использовать такие единицы.
    А вот для мониторов эти единицы не имеют никакого значения, есть некая условность, но это действительно только лишь условность.
    К относительным единицам относятся:

    • em (кегельная)
    • x-height (ex)
    • px (пикселы)

    Проценты (%) — всегда величина, о которой стоит говорить отдельно. Она настолько важная, что W3C вынес ее в отдельную колонку. Тоесть % можно писать не у всех правил, а только у некоторых и когда мы пишем % мы должны понимать от чего они считаются.
    Пиксель — это мельчайшая точка, которую можно установить на экране компьютера.
    Почему пиксель относительная величина? Мы берем физический монитор, у которого есть диагональ — это реальная физическая величина. Но ведь мы можем поставить на нем разрешение любое, правильно? В зависимости от поставленного нами разрешения, величина пикселя может меняться. Вот почему пиксель — относительная величина. Тоесть на разных мониторах px имеет разный размер.
    Единица em ссылается на размер стандартного шрифта, установленного в глобальныъ параметрах браузера.

    На таблице обозначения отдельных важных размеров шрифтов. Большая их часть нам не пригодится, но некоторые нужно знать.
    Под цифрой 4 обозначена базовая линия элементов шрифтов, а под цифрой 13 — font-size, em. Так вот, em — это размер шрифта, который определяется высотой заглавной буквы и размеры выносных элементов сверху и снизу( вверху могут появиться диакритические знаки, например: ё или й ).
    А что такое ex? Это высота строчной буквы. Под цифрой 3 в таблице так и написано. Для разных шрифтов это соотношение имеет разную величину. Но не все браузеры поддерживают такое соотношение.
    Например: компания Microsoft предложила считать 1em = 2ex для всех типов шрифтов. Именно по причине, что ex в разных браузерах может быть разным, лучше в работе его не использовать. Некоторые браузеры действительно считают ex правильно, а некоторые, как IE в половину от em. А в реальности он может быть 0.46, на маленьких шрифтах такое несоответствие незаметно, а на больших будет существенное отличие.
    Теперь по поводу использования на сайтах pt, pc, in.
    Если мы размер элемента на сайте укажем в pt, он все равно от чего-то будет браться. Так как же браузер решает эту проблему?
    На заре развития компьютерной техники, размеры мониторов были небольших диапозонов. И компания Microsoft предложила взять для определенности 96px = 1in и таково будет у нас разрешение наших устройств.
    1in = 96px
    А Apple сказал нет 🙂 Давайте будем ориентироваться на полиграфистов и возьмем:
    1in = 72pt
    Но на практике получилось следующее: чем меньше разрешение, тем меньше есть возможность разместить там информацию.
    Поэтому Apple передумала и сделала 1in = 96px, но это все полная ерунда, так как реальная физическое разрешение ваших устройств колеблется примерно от 60 — 600px / in.
    Но по прежнему величина 96 является определяющим для пересчета. Это значит, что если написать размер 10pt, то браузер сделает следующее: 96 / 72 * 10. Вот такая история при пересчете pt в px.
    На практике я не советую на мониторах использовать абсолютные единицы. На мониторах это вообще не имеет никакого значения, а вот при печати желательно, как раз их то и использовать. При печати нужно заботиться о том, чтобы все выводилось в pt.

    5. CSS — Относительные и абсолютные единицы измерения

    Прежде чем перейти к практическим упражнения, мы бы хотели кратко рассказать о единицах измерения в CSS.

    CSS поддерживает множество единиц измерений, включая абсолютные единицы измерения, такие как дюймы, сантиметры, пункты и т.д., а также относительные единицы измерения, такие как проценты, em и т.д. Эти значения необходимо использовать при указании различных измерений в ваших правилах стиля, например border = «5px solid blue».

    Ниже перечислены все единицы измерения CSS вместе с соответствующими примерами:

    Таблицы стилей для веба Советы и хитрости по CSS

    См. также оглавление со всеми советами.

    em , px , pt , cm , in …

    Указывать длину в CSS можно в разных единицах. Некоторые из них пришли из типографской традиции, как пункт ( pt ) и пика ( pc ), другие, напр. сантиметр ( cm ) и дюйм ( in ), знакомы нам в повседневном обиходе. Есть и «волшебная» единица, придуманная специально для CSS: px . Значит ли это, что для разных свойств нужны разные единицы?

    Нет, единицы измерения не имеют отношения к свойствам, но имеют прямое отношение к средствам отображения: экран или бумага.

    Любые единицы измерения можно использовать где угодно. Свойство со значением в пикселях ( margin: 5px ) также допускает и значения в дюймах или сантиметрах ( margin: 1.2in; margin: 0.5cm ), и наоборот.

    Но в целом для отображения на экране и для печати лучше использовать разные наборы единиц измерения. Советы по использованию единиц собраны в следующей таблице:

    Ре­ко­мен­ду­ются

    Мож­но ино­гда

    Не ре­ко­мен­ду­ются

    Экран

    em, px, %

    ex

    pt, cm, mm, in, pc

    Печать

    em, cm, mm, in, pt, pc, %

    px, ex

    Соотношение между абсолютными единицами таково: 1in = 2.54cm = 25.4mm = 72pt = 6pc

    Если у вас есть под рукой линейка, можете проверить точность своего устройства. Вот прямоугольник высотой 1 дюйм (2.54cm): ↑
    72pt

    Так называемые абсолютные единицы ( cm , mm , in , pt и pc ) в CSS означают то же самое, что и везде, но только если у устройства вывода достаточно высокое разрешение. На лазерном принтере 1cm должен быть точно равен 1 сантиметру. Но на устройствах низкого разрешения, вроде компьютерных экранов, CSS этого не требует. И вправду, разные устройства и разные реализации CSS норовят отобразить их по-разному. Лучше оставить эти единицы для устройств высокого разрешения, в частности для печати. На компьютерных экранах и мобильных устройствах может получиться не то, что ожидалось.

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

    CSS не уточняет, что именно понимается под «высоким разрешением». Но так как у дешевых принтеров сегодня бывает не менее 300 точек на дюйм, а у хороших экранов порядка 200 точек на дюйм, граница, скорее всего, проходит где-то между этими значениями.

    Еще одна причина не использовать абсолютные единицы где-либо, кроме печати: на разные экраны мы смотрим с разного расстояния. 1 сантиметр на экране настольного компьютера выглядит маленьким. Но на мобильном экране прямо перед глазами — это много. Лучше вместо них использовать относительные единицы, напр. em .

    Единицы em и ex зависят от размера шрифта и могут быть свои для каждого элемента в документе. Единица em — просто размер шрифта. В элементе, которому задан шрифт в 2in, 1em и означает эти 2in. Указание размеров (напр., для отступов) в em означает, что они задаются относительно шрифта, и какой бы ни был шрифт у пользователя — крупный (напр. на большом экране) или мелкий (напр. на мобильном устройстве), эти размеры останутся пропорциональными. Объявления наподобие text-indent: 1.5em и margin: 1em в CSS крайне популярны.

    Единица ex используется нечасто. В ней выражаются размеры, которые должны отсчитываться от x-высоты шрифта. X-высота — это, грубо говоря, высота строчных букв вроде a , c, m, или o. У шрифтов с одинаковым размером (и, соответственно, при одинаковом em ) может быть огромная разбежка в размерах строчных букв, и если важно, чтобы какая-то картинка, например, соответствовала x-высоте, единица ex к вашим услугам.

    Единица px в CSS волшебная. Она не связана с текущим шрифтом, но и с физическими сантиметрами или дюймами обычно тоже не связана. Единица px определена как что-то маленькое, но видимое, т.е. горизонтальную линию толщиной 1px можно было отобразить с четкими краями (без сглаживания). Что считается четким, маленьким и видимым, зависит от устройства и способа пользования им: держите ли вы его прямо перед глазами, как мобильный телефон, на расстоянии вытянутой руки, как монитор, или где-то на промежуточном расстоянии, как электронную книгу? Поэтому px по определению не фиксированная длина, а нечто, зависящее от типа устройства и его обычного использования.

    Чтобы понять, почему единица px именно такая, представьте ЭЛТ-монитор из 1990-х: наименьшая точка, которую он мог отобразить, была размером примерно в 1/100 дюйма (0,25 мм) или чуть больше. Свое название единица px получила от тех экранных пикселей.

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

    На самом деле CSS требует, чтобы 1px был точно равен 1/96 дюйма при любом выводе на печать. В CSS считается, что принтерам, в отличие от экранов, не нужны разные размеры для px , чтобы отображать четкие линии. Поэтому при печати px не только одинаково выглядит независимо от устройства, но и заведомо измеряется одной и той же величиной (совсем как единицы c m , pt , mm , in и pc , как объяснялось выше).

    CSS также определяет, что растровые изображения (напр. фотографии) по умолчанию отображаются в масштабе 1 пиксель изображения на 1px. Фотография разрешением 600 на 400 будет 600px шириной и 400px высотой. Тем самым пиксели фотографии привязываются не к пикселям устройства вывода (которые могут быть очень мелкими), а к единицам px . Это позволяет точно совмещать изображения с другими элементами документа, при условии, что вы используете в своих стилях единицы px , а не pt , cm и т.д.

    Используйте em или px для шрифтов

    Единицы pt (пункт) and pc (пика) CSS получил в наследство от печатного дела. Там традиционно применялись эти и подобные единицы, а не сантиметры или дюймы. В CSS незачем использовать pt , пользуйтесь любой единицей на свой выбор. Но есть хорошая причина не использовать ни pt , ни других абсолютных единиц, а использовать только em и px .

    Вот несколько линий разной толщины. Некоторые из них могут казаться четкими, но как минимум линии в 1px и 2px должны быть четкими и видимыми:

    0.5pt, 1px, 1pt, 1.5px, 2px

    Если первые четыре линии выглядят одинаковыми (либо линия в 0.5pt пропала), скорее всего вы видите это на мониторе, не способном отображать точки мельче 1px. Если линии выглядят возрастающими по толщине, скорее всего вы видите эту страницу на качественном экране или на бумаге. А если 1pt выглядит толще, чем 1.5px, то это скорее всего экран мобильного устройства (похоже, последняя фраза описывает ситуацию до правки 2011 года — прим. перев.).

    Волшебная единица CSS, px , часто бывает удачным выбором, особенно если нужно выровнять текст с картинками, либо просто потому, что что-либо толщиной 1px (или кратной 1px) заведомо будет выглядеть четко.

    Но размеры шрифтов еще лучше задавать в em . Идея в том, чтобы 1) не задавать размер шрифта для элемента BODY (в HTML), а использовать размер шрифта по умолчанию для устройства, поскольку это наиболее удобный для читателя размер; и 2) указывать размеры шрифта других элементов в em : H1 , чтобы H1 был в 2½ раза крупнее основного шрифта страницы.

    Едиственное место, где можно использовать pt (либо cm или in ) для размера шрифтов — стили для печати, если нужно, чтобы напечатанный шрифт был строго определенного размера. Но даже там чаще всего лучше использовать размер шрифта по умолчанию.

    Таким образом, единица px избавляет от необходимости знать разрешение устройства. Независимо от разрешения устройства вывода (96 dpi, 100 dpi, 220 dpi или 1800 dpi), длина, указанная в виде целого числа px , всегда выглядит хорошо и везде достаточно похоже. Но что, если мы хотим узнать разрешение устройства, например, чтобы решить, можно ли использовать линию в 0.5px ? Выход — проверить разрешение с помощью медиавыражений. Подробности о медиавыражениях — за рамками этой статьи, но вот небольшой пример:

    Новые единицы измерения в CSS

    Чтобы было еще проще писать стилевые правила, зависящие только от размера шрифта по умолчанию, с 2013 года в CSS есть новая единица: rem . Один rem (от «root em», т.е. «корневой em» или «em корневого элемента») — это размер шрифта корневого элемента в документе. В отличие от em , который может быть для каждого элемента свой, rem для всего документа один и тот же. Например, чтобы задать элементам P и H1 одинаковый внешний отступ слева, вот для сравнения CSS-код до 2013 года:

    Благодаря другим новым единицам стало можно указывать размеры относительно окна пользователя. Это vw и vh . Единица vw — 1/100 ширины окна, а vh — 1/100 его высоты. Еще есть vmin , соответствующая меньшему из vw и vh . И vmax (можете догадаться, что она делает).

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

    Навигация по сайту

    Created 12 Jan 2010;
    Last updated Вт 05 ноя 2020 19:12:56

    Будни программиста

    Единицы измерения в CSS.EM, EX, PX, %, IN, CM, MM, pt, pc

    В CSS есть несколько основных единиц измерения это относительные и абсолютные. При работе с CSS следует точно разобраться с их применением иначе работа с каскадными таблицами стилей будет сложна и непонятна. Абсолютные единицы измерения делятся на 5 типов, относительные на 4. Следует знать что Абсолютные единицы измерения не зависят от устройства вывода, т.е. мониторов и экранов, относительные же определяют размер элемента относительна другого размера т.е. монитора, экрана, родительского элемента и т.д. Теперь подробнее о них.

    Относительные единицы измерения.

    Относительные единицы измерения обычно используют для работы с текстом и в «расширяемых» верстках. В следующей таблице приведены основные относительные единицы измерения.

    Единица Описание
    em Высота текущего элемента
    ex Высота символа х
    px Пиксел
    % Процент

    Измеряемое значение зависит от размера шрифта текущего элемента (он устанавливается через атрибут font-size). Когда он явно не задан используется размер текста который заложен в браузере. Поэтому 1em изначально равен размеру шрифта заложенному в браузере по умолчанию.

    Этот аргумент определяется как высота символа «х» в нижнем регистре. Ex привязан к размеру шрифта заданного в браузере по умолчанию, если у родительского элемента задан атрибут «font-size» то он привязан к нему.

    Пиксель это 1 точка разрешения устройства вывода (монитора или экрана). Т.е. Если у вас разрешение монитора 1024*768 то вы имеете 1024 пикселя по горизонтали и 768 пикселей по вертикале. Т.е. размер пикселя напрямую зависит от разрешения устройства вывода и его технических характреристик.

    Процентная единицы измерения зависит от размеров родительского элемента.

    Абсолютные единицы измерения.

    Абсолютные единицы измерения применяются не так часто и в большинстве своем при работе с текстом. В следующий таблицы приведены Абсолютные единицы измерения.

    Единица Описание
    in Дюйм (1 дюйм равен 2,54 см)
    cm Сантиметр
    mm Миллиметр
    pt Пункт (1 пункт равен 1/72 дюйма)
    pc Пика (1 пика равна 12 пунктам)

    Из данных единиц следует описать только pt (пункт), т.к. pc это производное от pt а использование in, cm и mm описывать не нужно.

    Пункт является самой распространенной и повсеместно используемой единицей измерения шрифтов (помните как выставляли размер шрифта в том же ворде или опен офисе?).

    Топ-пост этого месяца:  Рандомизация SVG форм
    Добавить комментарий