Доси:

Css-ի ֆունկցիաները (Մաս-2)

Приблизительное чтение: 9 минут 0 просмотров

Նկարի ֆունկցիաներ

linear-gradient

linear-gradient – Линейный градиент определяет цветовые полосы в виде прямых линий. 

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

				
					div {
 width: 800px;
 height: 500px;
 margin: 50px 50px;
 background: linear-gradient(black, white);
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div></div>
  </body>
</html>

				
			

В линейном градиенте по умолчанию цвета начинаются сверху вниз. Его можно изменить либо специальными словами, либо указанием степени наклона». deg " единица измерения. Специальные слова начинаются с " to с ".

				
					div {
 width: 800px;
 height: 500px;
 margin: 50px 50px;
 background: linear-gradient(to right, black, white);
}
				
			

Особые слова:

Անկյունը Предыдущий Տեսք
к началу
0 градусов
Вверх дном
налево
270 градусов-90 градусов
Справа налево
вниз:
180 градусов
Сверху вниз
Направо
90-270 градусов
Слева направо
вверху слева:
Из правого нижнего угла в левый верхний угол.
вверху справа
Из левого нижнего угла в правый верхний угол.
слева внизу:
Из правого верхнего угла в левый нижний угол.
в правом нижнем углу
Из левого верхнего угла в правый нижний угол.
				
					div {
 width: 800px;
 height: 500px;
 margin: 50px 50px;
 background: linear-gradient(to right, black, orange, red, white);
}
				
			

Можно определить, сколько места должен занимать каждый цвет.

				
					div {
 width: 800px;
 height: 500px;
 margin: 50px 50px;
 background: linear-gradient(to left, orange 28px, green 70%, brown);
}
				
			

У коричневого цвета не определена точка останова, поэтому он занимал бы пространство от 0% до 100%, если бы не было оранжевой и зеленой точек.

Чтобы были резкие переходы между цветами, две соседние точки должны быть установлены в одном и том же месте;

				
					div {
 width: 800px;
 height: 500px;
 margin: 50px 50px;
 background: linear-gradient(to bottom left, orange 50%, black 50%);
}
				
			

При создании градиента с двумя цветами плавная смена цветов осуществляется от середины данного объекта. Его можно изменить, указав, скажем, 20% вместо базового 50%.

				
					div {
 width: 800px;
 height: 500px;
 margin: 50px 50px;
 background: linear-gradient(orange, 20%, black);
}
				
			

Для каждого цвета можно определить две точки, которые будут определять пространство цвета в данном объекте. Также мы можем определить область плавного изменения цвета. Давайте посмотрим на пример:

				
					div {
 width: 800px;
 height: 500px;
 margin: 50px 50px;
}
.div01 {
  background: linear-gradient(to left,
   lime 20%, red 30%, red 45%, cyan 55%, cyan 70%, yellow 80%);
  background: linear-gradient(to left,
   lime 20%, red 30% 45%, cyan 55% 70%, yellow 80%);
}
				
			

Таким образом, зеленый цвет занимает от 0% до 20%, плавный переход от зеленого к красному занимает 10%(20%->30%), от 30% до 45% — чистый цвет красного без плавного изменения. 

От 451ТП3Т к 551ТП3Т происходит плавный переход от красного к синему. синий цвет не изменился с 55% на 70%.

От 701ТП3Т к 801ТП3Т происходит плавный переход от синего к желтому. Из 80% 100% тоже занят желтым.

Нижняя часть аналогична. короче сказано(  linear-gradient(to left,   lime 20%, red 30% 45%, cyan 55% 70%, yellow 80% );  ):

Тот же рисунок с резким изменением цвета:

				
					div {
 width: 800px;
 height: 500px;
 margin: 50px 50px;
}
.div02 {
 background: linear-gradient(to left,
   lime 25%, red 25%, red 50%, cyan 50%, cyan 75%, yellow 75%);
 background: linear-gradient(to left,
   lime 25%, red 25% 50%, cyan 50% 75%, yellow 75%);
}
				
			

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

				
					div {
 width: 600px;
 height: 400px;
 margin: 50px 50px;
 background: linear-gradient(to right, red, 20%, transparent);
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body style="background: green">
    <div></div>
  </body>
</html>

				
			

Градиенты можно накладывать слоями, если они имеют некоторую прозрачность; ему будет установлено последнее значение rgba.

				
					  div {
    width: 600px;
    height: 400px;
    margin: 50px 50px;
    background: 
      linear-gradient(217deg, rgba(255, 0, 0, 0.8), rgba(255, 0, 0, 0) 70.71%),
      linear-gradient(127deg, rgba(0, 255, 0, 0.8), rgba(0, 255, 0, 0) 70.71%),
      linear-gradient(336deg, rgba(0, 0, 255, 0.8), rgba(0, 0, 255, 0) 70.71%);
  }
				
			

radial-gradient

Круговой градиент похож на линейный. Круг определяет круг градиента от центральной точки.

Точку можно менять, как и форму круга: круглую или овальную. circle  или  ellipse(այս մեկը կանխադրված արժեքն է).

По умолчанию для градиента установлено значение 50%. 50% центр. 

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

				
					div {
 width: 800px;
 height: 400px;
 margin: 50px 50px;
 background: radial-gradient(red, blue);
}
				
			

Также можно определить цветовые точки на круговом градиенте:

				
					div {
 width: 800px;
 height: 400px;
 margin: 50px 50px;
 background: radial-gradient(circle, green 10%, yellow 20% 30%, skyblue 40%);
}
				
			

 

Определить центр градиента можно: отмечено " at ", после чего точки по горизонтали и вертикали определяются процентами или специальными словами (слева, справа и т. д.).

top left = left top = 0% 0% (վերևի ձախ անկյունում);

top = top center = center top = 50% 0% (վերևի մեջտեղում)

right top = top right = 100% 0% (վերևի աջ անկյունում);

left = left center = center left = 0% 50% (կենտրոնի ձախ անկյունում);

center = center center = 50% 50% (կենտրոնում) — կանխադրված է այս մեկը։

right = right center = center right = 100% 50% (կենտրոնի աջ անկյունում);

bottom left = left bottom = 0% 100% (ներքևի ձախ անկյունում);

bottom = bottom center = center bottom = 50% 100% (ներքևի կենտրոնում);

bottom right = right bottom = 100% 100% (ներքևի աջ անկյունում):

				
					div {
 width: 800px;
 height: 400px;
 margin: 50px 50px;
 background: radial-gradient(circle at top left, green 10%, 
             yellow 20% 30%, skyblue 40%);
}
				
			

Определить размеры кругового градиента можно четырьмя специальными словами:

closest-side(ըստ օբյեկտի ամենամոտ կողմի),

closest-corner(ըստ օբյեկտի ամենամոտ անկյան),

farthest-side(ըստ օբյեկտի ամենահեռու կողմի․ սա կանխադրված է),

farthest-corner(ըստ օբյեկտի ամենահեռու անկյան):

closest-side՝

				
					div {
 width: 800px;
 height: 400px;
 margin: 50px 50px;
 background: radial-gradient(ellipse closest-side at 50% 20%, green, 
             yellow 10%, blue 50%, beige);
}
				
			

Номер позиции установлен  at 50% 20% координаты: вертикальные: 20%. Ближайшая к точке сторона — это вершина объекта. поэтому круг будет растянут на расстояние между ближайшей к точке стороной на 20%+20% и по горизонтали на 50%+50%.


closest-corner՝

				
					div {
 width: 800px;
 height: 400px;
 margin: 50px 50px;
 background: radial-gradient(ellipse closest-corner at 30% 40%, 
             green, yellow 10%, blue 50%, beige);
}
				
			

Окружность растянется на расстояние между ближайшим к точке углом.


farthest-side՝

				
					div {
 width: 800px;
 height: 400px;
 margin: 50px 50px;
 background: radial-gradient(ellipse farthest-side at 20% 50%, red, 
             yellow 10%, blue 50%, beige);
}
				
			

Номер позиции установлен at 20% 50% координаты: горизонтальные: (20%). Самая дальняя сторона — это правая часть объекта. поэтому круг растянется по горизонтали на расстояние от самой дальней стороны до точки на 80%+80% и по вертикали на 50%+50%.

 

farthest-corner՝

				
					div {
 width: 800px;
 height: 400px;
 margin: 50px 50px;
 background: radial-gradient(ellipse farthest-corner at 30% 25%, green, 
             yellow 10%, blue 50%, beige);
}
				
			

Круг будет растянут на расстояние между самым дальним углом и точкой.



Градиенты можно накладывать слоями, если они имеют некоторую прозрачность. ему будет установлено последнее значение rgba:

				
					div {
 width: 400px;
 height: 400px;
 margin: 50px 50px;
 background: radial-gradient(circle at 50% 0,
   rgba(255, 0, 0, .5),
   rgba(255, 0, 0, 0) 70.71%),
  radial-gradient(circle at 6.7% 75%,
   rgba(0, 0, 255, .5),
   rgba(0, 0, 255, 0) 70.71%),
  radial-gradient(circle at 93.3% 75%,
   rgba(0, 255, 0, .5),
   rgba(0, 255, 0, 0) 70.71%) beige;
 border-radius: 50%;
}
				
			

conic-gradient

conic-gradient – Конический градиент распределяет цвета вокруг точки, обертывая ее. 

Цветовые точки определяются в процентах или градусах (%, град). Цвета расположены по часовой стрелке.

				
					div {
 width: 400px;
 height: 400px;
 margin: 50px 50px;
 background: conic-gradient(red, blue);
}
				
			

Здесь тоже можно определить центр градиента и области, занимаемые цветами.

				
					div {
 width: 400px;
 height: 400px;
 margin: 50px 50px;
 background: conic-gradient(at 0% 30%, red 10%, yellow 30%, #1e90ff 50%);
}

				
			

 

Можно изменить начало градиента, чтобы установить новый угол, используя специальное ключевое слово «from»:

				
					div {
 width: 400px;
 height: 400px;
 margin: 50px 50px;
 background: conic-gradient(from 45deg, red, orange, 
             yellow, green, blue, purple);
}
				
			

repeating-linear-gradient

repeating-linear-gradient – Повторяющийся градиент, распространяющийся по прямой линии.

				
					div {
 width: 500px;
 height: 300px;
 margin: 15px 15px;
 background: repeating-linear-gradient(-45deg, red, red 5px, 
             blue 5px, blue 15px, orange 15px, orange 30px);
}
				
			

repeating-radial-gradient

repeating-radial-gradient - Повторяющийся круговой градиент.

				
					div {
 width: 500px;
 height: 300px;
 margin: 15px 15px;
 background: repeating-radial-gradient(circle, red 5px 10px, 
             blue 10px 20px, orange 20px 35px);
}
				
			

repeating-conic-gradient

repeating-conic-gradient – Повторяющийся конический градиент:

				
					div {
 width: 500px;
 height: 300px;
 margin: 15px 15px;
 background: repeating-conic-gradient(red 5deg 10deg, 
             blue 10deg 20deg, orange 20deg 35deg);
}
				
			

image-set()

 

Он предназначен для установки картинки в разные форматы.

из современных форматов: avifуменьшает размер изображения в 2 раза без потери качества, что ускоряет его загрузку с сервера; Формат .webp сокращает его до 30%) в настоящее время поддерживается только браузерами Chrome и Firefox. Поэтому image-set() отметит картинку в нескольких форматах.

				
					  img {
    background-image: image-set(
      "image.avif" type("image/avif"),
      "image.jpg" type("image/jpeg")
    );
  }
				
			

 

То же самое можно сделать в html, используя <picture> элемент

				
					<picture>
  <source srcset="images/image01.avif" type="image/avif" />
  <img decoding="async" src="images/image01.jpg" alt="image01" />
</picture>

				
			

cross-fade()

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

				
					  div {
    width: 500px;
    height: 500px;
    background-image: -webkit-cross-fade(
      url("html.png"),
      url("kaskadsm.jpg"),
      70%
    );
  }
				
			

Прозрачность 70% относится к первому изображению, а для второго будет установлено значение 30%.

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

Давайте посмотрим на пример:

cross-fade(url(white.png) 0%, url(black.png) 100%);  - все черное
cross-fade(url(white.png25%, url(black.png75%);  – 251ТП3Т белый, 751ТП3Т черный
cross-fade(url(white.png50%, url(black.png50%);  – 501ТП3Т белый, 501ТП3Т черный
cross-fade(url(white.png75%, url(black.png25%);  – 751ТП3Т белый, 251ТП3Т черный
cross-fade(url(white.png100%, url(black.png0%);  - полностью белый

cross-fade(url(white.png) 75%, url(black.png) 75%);  – 75% белый, 75% черный

cross-fade(url(red.png), url(yellow.png), url(blue.png));  – здесь 100% будет разделен между тремя, по 33,33% каждый. такой же как
cross-fade(url(red.png) 33.33%, url(yellow.png) 33.33%, url(blue.png) 33.33%);

element()

Функция поддерживается только FireFox -от кого-то. 

Для элемента содержимое любого элемента может быть установлено в качестве фона.

				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
    <style data-no-auto-translation=""></style>
  </head>
  <body>
    <p style="color: white; background: -moz-element(#second)">Привет, мир!!</p>
    <div id="second" style="width: 100px; height: 100px; background: orange">
      Мой ДИВ:
    </div>
  </body>
</html>

				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
    <style data-no-auto-translation=""></style>
  </head>
  <body>
    <p style="color: red; background: -moz-element(#button01)">Привет, мир!!</p>
    <button id="button01" type="button">Нажмите</button>
  </body>
</html>

				
			

paint()

Работает только с браузерами Chrome, Edge, Opera.

Фон элемента задается с помощью «background». В случае изображения оно определяется URL-адресом: background:  url(images/image01.jpg); :  

Используя функцию Paint(), мы можем нарисовать любое изображение в качестве фона. Он нарисован с помощью Javascript.

paint() представление конечного результата изображения, нарисованного на Javascript անվանումն է.

Html ֆայլը – example.html ՝

				
					body {
 margin: 0px;
 padding: 0px;
}
#screen {
 box-sizing: border-box;
 margin: 10px;
 padding: 0px;
 width: calc(100vw - 20px);
 height: calc(100vh - 20px);
 background-color: #111;
 background-image: paint(a-pattern);
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
    <script>
      CSS.paintWorklet.addModule("the-javascript-file.js");
      /*javascript ֆայլի անվանումն է*/
    </script>
  </head>
  <body>
    <section id="screen"></section>
  </body>
</html>

				
			

Javascript ֆայլը – thejavascriptfile.js՝

				
					class Shape {  /*կլասի անվանումն է */
 paint(pc, geom, properties) {
  let x = geom.width / 2;
  let y = geom.height / 2;
  pc.strokeStyle = 'white';
  pc.lineWidth = 4;
  pc.beginPath();
  pc.arc(x, y, 50, 0, 2 * Math.PI);
  pc.stroke();
  pc.closePath();
 }
}

registerPaint('a-pattern', Shape);
				
			

Հաշվիչ ֆունկցիաներ

counter() counters()

функция отобразит значение простой числовой переменной (x = 65, «Ему x лет»). Он предназначен для установки счетчика для списка.

Калькулятор состоит из трех частей:

1. counter-reset – определяет переменную, в которой сохраняется результат калькулятора. Начальное значение равно 0.

2. counter-increment - счетчик, который будет подсчитывать количество одинаковых элементов на данной странице.

3. counter() - функция, которая будет отображать результат калькулятора. Здесь определяется имя переменной.

Функция определена content  в свойстве, которое будет отображать результат калькулятора.

Например:

				
					  тело { счетчик-сброс: хашвич /* Определим переменную для счетчика с именем «хэшвич»*/ } h2::before { counter-increment: хашвич /* счетчик аминь <h2 data-no-auto-translation=""> տեսակի էլեմենտի համար 1-ով գումարվում է։ */
    content: "Համար " counter(hashvich) " - ";
    /* content-ը ::before պսևդոէլեմենտի միջոցով  իր ամբողջ պարունակությունը
 ցուցադրելու է ամեն <h2 data-no-auto-translation=""> տողից առաջ։  counter()-ի միջոցով հաշվիչի 
 արժեքն էլ է ավելանում  այդ պարունակությանը։*/
  }
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
    <script></script>
  </head>
  <body>
    <h2 data-no-auto-translation="">խաղացողը։</h2>
    <h2 data-no-auto-translation="">խաղացողը։</h2>
    <h2 data-no-auto-translation="">խաղացողը։</h2>
    <h2 data-no-auto-translation="">խաղացողը։</h2>
    <h2 data-no-auto-translation="">խաղացողը։</h2>
    <h2 data-no-auto-translation="">խաղացողը։</h2>
    <h2 data-no-auto-translation="">խաղացողը։</h2>
    <h2 data-no-auto-translation="">խաղացողը։</h2>
  </body>
</html>

				
			

counters() Посчитать список в списке можно с помощью .

				
					ol {
 counter-reset: hashvich;
 list-style-type: none;
}
li::before {
 counter-increment: hashvich;
 content: counters(hashvich, ".") " ";
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <ol>
      <li>элемент:</li>
      <li>
        элемент:
        <ol>
          <li>элемент:</li>
          <li>элемент:</li>
          <li>
            элемент:
            <ol>
              <li>элемент:</li>
              <li>элемент:</li>
              <li>элемент:</li>
            </ol>
          </li>
          <li>элемент:</li>
        </ol>
      </li>
      <li>элемент:</li>
      <li>элемент:</li>
    </ol>
    <ol>
      <li>элемент:</li>
      <li>элемент:</li>
    </ol>
  </body>
</html>

				
			

symbols()

Функция добавляет специальные символы к содержимому элемента. 

Работает только Firefox в браузере.

Существует несколько типов:

cyclic

cyclic – циклический алгоритм: перечисляемые символы присваиваются счетчику один за другим, и по завершении цикл повторяется.

				
					ol {
 list-style: symbols(cyclic "" "" "");
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
    <script></script>
  </head>
  <body>
    <ol>
      <li>элемент:</li>
      <li>
        элемент:
        <ol>
          <li>элемент:</li>
          <li>элемент:</li>
          <li>
            элемент:
            <ol>
              <li>элемент:</li>
              <li>элемент:</li>
              <li>элемент:</li>
            </ol>
          </li>
          <li>элемент:</li>
        </ol>
      </li>
      <li>элемент:</li>
      <li>элемент:</li>
    </ol>
    <ol>
      <li>элемент:</li>
      <li>элемент:</li>
    </ol>
  </body>
</html>

				
			

fixed

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

				
					ol {
 list-style: symbols(fixed "" "" "")
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
    <script></script>
  </head>
  <body>
    <ol>
      <li>элемент:</li>
      <li>элемент:</li>
      <li>элемент:</li>
      <li>элемент:</li>
      <li>элемент:</li>
      <li>элемент:</li>
      <li>элемент:</li>
      <li>элемент:</li>
      <li>элемент:</li>
      <li>элемент:</li>
      <li>элемент:</li>
      <li>элемент:</li>
      <li>элемент:</li>
      <li>элемент:</li>
    </ol>
  </body>
</html>

				
			

symbolic

symbolic – После каждого цикла размещения символов каждый символ увеличивается на единицу. 

Например: символы a, b, c. во время второго цикла они в сумме составят единицу: аа, bb, cc и т. д.

				
					div {
 margin: 70px 70px;
}
ol {
 list-style: symbols(symbolic "" "" "")
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
    <script></script>
  </head>
  <body>
    <div>
      <ol>
        <li>элемент:</li>
        <li>элемент:</li>
        <li>элемент:</li>
        <li>элемент:</li>
        <li>элемент:</li>
        <li>элемент:</li>
        <li>элемент:</li>
        <li>элемент:</li>
        <li>элемент:</li>
        <li>элемент:</li>
        <li>элемент:</li>
        <li>элемент:</li>
        <li>элемент:</li>
        <li>элемент:</li>
      </ol>
    </div>
  </body>
</html>

				
			

alphabetic

alphabetic – размещает символы как азбуку Морзе. 

Например: символы a, b, c. в первом цикле символы будут вставлены как есть, во втором цикле будут вставлены два символа: сначала аа, затем аб, ба, бб, в третьем - ааа, аба, абб, аса, акб, акк и т.д. .

				
					div {
 margin: 70px 70px;
}
ol {
 list-style: symbols(alphabetic "○" "●" "□")
}
				
			

numeric

numeric –работает как по алфавиту, но с отличием. alphabeticотображает символы азбуки Морзе и numericотображает символы в виде нумерации. Нумерация начинается с единицы. 

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

				
					div {
 margin: 70px 70px;
}
ol {
 list-style: symbols(alphabetic "0" "1" "2" "3" "4" "5" "6" "7" "8" "9");
}
				
			
				
					div {
 margin: 70px 70px;
}
ol {
 list-style: symbols(numeric "0" "1" "2" "3" "4" "5" "6" "7" "8" "9");
}
				
			

Ֆորմի ֆունկցիաներ

circle()

circle() – функция может быть использована  shape-outside  и: clip-path со свойствами CSS. Это объект будет отображаться по кругу.

clip-path , объект отображается с определенным изображением, в данном случае круглым. 

shape-outside управляет объектами, размещенными вокруг элемента (например, любым текстом). 

				
					img {
 float: left;
 clip-path: circle();
 shape-outside: circle();
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <img decoding="async" src="image.png" />
    <p>
      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Должностные лица препятствуют свободе, кроме одного, фуга est ut itaque a quod suscipit, rerum vitae accusamus nobis......
    </p>
  </body>
</html>

				
			

clip-path, изображению была присвоена форма круга, а shape-outside определил для того же изображения, что окружающие элементы (в данном случае текст) должны располагаться по кругу.



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

Единственное значение % (или другая единица измерения, специфичная для пикселя) установлено для управления только радиусом.

				
					div {
 float: left;
 width: 500px;
 height: 500px;
 background: orange;
 shape-outside: circle(48%);
}
				
			

Также возможно изменить координаты центра. 

Необходимо задать три значения, причем первое: 

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

Значение после at — это координата центра круга в горизонтальном направлении (слева направо), а второе значение — в вертикальном направлении (сверху вниз). 

Чтобы визуализировать результат, давайте используем clip-path вместо shape-outside:

				
					img {
 float: left;
 width: 400px;
 height: 400px;
 margin: 100px 100px;
 clip-path: circle(200px at 150px 200px);
}
				
			

ellipse()

ellipse() –  определяет эллиптическое изображение. Работает как круг().

«at»Перед указаны два значения, радиус круга по горизонтали и по вертикали.

				
					img {
 float: left;
 width: 400px;
 height: 400px;
 margin: 10px 10px;
 clip-path: ellipse(200px 160px);
 shape-outside: ellipse(210px 160px at 200px 200px);
}
				
			

inset()

inset() – определяет прямоугольное изображение. Принимает до четырех значений.

shape-outside:  inset( 150px )   - если вы укажете одно значение, оно будет относиться к четырем сторонам прямоугольника.

shape-outside:  inset( 150px 120px ) - первый будет относиться к верхней и нижней сторонам изображения, а второй — к левой и правой сторонам.

shape-outside:  inset( 110px 20px 60px 10px) – относится к четырем сторонам прямоугольника по часовой стрелке: верхней, правой, нижней и левой.

shape-outsideПри установке четырех значений в inset() окружающие элементы, скажем, текст, будут окружать основной элемент со всех четырех сторон значениями. Для обоих значений:  shape-outside:  inset( 110px  20px ) – 110px/2 = 55px сверху, 55px снизу и 20px/2 = 10px справа, 10px слева (у нас не будет результата слева, если float равен left).

				
					div {
 shape-outside: inset(20px 60px 40px 0px);
 background-color: orange;
 width: 200px;
 height: 200px;
 float: left;
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div></div>
    <p>
      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Officiis Impedit libero esse Odio Excepturi fuga est ut itaque a quod suscipit, rerum …….. vitae accusamus nobis:
    </p>
  </body>
</html>

				
			

Есть возможность изменить плоскость углов. Оно определяется как « round "особым словом.

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

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

				
					  img {
    float: left;
    width: 400px;
    height: 400px;
    margin: 10px 10px;
    clip-path: inset(10px round 110px 40px);
  }
  .img01 {
    float: right;
    width: 400px;
    height: 400px;
    margin: -410px 650px;
    clip-path: inset(10px round 120px 70px 40px 10px);
  }
				
			

polygon()

polygon() – функция работает со свойствами shape-outside и clip-path. Придает объекту многоугольный вид.  

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

Каждая пара состоит из координат x и y, горизонтальных и вертикальных.

Чтобы получить изображение треугольника, нужны три точки координат:

				
					div {
 float: left;
 width: 200px;
 height: 200px;
 background: orange;
 clip-path: polygon(100px 0px, 50px 100px, 150px 100px);
}
				
			

Сначала нужно определить точку  <div>в центре, то есть 100 пикселей вправо по горизонтали и 0 пикселей по вертикали. 

Левая сторона треугольника находится на 50 пикселей вправо по горизонтали и на 100 пикселей по вертикали вниз. 

Правая сторона треугольника составляет 150 пикселей по горизонтали вправо и 100 пикселей по вертикали вниз.

Как результат,

 

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

Можем ли мы определить "nonzero или evenodd особые слова. Первый отобразит изображение целиком, а второй — вместе с открытыми частями.

nonzero

				
					img {
 margin: 10px 10px;
 width: 600px;
 height: 400px;
 clip-path: polygon(nonzero, 0 40%, 100% 40%, 20% 100%, 50% 0, 80% 100%);
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <img decoding="async" src="Chicago.jpg" />
  </body>
</html>

				
			

evenodd

				
					img {
 margin: 10px 10px;
 width: 600px;
 height: 400px;
 clip-path: polygon(evenodd, 0 40%, 100% 40%, 20% 100%, 50% 0, 80% 100%);
}
				
			

Можно иметь много точек координат и получить любой многоугольник. 

Для изображений мы можем использовать следующий сайт:  https://bennettfeely.com/clippy/

Если: shape-outside, необходимо получить сложное изображение, тогда оно будет определяться изображением формата PNG, с помощью которого будет компоноваться текст. 

Для этого необходимо с помощью фотошопа отделить изображение от общей картинки и сохранить его в формате PNG (ознакомиться с процедурой вы можете по следующей ссылке:  https://youtu.be/bplx4Z5ItII или воспользуйтесь поиском: «Как вырезать объект и сохранить его на прозрачном фоне в фотошопе».

				
					div {
 float: left;
 width: 300px;
 height: 300px;
 shape-outside: url(star-smm.png);
}
				
			

Результат может быть не виден. Это связано с блокировкой CORS. 

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

Вы можете скачать его по следующей ссылке:  https://ospanel.io/download/  . 

на YouTube мы можем найти видеоурок, который поможет нам научиться устанавливать программу на компьютер и подготовить первый локальный сайт. Вы можете выполнить поиск «openserver для начинающих» на YouTube или посмотреть следующий видеоурок: https://www.youtube.com/watch?v=t9obrAGntcU   .


Может быть проблема в том, что порт 80 занят:

Его можно настроить следующим образом:

				
					img {
 float: left;
 shape-outside: url(star-smm.png);
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body style="background: grey">
    <img decoding="async" src="star-smm.png" />
    <p style="color: lime">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce dignissim Tellus et nisi facilis lobortis. Donec vel consectetur nisi. Ut urna lorem, convallis in magna id, dictum convallis felis. Как действовать эффективно
    </p>
  </body>
</html>

				
			

Текст очень близок звезде. Будет настроено удаление shape-margin особенность:

				
					img {
 float: left;
 shape-outside: url(star-smm.png);
 shape-margin: 15px;
}
				
			

При определении слоев на изображении текст будет отображаться в соответствии со слоем.

Вам нужно иметь две картинки:

первый является основным

во-вторых, определенная для него маска, представляющая собой изображение в формате PNG; это можно сделать в фотошопе.

Для подготовки мы можем рассмотреть следующие курсы:

https://www.youtube.com/watch?v=TCVIBkFZRVw
https://www.youtube.com/watch?v=kmwpVAwQ7XI

или поищите на YouTube «как вырезать части фотографий и изменить прозрачность в фотошопе».

Он будет использоваться для предоставления доступа к различным слоям изображения. shape-image-threshold  свойство. 

Он принимает значение от 0 (полная прозрачность) до 1 (непрозрачность). 

Первый слой сделал прозрачным с помощью 50%. для этого необходим доступ shape-image-threshold –значение устанавливается выше 0,5:

				
					img {
 float: left;
 margin: 100px 0px;
 width: 1000px;
 height: 667px;
 shape-outside: url(maska.png);
 shape-image-threshold: 0.6;
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
    <script></script>
  </head>
  <body style="background: grey">
    <img decoding="async" src="city.png" />
    <p style="color: lime">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce dignissim Tellus et nisi facilis lobortis. Donec vel consectetur nisi. Ut urna lorem, convallis in magna id, dictum convallis felis. Quisque posuere efficitur efficitur. Fusce in dui quis metus condimentum hendrerit id in velit…..
    </p>
  </body>
</html>

				
			

Вторую часть сделал прозрачной с помощью 70%. Надо дать ему доступ shape-image-threshold – значение установлено выше 0,7:

				
					img {
 float: left;
 margin: 100px 0px;
 width: 1000px;
 height: 667px;
 shape-outside: url(maska.png);
 shape-image-threshold: 0.8;
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
    <script></script>
  </head>
  <body style="background: grey">
    <img decoding="async" src="city.png" />
    <p style="color: lime">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce dignissim Tellus et nisi facilis lobortis. Donec vel consectetur nisi. Ut urna lorem, convallis in magna id, dictum convallis felis. Quisque posuere efficitur efficitur. Fusce in dui quis metus condimentum hendrerit id in velit…..
    </p>
  </body>
</html>

				
			

Аналогичный эффект можно получить и для градиента:

				
					  div {
    float: left;
    margin: 10px 10px;
    width: 800px;
    height: 800px;
    background-image: linear-gradient(
      to bottom right,
      rebeccapurple,
      transparent 60%
    );
    shape-outside: linear-gradient(
      to bottom right,
      rebeccapurple,
      transparent 60%
    );
    shape-image-threshold: 0.2;
  }
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
    <script></script>
  </head>
  <body>
    <div></div>
    <p>
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce dignissim Tellus et nisi facilis lobortis. Donec vel consectetur nisi. Ut urna lorem, convallis in magna id, dictum convallis felis. Quisque posuere efficitur efficitur...
    </p>
  </body>
</html>

				
			

path()

path() - функция будет использовать изображения формата SVG. 

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

 

Функция path() в настоящее время не поддерживается браузерами, поэтому вам нужно использовать SVG по-другому.

<img> элемент может быть определен svg отформатировать изображение (<img src= "“" image.svg ”>), но он будет недоступен в Javascript

Лучший способ работать с изображениями в формате svg — определить их в html с помощью специальных стрелок, что сделает их доступными также для Javascript и Css.

				
					svg {
 border: 4px solid #aaa;
 background-color: grey;
}
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <svg width="500" height="500" viewbox="0 0 200 200">
      <path
        d="M41.32,111.874a2.1,2.1,0,0,1,.5-1.582v-   1.5c0.14,0.064.28,0.118,0.415,0.173-0.086-.412-0.   167-0.835-0.2471.248,0.161,0.076.329,0.164,0.5,0.   251a50.758,50.758,0,0,1,.9-6.162H43.8c-0.091-.315-0.   081-2.994-0.081-2.994a2.267,2.267,0,0,0,.663-0.748c-0.6-1.   616.965-10.447,1.4-11.239,0.248,0.077.5,0.163,0.744,0.25,   0.355,0.89.652,1.583,0.167,2.321,0.14,0.066.28,0.119,   0.415,0.173-0.107.218-.221,0.445-0.329,0.662,0.615,0.1.   884,0.032,0.663,0.672,0.189,0.055.378, 0.109,0.577,0.164a2,   2,0,0,1-.5.922c0.415,0.5-.124.358,0,0.911a1.   888,1.888,0,0,0,.824.835c-0.107.25-.221,0.5-0.328,0.749,1.234,   0.336.619,2.929,0.247,3.819,1.116,0.617-.221,   4.077-․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․  "
      />
    </svg>
  </body>
</html>

				
			
				
					<svg  width="500" height="500" viewbox= "0 0 200 200" >
				
			

width=“500” height=“500”  – это область, где будет отображаться изображение SVG.

viewbox= “0 0 200 200”  – первые два значения — это координаты x и y содержимого SVG-изображения, то есть можно перемещать содержимое SVG-изображения в области SVG в горизонтальном (x) и вертикальном (y) направлениях. . Теперь область изображения SVG имеет ширину и высоту 500 пикселей.

Последние два значения поля просмотра, 200px, указывают, что только часть изображения, включенная в 200px, будет отображаться в области SVG размером 500px.

				
					<path d="M41.32,111……" />
				
			

<path> –такой же как path() функция.

d координаты точек изображения определяются в атрибуте.



Получить картинку в формате svg можно с помощью фотошопа:

Формат svg — это не картинка, а веб-страница, поскольку вся картинка состоит из html-кода.

Откройте этот файл» notepad++ » через программу

В коде есть определенные дополнения, которые не являются необходимыми.

Чтобы встроить изображение svg на веб-страницу, можно использовать только то, которое показано ниже.

Он установлен <body>  в элементе:

				
					<body>
  <svg width="200" height="200" viewbox="0 0 200 200">
    <path
      d="M148.875,143.375L74.162,155.208l-34.342-      67.4L93.309,34.321l67.4,34.342Z"
    />
  </svg>
</body>

				
			

Оставить комментарий

Կիսվել փաստաթուղթով
ԲՈՎԱՆԴԱԿՈՒԹՅՈՒՆ
ru_RURussian