<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0">

<channel>

<title>Техноблог, заметки с тегом: css</title>
<link>https://blog.toliklunev.ru/tags/css/</link>
<description></description>
<generator>E2 (v3254; Aegea)</generator>

<item>
<title>Создание гибких, поддерживаемых круговых диаграмм с помощью CSS и SVG</title>
<guid isPermaLink="true">https://blog.toliklunev.ru/</guid>
<link>https://blog.toliklunev.ru/</link>
<comments>https://blog.toliklunev.ru/</comments>
<description>&lt;p&gt;&lt;i&gt;Это перевод статьи Леи Вероу &lt;a href="http://www.smashingmagazine.com/2015/07/designing-simple-pie-charts-with-css/"&gt;Designing Flexible, Maintainable Pie Charts With CSS and SVG&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Когда дело доходит до CSS-приёмов, нет никого более упёртого и умного в поиске решений любой проблемы чем Леа Вероу. Не так давно, Леа написала, отредактировала и опубликовала &lt;a href="http://shop.oreilly.com/product/0636920031123.do?cmp=ex-web-books-videos-product-na_smashing_mag_excerpt"&gt;Секреты CSS&lt;/a&gt;, реально фантастическую книгу об маленьких CSS-хитростях и приёмах для решения повседневных задач. Если вы думали, что знаете CSS достаточно хорошо, подумайте еще раз: вы будете удивлены. В этой статье, мы покажем немного крутых вещей из книги, которые были представлены также в &lt;a href="https://vimeo.com/channels/smashingconf/132511382"&gt;недавнем выступлении Леи на СмешингКонф Нью-Йорк&lt;/a&gt; — о создании простых круговых диаграмм с помощью CSS. Пожалуйста, учтите, что некоторые демки могут не работать так, как ожидалось из-за ограниченной поддержки в браузерах. — прим. ред.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Круговая диаграмма&lt;/b&gt;, в простейшем случае фигура из двух цветов, традиционно была чем-то непростым для создания с помощью веб-технологий, и в тоже время невероятно удачным подспорьем для отображения информации начиная от простой статистики до прогресс-баров и таймеров. Они обычно реализовывались либо с помощью графического редактора, в этом случае создавалось &lt;b&gt;несколько изображений, для нескольких значений круговой диаграммы&lt;/b&gt;, либо с помощью тяжелых JavaScript фреймворков, в случае более сложных диаграмм.&lt;/p&gt;
&lt;p&gt;И хотя добавить диаграмму не так сложно, как это было раньше, до сих пор нет простого способа. Однако есть несколько хороших, поддерживаемых реализаций, которые пригодны для использования на сегодняшний день.&lt;/p&gt;
&lt;p&gt;&lt;h2&gt;Решение, основанное на трансформациях&lt;/h2&gt;&lt;/p&gt;
&lt;p&gt;Это лучшее решение в плане разметки: нам нужен только один элемент, всё остальное будет сделано с помощью псевдо-элементов, трансформаций и CSS-градиентов. Начнём с добавления элемента:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;code data-language="html"&gt;&lt;div class="pie"&gt;&lt;/div&gt;&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;В этом месте, давайте предположим, что нам нужна круговая диаграмма, которая захардкожена под отображение 20%. Мы разберём, как сделать это более гибко позднее. Давайте стилезуем элемент под круг, который будет нашим фоном.&lt;/p&gt;
&lt;style&gt;
	#pie-0 &gt; div, #pie-50 &gt; div, #pie-pseudo &gt; div{
		width: 100px;
		height: 100px;
		border-radius: 100%;
		background: yellowgreen;
	}
&lt;/style&gt;
&lt;p&gt;&lt;figure id="pie-0"&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;&lt;p&gt;&lt;figcaption&gt;Фигура 1: Наша точка отсчёта (или диаграмма, отображающая 0%)&lt;/figcaption&gt;&lt;br /&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;code data-language="css"&gt;.pie {
	width: 100px; height: 100px;
	border-radius: 50%;
	background: yellowgreen;
}&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;Наша диаграмма будет зелёной (точнее жёлто-зелёной), с коричневой частью (#655), отображающей проценты. Мы могли бы попытаться использовать косые преобразования для процентной части, но, как показывает опыт, в итоге получается говнокод. Вместо этого, мы раскрасим левую и правую часть нашего круга в наши 2 цвета, и будем использовать вращающийся псевдо-элемент, чтобы отобразить тот процент, который нам нужен.&lt;/p&gt;
&lt;p&gt;Чтобы раскрасить половину нашего круга коричневым, мы используем простой градиент:&lt;/p&gt;
&lt;style&gt;
	#pie-50 &gt; div, #pie-pseudo &gt; div{
		background-image: linear-gradient(to right, transparent 50%, #655 0);
	}
&lt;/style&gt;
&lt;pre class="code"&gt;&lt;code data-language="css"&gt;background-image:
  linear-gradient(to right, transparent 50%, #655 0);&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;figure id="pie-50"&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;&lt;p&gt;&lt;figcaption&gt;Фигура 2: Правая часть нашего круга стала коричневой, с помощью простого градиента &lt;/figcaption&gt;&lt;br /&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Как вы можете видеть, на  фигуре 2 есть всё, что нам нужно. Теперь мы можем приступить к стилезации псевдо-элемента, который будет выступать в качестве маски.&lt;/p&gt;
&lt;pre class="code"&gt;&lt;code data-language="css"&gt;.pie::before {
	content: '';
	display: block;
	margin-left: 50%;
	height: 100%;
}&lt;/code&gt;
&lt;/pre&gt;
&lt;style&gt;
#pie-pseudo &gt; div:before{
	content: '';
	display: block;
	margin-left: 50%;
	height: 100%;
	outline: 1px dashed;
	color: rgba(0, 0, 0, 0.4)
}
&lt;/style&gt;
&lt;p&gt;&lt;figure id="pie-pseudo"&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;&lt;p&gt;&lt;figcaption&gt;Фигура 3: Псевдо-элемент, который будет действовать как маска, показан пунктирными линиями&lt;/figcaption&gt;&lt;br /&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;На Фигуре 3 вы можете видеть, где наш псевдо-элемент находится, по отношению к диаграмме. Сейчас он не стилизован, и нечего не перекрывает. Это всего лишь невидимый прямоугольник. Перед стилизацией уясним несколько моментов:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Так как мы хотим перекрыть коричневую часть нашего круга, нам нужно применить зелёный фон к псевдо-элементу, используя&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;background-color: inherit&lt;/code&gt;&lt;/pre&gt;</description>
<pubDate>Sat, 08 Aug 2015 20:49:49 +0400</pubDate>
</item>

<item>
<title>CSS Шрифт</title>
<guid isPermaLink="true">https://blog.toliklunev.ru/all/cssfont/</guid>
<link>https://blog.toliklunev.ru/all/cssfont/</link>
<comments>https://blog.toliklunev.ru/all/cssfont/</comments>
<description>&lt;p&gt;Большинство веб-сервисов для подготовки кастомных шрифтов к вёрстке конвертируют шрифт в 4-5 разных форматов, при том что конвертировать имеет смысл только в один формат, в woff. Woff лёгок, и поддерживается всеми современными браузерами. При этом woff имеет смысл кодировать в base64 и вставить непосредственно в css файл с помощью data:uri.&lt;/p&gt;
&lt;p&gt;Об этом ещё в 2012 году &lt;a href="http://artgorbunov.ru/bb/soviet/20121129/" target="_blank"&gt;писал&lt;/a&gt; Артём Поликарпов. С тех пор, как я прочитал совет Артёма, я подготавливал все шрифты вручную, т. е. конвертировал файл сначала в woff, затем кодировал в base64, затем создавал css-файл и вставлял в него всё полученное. И мечтал о сервисе, который делал бы за меня всё это автоматически. Но, к сожалению, так и не нашёл такого, и поэтому сделал сам. Собственно вот:&lt;/p&gt;
&lt;div style="overflow: hidden;"&gt;&lt;iframe src="https://cssfont.toliklunev.ru/" frameborder="0" width="340px" height="450px" style="margin-top: -87px;"&gt;&lt;/iframe&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="https://cssfont.toliklunev.ru/" target="_blank"&gt;Открыть в новой вкладке&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Плюсы шрифта в css:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;нужно подключить всего один файл;&lt;/li&gt;
&lt;li&gt;меньше запросов к серверу;&lt;/li&gt;
&lt;li&gt;текст не прыгает при загрузке шрифта.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Минусы:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;не поддерживается ИЕ ниже 9-го.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;От поддержки 8-го ИЕ я отказался (рекомендую и вам), по нескольким причинам:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;шрифт в формате eot (специальный формат для ИЕ), у меня не работал практически никогда, и как сделать, чтоб заработал, я понятия не имел;&lt;/li&gt;
&lt;li&gt;человеку с ИЕ 8 будет не до вашего кастомного шрифта, из-за которого этот браузер начнёт ещё больше тормозить, да ещё и сайт из-за него грузится дольше будет, поэтому имеет смысл подобрать стандартный шрифт.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ссылки по теме:&lt;br /&gt;
&lt;a href="http://habrahabr.ru/post/180615/" target="_blank"&gt;Ещё один способ устранить ВОШ&lt;/a&gt;&lt;/p&gt;
</description>
<pubDate>Tue, 26 Aug 2014 00:19:32 +0400</pubDate>
</item>

<item>
<title>Как сверстать стрелку без картинок</title>
<guid isPermaLink="true">https://blog.toliklunev.ru/all/kak-sverstat-strelku-bez-kartinok/</guid>
<link>https://blog.toliklunev.ru/all/kak-sverstat-strelku-bez-kartinok/</link>
<comments>https://blog.toliklunev.ru/all/kak-sverstat-strelku-bez-kartinok/</comments>
<description>&lt;p&gt;Прочитав эту заметку, вы узнайте как сверстать вот такую симпатичную стрелочку:&lt;/p&gt;
&lt;iframe width="400" height="160" frameborder="0" src="https://fiddle.jshell.net/codefucker/5J6t3/0/show/light/"&gt;&lt;/iframe&gt;
&lt;h2&gt;«Рисуем» треугольники&lt;/h2&gt;
&lt;p&gt;Возьмём обычный бокс с бордером, для наглядности раскрасив стороны в разные цвета:&lt;/p&gt;
&lt;iframe width="215" height="260" frameborder="0" src="https://fiddle.jshell.net/codefucker/5J6t3/1/show/"&gt;&lt;/iframe&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;.box{
	border-style: solid;
	border-top-color: blue;
	border-right-color: green;
	border-bottom-color: yellow;
	border-left-color: red;
}&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;&amp;lt;div class=&amp;quot;box&amp;quot; style=&amp;quot;width: 200px; height: 200px; border-width: 2px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;А теперь увеличим размер бордеров, одновременно уменьшив бокс:&lt;/p&gt;
&lt;iframe width="215" height="260" frameborder="0" src="https://fiddle.jshell.net/codefucker/5J6t3/3/show/"&gt;&lt;/iframe&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;&amp;lt;div class=&amp;quot;box&amp;quot; style=&amp;quot;width: 100px; height: 100px; border-width: 52px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Убёрем высоту и ширину совсем:&lt;/p&gt;
&lt;iframe width="215" height="260" frameborder="0" src="https://fiddle.jshell.net/codefucker/5J6t3/4/show/"&gt;&lt;/iframe&gt;
&lt;pre class="code"&gt;&lt;code data-language="html"&gt;&lt;div class="box" style="width: 0; height: 0; border-width: 102px"&gt;&lt;/div&gt;&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;Треугольники готовы.&lt;/p&gt;
&lt;h2&gt;«Рисуем» стрелку&lt;/h2&gt;
&lt;p&gt;Заготовка:&lt;/p&gt;
&lt;iframe width="215" height="80" frameborder="0" src="https://fiddle.jshell.net/codefucker/5J6t3/5/show/"&gt;&lt;/iframe&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;.arrow{
	position: relative;
	background: #09F;
	display: inline-block;
	width: 200px;
	padding: 5px;
	color: #FFF;
}&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;&amp;lt;div class=&amp;quot;arrow&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Добавим знакомые нам треугольники, с помощью псевдоэлемента :after, раскрасив все в один цвет, и сделав прозрачным левый бордер:&lt;/p&gt;
&lt;iframe width="210" height="260" frameborder="0" src="https://fiddle.jshell.net/codefucker/5J6t3/6/show/"&gt;&lt;/iframe&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;.arrow:after{
	width: 0;
	height: 0;
	position: absolute;
	top: 0;
	right: 0;
	border: 100px solid red;
	border-left-color: transparent;
	z-index: 10;
	content: &amp;quot;&amp;quot;;
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Хитрым образом спозиционируем псевдоэлемент:&lt;/p&gt;
&lt;iframe width="315" height="265" frameborder="0" src="https://fiddle.jshell.net/codefucker/5J6t3/7/show/"&gt;&lt;/iframe&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;/* добавляем */
.arrow:after{
	top: 50%;
	right: -100px;
	margin-top: -100px;
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Скроем выступы и покрасим бордеры в цвет фона:&lt;/p&gt;
&lt;iframe width="210" height="85" frameborder="0" src="https://fiddle.jshell.net/codefucker/5J6t3/8/show/"&gt;&lt;/iframe&gt;
&lt;iframe width="210" height="85" frameborder="0" src="https://fiddle.jshell.net/codefucker/5J6t3/9/show/"&gt;&lt;/iframe&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;/* добавляем */
.arrow{
	overflow: hidden;
}

.arrow:after{
	border-color: #FFF;
	border-left-color: transparent;
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Стрелка готова, для крутости можно добавить градиент:&lt;/p&gt;
&lt;iframe width="210" height="85" frameborder="0" src="https://fiddle.jshell.net/codefucker/5J6t3/10/show/"&gt;&lt;/iframe&gt;
&lt;p&gt;У метода есть 2 недостатка:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;фон должен быть однородным,&lt;/li&gt;
&lt;li&gt;по-настоящему многострочную стрелку сделать не получиться, потому-что&lt;/li&gt;
&lt;/ul&gt;
&lt;iframe width="210" height="140" frameborder="0" src="https://fiddle.jshell.net/codefucker/5J6t3/11/show/"&gt;&lt;/iframe&gt;
&lt;p&gt;но вполне возможно подобрать значение правого паддинга для 2-3 строк&lt;/p&gt;
</description>
<pubDate>Sun, 16 Sep 2012 23:37:27 +0400</pubDate>
</item>


</channel>
</rss>