CSS-функція acos() — арккосинус числа як кут у градусах


Опис

автор: Bond

Загальний опис

автор: NagarD

Порада

Переконайтеся, що вхідне число знаходиться в діапазоні від -1 до 1. Використання чисел поза цим діапазоном призведе до недійсних значень.

автор: Bond
Порада

Результат функції acos() є значенням в радіанах. Якщо вам потрібно вивести результат у градусах, використовуйте функцію deg() для конвертації радіанів в градуси.

автор: Bond

Синтаксис

acos(number);

Функція acos може отримувати єдине значення:

<number>

Числове значення, для якого потрібно обчислити обернений синус. Значення має бути в межах від -1 до 1.

автор: Bond

Значення без задання: none

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
111 108 15.4 97 111 —
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
111 111 108 15.4

Приклади

+ запропонувати свій приклад у пісочниці

Блоки, що обертаються за допомогою функції acos()

HTML

<div id="description">
  <h2>Приклад</h2>
  <p>Блоки, що обертаються за допомогою функції acos()</p>
</div>

<div id="result">
  <div class="block" data-value="0.1">acos(0.1)</div>
  <div class="block" data-value="0.3">acos(0.3)</div>
  <div class="block" data-value="0.5">acos(0.5)</div>
  <div class="block" data-value="0.7">acos(0.7)</div>
</div>

CSS

#description {
  font-style: italic;
  text-align: left;
  line-height: 1.5;
  margin-bottom: 50px;
  padding: 12px 16px;
  background-color: #f7f7f7;
  border: 1px solid #ccc;
}

#result {
  display: flex;
  justify-content: space-around;
  align-items: center;
}

.block {
  width: 100px;
  height: 100px;
  background: blue;
  margin: 10px;
  color: white;
  text-align: center;
  line-height: 100px;
}

.block[data-value="0.1"] {
  transform: rotate(acos(0.1));
}

.block[data-value="0.3"] {
  transform: rotate(acos(0.3));
}

.block[data-value="0.5"] {
  transform: rotate(acos(0.5));
}

.block[data-value="0.7"] {
  transform: rotate(acos(0.7));
}
автор: Bond

Стрілки повернуто самою функцією: acos(1) — це 0deg, acos(0.5) — 60deg, acos(-1) — 180deg. Четверта стрілка задана як acos(2) і не повернулася зовсім: вихід за межі не дає помилки, лише мовчазний нуль. Нижче — смужка, ширину якої пораховано через sin(acos(0.5)), і таблиця обчислених значень.

HTML

<h4 class="cap">1. Кут просто з числа</h4>
<div class="row">
    <div class="dial"><i class="a1"></i><b>acos(1)</b></div>
    <div class="dial"><i class="a2"></i><b>acos(0.5)</b></div>
    <div class="dial"><i class="a3"></i><b>acos(0)</b></div>
    <div class="dial"><i class="a4"></i><b>acos(-1)</b></div>
    <div class="dial bad"><i class="a5"></i><b>acos(2)</b></div>
</div>
<p class="note">Остання стрілка мала б показати «помилку» — а показує нуль:
    аргумент поза межами дає NaN, і кут обчислюється в 0deg.</p>

<h4 class="cap">2. Той самий кут у градієнті</h4>
<div class="row">
    <div class="cone c1"></div>
    <div class="cone c2"></div>
</div>
<p class="note">Ліворуч початок конуса задано як <code>from acos(1)</code> (нуль),
    праворуч — <code>from acos(0)</code> (чверть оберту).</p>

<h4 class="cap">3. Число назад із кута</h4>
<div class="bar"><span class="fill"></span></div>
<p class="note">Ширина смужки — <code>calc(200px * sin(acos(0.5)))</code>.</p>

<table id="report">
    <thead><tr><th>запис</th><th>обчислене значення</th><th>що це означає</th></tr></thead>
    <tbody></tbody>
</table>

CSS

.row {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-bottom: 6px;
}

.dial {
    width: 96px;
    text-align: center;
}

