Доси:

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

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

Աջակցող ֆունկցիաներ

attr()

Функция используется для стилизации значения атрибута.

Синтаксис функции attr():
attr(строка класса, ''мойКласс-01:” )  

class – имя атрибута.

string  – тип атрибута  

string(текст — пример: attr(строка класса, «myclass01»)), 

color(цвет), url(веб-адрес), 

integer(целое число – 1, 23, 142 и т. д.), 

number(действительное число – -5, 6,7, 10e3 и т. д.), 

angle(угол), time(время), deg(степень).

мойКласс-01: – значение атрибута. Это указывается, когда для атрибута необходимо установить значение по умолчанию.

В круглых скобках обычно указывается только имя атрибута: attr(href) ;

				
					  .site::after {
    content: attr(href);
    font-size: 0.8em;
    background: orange;
  }
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <p><a href="https://hayti.am/ru/" class="site" data-no-auto-translation="">Մեր կայքը- </a></p>
  </body>
</html>

				
			

var()

var() – определяет переменную.

Например:  div  { –laynutyun: 100px; } — «-лайнутюн» — имя переменной, «100px» — ее значение. Переменная будет использоваться в качестве значения, где необходимо установить «100 пикселей».

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

Переменная определена в другом месте var() через функцию

				
					  div {
    --laynutyun: 100px;
    width: var(--laynutyun);
    height: var(--laynutyun);
  }
				
			

 

Переменная доступна только в том селекторе, где она определена.


Чтобы сделать переменную доступной для всей таблицы стилей, ее необходимо поместить в псевдокласс :root (который <html> главный элемент).

				
					  :root {
    --narnjaguyn: orange;
  }
  div {
    background: var(--narnjaguyn);
  }
  p {
    color: var(--narnjaguyn);
  }
  button {
    background-color: var(--narnjaguyn);
  }
				
			

Другой пример:  

background-color: var(–narnjaguyn, red); - если значение переменной недоступно, цвет фона будет установлен на красный.

@media правило не поддерживает определение переменных. 

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

Их невозможно установить в качестве селектора.

env()

env() - Смартфоны сильно изменились с течением времени. всякие кнопки уже управляются с экрана. 

Например, начиная с iPhone X от Apple, все смартфоны полноэкранные, поэтому содержимое программы (текст, кнопка, поле заполнения и т. д.) нужно расположить таким образом, чтобы элементы отображались на экране, не переходя над невидимой частью. То есть необходимо определить чистую область для полноценного отображения элементов:

 

Если выделены внешние границы, скажем, для экрана iPhone X, то в случае с другими типами смартфонов проблема останется. 

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

Переменные:

env(SAFE-AREA-INSET-TOP, length)
env(SAFE-AREA-INSET-RIGHT, length)
env(SAFE-AREA-INSET-BOTTOM, length)
env(SAFE-AREA-INSET-LEFT, length)

Символы данных переменных должны быть в верхнем регистре.

Они, в отличие от обычных переменных CSS, также могут использоваться в правиле @media и определяются браузерами. Они работают env() через функцию.

Чтобы переменные стали активными, необходимо сообщить об этом браузеру. Это делается, когда Тег определяет следующие данные:

				
					<meta name= "viewport"  content= "initial-scale=1, viewport-fit=cover" >
				
			

 

вместо покрытия можно определить еще два варианта:

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

contain – веб-страница будет располагаться только в свободной области экрана.

auto - это то же самое, что containтот

Если веб-страница будет открыта на экране компьютера или ноутбука, значение четырех глобальных переменных будет равно 0. 

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

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

env(SAFE-AREA-INSET-TOP,  25px)
env(SAFE-AREA-INSET-RIGHT,  25px)
env(SAFE-AREA-INSET-BOTTOM, 25px)
env(SAFE-AREA-INSET-LEFT, 25px)

или без второстепенных значений:

env(SAFE-AREA-INSET-TOP)
env(SAFE-AREA-INSET-RIGHT)
env(SAFE-AREA-INSET-BOTTOM)
env(SAFE-AREA-INSET-LEFT)

				
					<head>
  <meta
    charset="utf-8"
    name="viewport"
    content="initial-scale=1, 
      viewport-fit=cover"
  />
  <title>hayti</title>
  <style>
    body {
      padding: env(SAFE-AREA-INSET-TOP) env(SAFE-AREA-INSET-RIGHT)
        env(SAFE-AREA-INSET-BOTTOM) env(SAFE-AREA-INSET-LEFT);
    }
  </style>
</head>

				
			

 

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

Это тот же сайт, но он выглядит как программа.  Эта технология называется PWA (подробности можно найти в сети).

«Имя программы» получено из элемента.</p><p> </p><p> Это можно покрыть кодом Javascript.</p> </div> </div> <div class="elementor-element elementor-element-9da3002 elementor-widget elementor-widget-image" data-id="9da3002" data-element_type="widget" data-widget_type="image.default"> <div class="elementor-widget-container"> <img loading="lazy" decoding="async" width="1024" height="380" src="https://hayti.am/wp-content/uploads/2023/12/desktop-pwa-window-wco-1024x380.png" class="attachment-large size-large wp-image-11242" alt="" srcset="https://hayti.am/wp-content/uploads/2023/12/desktop-pwa-window-wco-1024x380.png 1024w, https://hayti.am/wp-content/uploads/2023/12/desktop-pwa-window-wco-600x223.png 600w, https://hayti.am/wp-content/uploads/2023/12/desktop-pwa-window-wco-300x111.png 300w, https://hayti.am/wp-content/uploads/2023/12/desktop-pwa-window-wco-768x285.png 768w, https://hayti.am/wp-content/uploads/2023/12/desktop-pwa-window-wco-20x7.png 20w, https://hayti.am/wp-content/uploads/2023/12/desktop-pwa-window-wco-32x12.png 32w, https://hayti.am/wp-content/uploads/2023/12/desktop-pwa-window-wco.png 1251w" sizes="(max-width: 1024px) 100vw, 1024px" title="desktoppwawindowwco hayti hayti" /> </div> </div> <div class="elementor-element elementor-element-22ca6d5 elementor-widget elementor-widget-spacer" data-id="22ca6d5" data-element_type="widget" data-widget_type="spacer.default"> <div class="elementor-widget-container"> <div class="elementor-spacer"> <div class="elementor-spacer-inner"></div> </div> </div> </div> <div class="elementor-element elementor-element-3dc735e elementor-widget elementor-widget-text-editor" data-id="3dc735e" data-element_type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p>Если он закрыт, заголовок установлен<header> элемент и помещен в это место с определенными переменными env():</p> </div> </div> <div class="elementor-element elementor-element-4870a1d elementor-widget elementor-widget-code-highlight" data-id="4870a1d" data-element_type="widget" data-widget_type="code-highlight.default"> <div class="elementor-widget-container"> <div class="prismjs-tomorrow copy-to-clipboard"> <pre data-line="3-19" class="highlight-height language-css line-numbers" data-no-auto-translation=""> <code readonly="true" class="language-css" data-no-auto-translation=""> <xmp> header { position: fixed; left: env( titlebar-area-x, 0 ); /* սահմանում է տարածություն ձախ կողմից։ */ top: env( titlebar-area-y, 0 ); /* սահմանում է տարածություն աջ կողմից։ */ width: env( titlebar-area-width, 0 ); /* սահմանում է տվյալ օբյեկտի լայնությունը։ */ height: env( titlebar-area-height, 0 ); /* սահմանում է տվյալ օբյեկտի բարձրությունը։ */ }</xmp> </code> </pre> </div> </div> </div> <div class="elementor-element elementor-element-6647299 elementor-widget elementor-widget-code-highlight" data-id="6647299" data-element_type="widget" data-widget_type="code-highlight.default"> <div class="elementor-widget-container"> <div class="prismjs-tomorrow copy-to-clipboard"> <pre data-line="9-11" class="highlight-height language-html line-numbers" data-no-auto-translation=""> <code readonly="true" class="language-html" data-no-auto-translation=""> <xmp><!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Ծրագրի անվանումը

Ծրագրի անվանումը

Содержание программы.

 

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

url()

адрес ресурса определяется с помощью функции: любая картинка в Интернете (или на компьютере), адрес веб-шрифта и т. д.

абсолютный тип адреса:
url(https://exmple.com/images/myImg.jpg);

относительные типы адресов:
url(C:\User\images \imag01.jpg);

url(image01.jpg) если файл (в данном случае изображение) находится в том же месте, что и веб-страница, будет установлено только его имя.

Также для адреса можно использовать кавычки, что необязательно:
url(/images/myimage.png);

url(“/images/myimage.png” );

url(‘/images/myimage.png ‘ );

Функция будет определена для следующих свойств:
background, background-image, border, border-image, border-image-source, content, cursor, filter, list-style, list-style-image, mask, ,mask-image, offset-path, src :

Например:

				
					div { background-image: url(images/image01.jpg); }
				
			

Также будет использоваться  @font-face правило:

				
					@font-face {
  font-family: "Open Sans";
  src: url("/font/opensans.woff2") 
     format("woff2");
   }
				
			

Css Grid Ֆունկցիաներ

fit-content()  min-content max-content

Предположим, есть <div>, ширина и высота которого равны 100 пикселей.

 

Когда в него помещается расширенный текст, он выходит за пределы элемента div.

				
					div {
 width: 500px;
 height: 300px;
 background: orange;
}
				
			

min-content

min-content После установки div будет принимать наименьший размер ширины, а высота будет определяться содержимым div.

min-content находит самый большой элемент в div и соответственно определяет ширину данного блока (div).

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

				
					div {
 width: min-content;
 background: orange;
}
				
			

В следующем примере изображение является самым большим, поэтому размер будет определен соответствующим образом:

 

min-content также можно использовать grid-template-rows  и: grid-template-columns Со свойствами сетки:

				
					  .grid {
    display: grid;
    background: orange;
    border: 3px solid lime;
    grid-template-rows: min-content auto min-content;
  }
  .header {
    background: grey;
    border: 2px solid lime;
  }
  .content {
    background: grey;
    border: 2px solid lime;
  }
  .footer {
    background: grey;
    border: 2px solid lime;
  }
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="grid">
      <header class="header">Привет, мир!! Привет, мир!! Привет, мир!!</header>
      <div class="content">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vitae magna ipsum. Ut ac ullamcorper nisl. Sed hendrerit iaculis elit id consequat. Mauris odio metus, efficitur in nibh aliquet, luctus interdum enim. Нунк элементум
      </div>
      <div class="footer">Прощай мир!!</div>
    </div>
  </body>
</html>

				
			

grid-template-rows: min-content   auto   min-content; — приняты три значения для 3-х дочерних div внутри div:  min-content,  auto , min-content ։ 

Поскольку второй установлен на авто, он занял всю ширину экрана. два, определенные min-content, также равны ему.

max-content

max-contentне имеет ограничения по ширине. чем больше контента, тем шире будет блок.

				
					  .container {
    display: grid;
    background: orange;
    border: 3px solid lime;
    grid-template-columns: max-content max-content 1fr;
  }
  .container01 {
    color: white;
    background: grey;
    border: 3px solid lime;
  }
  .container02 {
    color: white;
    background: grey;
    border: 3px solid lime;
  }
  .container-auto {
    background: skyblue;
    border: 3px solid lime;
  }
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="container">
      <div class="container01">
        Lorem ipsum dolor сидит спокойно Lorem ipsum dolor сидит спокойно
      </div>
      <div class="container02">Лорем ipsum dolor</div>
      <div class="container-auto">Лорем ипсум</div>
    </div>
  </body>
</html>

				
			

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

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

				
					  #container {
    border: 3px solid black;
    width: 200px;
  }
  .item1 {
    width: max-content;
    border: 3px solid lime;
  }
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div id="container">
      <div class="item1">
        Lorem ipsum dolor, сидеть amet consectetur adipisicing elit.
      </div>
    </div>
  </body>
</html>

				
			

Чтобы избежать этого, будет установлен fit-content вариант.

fit-content

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

				
					#container {
 border: 1px solid black;
 width: 300px;
}
.item1 {
 width: fit-content;
 border: 1px solid black;
}
				
			
				
					<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>hayti</title>
 <link rel="stylesheet" href="style.css">
</head>
<body>
 <div id="container">
  <div class="item1">Lorem ipsum dolorLorem ipsum dolor, сидеть amet consectetur adipLorem ipsum dolor, сидеть amet consectetur adipLorem ipsum dolor, сидеть amet consectetur adipLorem ipsum dolor, сидеть amet consectetur adipvr, сидеть amet consectetur adipisicing elit.</div>
 </div>
</body>
</html>
				
			

fit-content()

fit-content() - функция установит минимальные размеры блоков, пределы которых их содержимое не должно превышать.

				
					  .container {
    display: grid;
    background: orange;
    border: 2px solid red;
    grid-template-columns:
      fit-content(250px)
      fit-content(500px) auto;
  }
  .container01 {
    color: white;
    background: grey;
    border: 2px solid lime;
  }
  .container02 {
    color: white;
    background: grey;
    border: 2px solid lime;
  }
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="container">
      <div class="container01">
        Лорем ипсум долор ипсум долор ипсум долор ипсум долор
      </div>
      <div class="container02">
        Lorem ipsum dolor, сидеть консектетур адипсит консектур адипсит консектетур адипсит консектетур адиписицинг элит.!
      </div>
      <div class="container-auto">Лорем:</div>
    </div>
  </body>
</html>

				
			

Размер блока может быть уменьшен, но содержимое не будет превышать лимит. 

Первый имеет ширину 250 пикселей, второй — 500 пикселей, а третий занимает все свободное пространство.

minmax()

minmax() Диапазон размеров задается для блока с помощью функции –.

В следующем примере первый из них уменьшится до 300 пикселей и вырастет до 500 пикселей: следующие два разделят между собой свободное пространство поровну.

				
					  .container {
    display: grid;
    background: white;
    border: 2px solid red;
    grid-template-columns: minmax(300px, 500px) 1fr 1fr;
  }
  .container01 {
    color: white;
    background: orange;
    margin: 5px;
    border: 2px solid lime;
  }
  .container02 {
    color: white;
    background: grey;
    margin: 5px;
    border: 2px solid lime;
  }
  .container-auto {
    color: white;
    background: grey;
    margin: 5px;
    border: 2px solid lime;
  }
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="container">
      <div class="container01">
        Лорем ипсум долор ипсум долор ипсум долор ипсум долор
      </div>
      <div class="container02">
        Lorem ipsum dolor, сидеть консектетур адипсит консектур адипсит консектетур адипсит консектетур адиписицинг элит.!
      </div>
      <div class="container-auto">Лорем:</div>
    </div>
  </body>
</html>

				
			

Допустим, ширина экрана составляет 1200 пикселей. если необходимо разделить его на 6 равных блоков, то он определится 1fr-в общий блок-контейнер, и он автоматически разделит блоки на шесть равных частей:  grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr :

Возможно иметь frs с разными значениями:  grid-template-columns: 2.5fr 1fr 1.2fr  3fr 1.1fr 1fr ։ Հрасчет производится так: все фр складываются - итого 9,8 фр. Если ширина экрана равна 1200px, то первый fr займет:  2.5fr/9fr*1200px = 333px-площадь и т. д. 

fr используется только в Css Grid. 

minmax() в функции frзадается только во втором значении для макс. Первый блок уменьшится до ширины 300 пикселей. Когда экран браузера расширится и ширина остальных блоков, отмеченных fr, станет более 300 пикселей, то первый блок (для которого 1fr указано как max) будет равен размеру остальных блоков, отмеченных fr:

				
					  .container {
    display: grid;
    background: white;
    border: 2px solid red;
    grid-template-columns: minmax(300px, 1fr) 1fr 1fr;
  }
  .container01 {
    color: white;
    background: orange;
    margin: 5px;
    border: 2px solid lime;
  }
  .container02 {
    color: white;
    background: grey;
    margin: 5px;
    border: 2px solid lime;
  }
  .container-auto {
    color: white;
    background: grey;
    margin: 5px;
    border: 2px solid lime;
  }
				
			

Здесь также можно использовать значения Min-content, Max-content и auto.

Если функция minmax( 100px , auto ), первый блок уменьшится до ширины 100 пикселей: в случае auto он будет расширяться как max-content. 

Если функция равна: minmax( auto, 200px), первый блок уменьшится на определенный размер и расширится до 200 пикселей.

Когда функция равна minmax( auto, auto ), результат будет:

Ширина последних двух блоков соответствует наименьшему размеру контента. Первый блок занял оставшееся свободное место.

repeat()

repeat()  Функция – пригодится, когда в одном контейнере есть несколько блоков, которые должны быть одинаковой ширины. 

При изменении экрана браузера блоки меняют свое расположение. Если все они помещаются в ширину экрана, они будут расположены рядом друг с другом. 

Если экран уменьшен, они будут расположены слева направо и сверху вниз. 

Всего этого можно добиться, установив несколько свойств:

				
					  .container {
    display: grid;
    background: white;
    border: 2px solid red;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  }
  .container01 {
    color: white;
    background: orange;
    margin: 5px;
    border: 2px solid lime;
  }
  .container02 {
    color: white;
    background: grey;
    margin: 5px;
    border: 2px solid lime;
  }
  .container03 {
    color: white;
    background: grey;
    margin: 5px;
    border: 2px solid lime;
  }
  .container04 {
    color: white;
    background: grey;
    margin: 5px;
    border: 2px solid lime;
  }
  .container05 {
    color: white;
    background: grey;
    margin: 5px;
    border: 2px solid lime;
  }
  .container06 {
    color: white;
    background: grey;
    margin: 5px;
    border: 2px solid lime;
  }
  .container07 {
    color: white;
    background: grey;
    margin: 5px;
    border: 2px solid lime;
  }
  .container08 {
    color: white;
    background: grey;
    margin: 5px;
    border: 2px solid lime;
  }
				
			
				
					<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>hayti</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="container">
      <div class="container01">
        Лорем Ипсум Долор
      </div>
      <div class="container02">
        Lorem ipsum dolor, сидеть консектетур адипсит консектур адипсит консектетур адипсит консектетур адиписицинг элит.!
      </div>
      <div class="container03">Лорем:</div>
      <div class="container04">Лорем:</div>
      <div class="container05">Лорем:</div>
      <div class="container06">Лорем:</div>
      <div class="container07">Лорем:</div>
      <div class="container08">Лорем:</div>
    </div>
  </body>
</html>

				
			

С помощью функции повторения() для каждого блока задается размер. оно определяется один раз и применяется ко всем.

Принимает два значения:
auto-fit - отвечает за количество блоков и их расположение.

второе значение относится к каждому блоку (минмакс(200px, 1fr)).

repeat() , повторяет количество и размер и располагает их слева направо и сверху вниз.

минмакс(200px, 1fr) -каждый блок уменьшится до 200 пикселей. все они будут расширяться вместе, пока на экране не останется 200 пикселей места для другого блока.

Могут быть и другие варианты:
grid-template-columns: repeat(8, 8em) - необходимо определить 8 блоков, каждый из которых будет иметь ширину 8em.

grid-template-columns: repeat(2,   7em 8em) –  необходимо определить 4 блока, где блоки шириной 7em и 8em будут повторяться дважды. 

grid-template-columns:  6em repeat(3,   5em) – первый блок будет иметь ширину 6 см, а остальные 3 — 5 см.

 

grid-template-columns:  repeat(auto-fit, minmax(200px,  1fr)) можно определить и по-другому:  

grid-template-columns:  repeat(8, minmax(200px,  1fr))

Результатом будет:

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

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