.dial i {
    display: block;
    width: 70px;
    height: 70px;
    margin: 0 auto 4px;
    border: 1px solid #b9c6d8;
    border-radius: 50%;
    background: linear-gradient(to top, #2f6fd0 0 50%, transparent 50% 100%) center / 4px 100% no-repeat, #f6f9ff;
}

.dial b {
    font: 700 .82rem monospace;
    color: #1d3a6b;
}

.dial.bad b {
    color: #b23a3a;
}

.a1 { rotate: acos(1); }
.a2 { rotate: acos(0.5); }
.a3 { rotate: acos(0); }
.a4 { rotate: acos(-1); }
.a5 { rotate: acos(2); }

.cone {
    width: 80px;
    height: 80px;
    border-radius: 50%;
}

.c1 { background: conic-gradient(from acos(1), #2f6fd0, #3a9a4f, #d1a04a, #2f6fd0); }
.c2 { background: conic-gradient(from acos(0), #2f6fd0, #3a9a4f, #d1a04a, #2f6fd0); }

.bar {
    width: 200px;
    height: 18px;
    border: 1px solid #b9c6d8;
    background: #f6f9ff;
}

.fill {
    display: block;
    width: calc(200px * sin(acos(0.5)));
    height: 100%;
    background: #3a9a4f;
}

table {
    margin-top: 14px;
    border-collapse: collapse;
    font-size: .88rem;
}

th,
td {
    padding: 4px 9px;
    border: 1px solid #b9c6d8;
    text-align: left;
}

th {
    background: #eef4ff;
}

.cap {
    margin: 22px 0 8px;
    font-size: 1rem;
    color: #5a6472;
}

.note {
    max-width: 560px;
    color: #5a6472;
    font-size: .9em;
}

code {
    background: #eef4ff;
    border-radius: 3px;
    padding: 0 4px;
}

JS

// читаємо ОБЧИСЛЕНІ значення прямо з елементів — саме їх бачить переглядач
const kut = (klas) => getComputedStyle(document.querySelector(klas)).rotate;

const RYADKY = [
    ['rotate: acos(1)', kut('.a1'), 'нуль: косинус одиниці — кут 0'],
    ['rotate: acos(0.5)', kut('.a2'), 'класика — рівно 60 градусів, не радіани'],
    ['rotate: acos(0)', kut('.a3'), 'чверть оберту'],
    ['rotate: acos(-1)', kut('.a4'), 'півоберту — максимум, який ця функція дає'],
    ['rotate: acos(2)', kut('.a5'), '⚠️ поза межами: NaN, обчислене — 0deg, помилки немає'],
    ['width: calc(200px * sin(acos(0.5)))', getComputedStyle(document.querySelector('.fill')).width,
        'кут повернули в sin() і дістали ЧИСЛО 0.866'],
];

const tbody = document.querySelector('#report tbody');
for (const r of RYADKY) {
    const row = tbody.insertRow();
    for (const v of r) {
        row.insertCell().textContent = v;
    }
}

console.log('acos(1)   ->', kut('.a1')); // → 0deg
console.log('acos(0.5) ->', kut('.a2')); // → 60deg
console.log('acos(0)   ->', kut('.a3')); // → 90deg
console.log('acos(-1)  ->', kut('.a4')); // → 180deg
console.log('acos(2)   ->', kut('.a5'), '— мовчазний нуль замість помилки'); // → 0deg

// що переглядач узагалі приймає
console.log('width: acos(0.5) валідне?', CSS.supports('width', 'acos(0.5)')); // → false
console.log('rotate: acos(0.5deg) валідне?', CSS.supports('rotate', 'acos(0.5deg)')); // → false
console.log('rotate: acos(2) валідне?', CSS.supports('rotate', 'acos(2)'),
    '— синтаксис правильний, результат безглуздий'); // → true
console.log('rotate: acos(1 / 2) валідне?', CSS.supports('rotate', 'acos(1 / 2)')); // → true
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід