├── assets ├── code.png └── css.svg ├── .github ├── FUNDING.yml ├── CONTRIBUTING.md └── PULL_REQUEST_TEMPLATE.md ├── .prettierrc ├── SECURITY.md ├── LICENSE.txt ├── .gitignore ├── CODE_OF_CONDUCT.md └── README.md /assets/code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevLoversTeam/css-interview-questions/HEAD/assets/code.png -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # FUNDING.yml 2 | # Налаштування можливостей підтримки проєкту 3 | 4 | github: ViktorSvertoka 5 | buy_me_a_coffee: viktor.svertoka 6 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "useTabs": false, 4 | "semi": true, 5 | "singleQuote": true, 6 | "trailingComma": "es5", 7 | "bracketSpacing": true, 8 | "arrowParens": "avoid", 9 | "proseWrap": "always" 10 | } 11 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # 🧠 Як зробити внесок у DevLovers 2 | 3 | Дякуємо, що хочете зробити внесок у наш проєкт! Нижче описано кілька простих 4 | правил, які допоможуть вам підготувати якісний pull request. 5 | 6 | ## 🔧 Формат доповнення 7 | 8 | - Кожне питання повинне бути оформлене в HTML-елементі `
` зі 9 | структурою: 10 | 11 | ![Code](../assets/code.png) 12 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Чекліст: 6 | 7 | - [ ] Я ознайомився з [CONTRIBUTING.md](CONTRIBUTING.md) і дотримувався 8 | вказівок. 9 | - [ ] Моє доповнення не дублює вже існуюче питання чи відповідь. 10 | - [ ] Я додав(ла) нове запитання у відповідному форматі (див. існуючі приклади). 11 | - [ ] Я додав(ла) нове запитання **в кінець файлу** з **наступним за порядком 12 | номером**. 13 | 14 | --- 15 | 16 | 17 | 18 | ... 19 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # 🔒 Security Policy 2 | 3 | ## Reporting a Vulnerability 4 | 5 | If you discover a security issue in any of my projects, I would greatly appreciate your help in resolving it responsibly. Here's how you can report it: 6 | 7 | 1. **Contact me:** 8 | Please send an email to **[devlovers.net@gmail.com](mailto:devlovers.net@gmail.com)** with: 9 | 10 | - A clear description of the issue. 11 | - Steps to reproduce the vulnerability. 12 | - Any relevant code or logs for better understanding. 13 | 14 | 2. **Handling process:** 15 | 16 | - I will acknowledge your report within **48 hours**. 17 | - Together, we will work on resolving the issue as quickly as possible. 18 | 19 | 3. **Confidentiality:** 20 | Please keep the details of the vulnerability private until it has been resolved. 21 | 22 | Your cooperation helps ensure the safety and security of my work. Thank you for contributing to a safer tech environment! 🙌 23 | -------------------------------------------------------------------------------- /assets/css.svg: -------------------------------------------------------------------------------- 1 | 2 | CSS Logo 3 | A purple square with rounded corners and the letters CSS inside in white 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 DevLovers 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | #Junk 2 | .DS_Store 3 | .vscode/ 4 | .idea/ 5 | 6 | # Logs 7 | logs 8 | *.log 9 | npm-debug.log* 10 | yarn-debug.log* 11 | yarn-error.log* 12 | lerna-debug.log* 13 | 14 | # Diagnostic reports (https://nodejs.org/api/report.html) 15 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 16 | 17 | # Runtime data 18 | pids 19 | *.pid 20 | *.seed 21 | *.pid.lock 22 | 23 | # Directory for instrumented libs generated by jscoverage/JSCover 24 | lib-cov 25 | 26 | # Coverage directory used by tools like istanbul 27 | coverage 28 | *.lcov 29 | 30 | # nyc test coverage 31 | .nyc_output 32 | 33 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 34 | .grunt 35 | 36 | # Bower dependency directory (https://bower.io/) 37 | bower_components 38 | 39 | # node-waf configuration 40 | .lock-wscript 41 | 42 | # Compiled binary addons (https://nodejs.org/api/addons.html) 43 | build/Release 44 | 45 | # Dependency directories 46 | node_modules/ 47 | jspm_packages/ 48 | 49 | # TypeScript v1 declaration files 50 | typings/ 51 | 52 | # TypeScript cache 53 | *.tsbuildinfo 54 | 55 | # Optional npm cache directory 56 | .npm 57 | 58 | # Optional eslint cache 59 | .eslintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variables file 77 | .env 78 | .env.test 79 | 80 | # parcel-bundler cache (https://parceljs.org/) 81 | .parcel-cache 82 | 83 | # Next.js build output 84 | .next 85 | 86 | # Nuxt.js build / generate output 87 | .nuxt 88 | 89 | 90 | # Gatsby files 91 | .cache/ 92 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 93 | # https://nextjs.org/blog/next-9-1#public-directory-support 94 | # public 95 | 96 | # vuepress build output 97 | .vuepress/dist 98 | 99 | # Serverless directories 100 | .serverless/ 101 | 102 | # FuseBox cache 103 | .fusebox/ 104 | 105 | # DynamoDB Local files 106 | .dynamodb/ 107 | 108 | # TernJS port file 109 | .tern-port 110 | 111 | 112 | .venv 113 | venv 114 | __pycache__ -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | - Demonstrating empathy and kindness toward other people 21 | - Being respectful of differing opinions, viewpoints, and experiences 22 | - Giving and gracefully accepting constructive feedback 23 | - Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | - Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | - The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | - Trolling, insulting or derogatory comments, and personal or political attacks 33 | - Public or private harassment 34 | - Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | - Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | [devlovers.net@gmail.com](mailto:devlovers.net@gmail.com). 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | CSS CSS logo 3 |

4 | 5 |

Найпопулярніші запитання та відповіді на співбесіді з CSS

6 | 7 |
8 | 1. Що таке CSS? І навіщо він використовується? 9 | 10 | #### CSS 11 | 12 | - CSS (Cascading Style Sheets) — це мова стилів для опису вигляду веб-сторінок. 13 | Використовується для розмітки елементів на сторінці, таких як шрифти, кольори, 14 | відступи, позиціонування та інші візуальні аспекти. CSS дозволяє відокремити 15 | контент (HTML) від стилів, що полегшує підтримку та зміну вигляду сайту. 16 | 17 |
18 | 19 |
20 | 2. Що таке каскадність у CSS?? 21 | 22 | #### CSS 23 | 24 | - Каскадність у CSS — це механізм, який визначає, як застосовуються стилі до 25 | елементів веб-сторінки, якщо для одного елемента задано кілька різних стилів із 26 | різних джерел або рівнів. Вона дозволяє браузеру вирішити, які стилі будуть мати 27 | вищий пріоритет і застосовуватися в кінцевому результаті. 28 |
29 | 30 |
31 | 3. Які є способи підключення CSS до HTML-документу? 32 | 33 | #### CSS 34 | 35 | - Вбудовані стилі (inline) — напряму в HTML-тегах через атрибут `style`. 36 | - Внутрішні стилі — у секції ` ` всередині HTML-документа. 37 | - Зовнішні стилі — у CSS-файлах, підключених через 38 | `` або `@import`. 39 | 40 |
41 | 42 |
43 | 4. Що таке CSS-селектори? Наведіть приклади. 44 | 45 | #### CSS 46 | 47 | - CSS-селектори використовуються для вибору HTML-елементів, до яких 48 | застосовуються стилі. 49 | 50 | - **Приклади:** 51 | 52 | - За тегом: `h1 { color: red; }` 53 | - За класом: `.button { background: blue; }` 54 | - За ID: `#header { padding: 10px; }` 55 | 56 | - **Комбіновані:** 57 | 58 | - Дочірні: `ul > li { margin: 5px; }` 59 | - Нащадки: `div p { font-size: 14px; }` 60 | - Атрибути: `[type="text"] { border: 1px solid gray; }` 61 | 62 | - **Псевдокласи:** 63 | 64 | - `a:hover { color: green; }` 65 | - `:nth-child(2) { font-weight: bold; }` 66 | 67 | - **Псевдоелементи:** 68 | 69 | - `p::first-line { text-transform: uppercase; }` 70 | 71 |
72 | 73 |
74 | 5. Як працює наслідування в CSS? 75 | 76 | #### CSS 77 | 78 | - Наслідування в CSS дозволяє деяким властивостям автоматично передаватися від 79 | батьківського елемента до дочірніх. 80 | 81 | - **Особливості:** 82 | 83 | 1. Автоматично наслідуються тільки текстові та декоративні властивості: 84 | 85 | - `color`, `font`, `visibility`, `line-height` тощо. 86 | 87 | 2. Не наслідуються автоматично властивості, що впливають на коробку (box model): 88 | 89 | - `margin`, `padding`, `border`, `width`, `heigh`t тощо. 90 | 91 | - **Контроль наслідування:** 92 | 93 | 1. **Примусове наслідування:** використовуйте значення inherit. 94 | 95 | ```css 96 | p { 97 | border: inherit; 98 | } 99 | ``` 100 | 101 | 2. **Відміна наслідування:** значення initial скидає властивість до початкового 102 | (згідно стандарту). 103 | 104 | ```css 105 | p { 106 | color: initial; 107 | } 108 | ``` 109 | 110 |
111 | 112 |
113 | 114 | 6. Що таке «модель коробки» (box model) в CSS і як її можна змінити? 115 | 116 | #### CSS 117 | 118 | - «Модель коробки» (box model) визначає, як розміри елемента розраховуються в 119 | CSS. Вона складається з: 120 | 121 | - **Content:** Вміст елемента (текст, зображення). 122 | - **Padding:** Внутрішній відступ між вмістом і рамкою. 123 | - **Border:** Рамка навколо padding. 124 | - **Margin:** Зовнішній відступ між елементом і сусідніми елементами. 125 | 126 | - Розрахунок ширини та висоти: 127 | 128 | - За замовчуванням: 129 | 130 | ```css 131 | Width/Height = Content + Padding + Border 132 | ``` 133 | 134 | - Зміна моделі коробки: 135 | 136 | - Використовуйте властивість box-sizing: 137 | 138 | 1. content-box (за замовчуванням): 139 | 140 | - Ширина/висота включає лише вміст. Padding і border додаються до загального 141 | розміру. 142 | 143 | ```css 144 | box-sizing: content-box; 145 | ``` 146 | 147 | 2. border-box: 148 | 149 | - Ширина/висота включають вміст, padding і border (зручніше для макетів). 150 | 151 | ```css 152 | box-sizing: border-box; 153 | ``` 154 | 155 | - Приклад: 156 | 157 | ```css 158 | * { 159 | box-sizing: border-box; 160 | } 161 | ``` 162 | 163 | - Це допомагає уникнути помилок у розмітці. 164 | 165 |
166 | 167 |
168 | 7. У чому різниця між margin і padding? 169 | 170 | #### CSS 171 | 172 | - Різниця між margin і padding: 173 | 174 | 1. Розташування: 175 | 176 | - `margin` створює зовнішній відступ між елементом і сусідніми елементами. 177 | - `padding` створює внутрішній відступ між вмістом елемента і його рамкою 178 | (border). 179 | 180 | 2. Вплив на фон: 181 | 182 | - `margin` не впливає на фон елемента; простір залишається прозорим. 183 | - `padding` є частиною елемента, тому фон розтягується на область padding. 184 | 185 | 3. Колізія (margin collapsing): 186 | 187 | - `margin` сусідніх блоків може "зливатися" в один (найбільший). 188 | - `padding` не зливається; завжди додається до внутрішнього простору. 189 | 190 | - Приклад: 191 | 192 | ```css 193 | div { 194 | margin: 20px; /* Відступ від інших елементів */ 195 | padding: 20px; /* Відступ між вмістом і рамкою */ 196 | background-color: lightblue; 197 | } 198 | ``` 199 | 200 |
201 | 202 |
203 | 8. Що таке Flexbox? 204 | 205 | #### CSS 206 | 207 | - Flexbox (Flexible Box Layout) — це CSS-модель розташування елементів, яка 208 | забезпечує гнучке вирівнювання та розподіл простору в межах контейнера, навіть 209 | якщо розміри елементів невідомі або змінюються. 210 | 211 | - **Основні поняття:** 212 | 213 | - **Flex-контейнер:** Батьківський елемент, на який застосовується 214 | `display: flex;`. 215 | - **Flex-елементи:** Дочірні елементи flex-контейнера. 216 | 217 | - **Основні властивості Flexbox:** 218 | 219 | 1. Для контейнера: 220 | 221 | - `flex-direction`: Напрямок розташування елементів (`row`, `row-reverse`, 222 | `column`, `column-reverse`). 223 | - `justify-content`: Горизонтальне вирівнювання елементів (`flex-start`, 224 | `center`, `space-between`, `space-around`, `space-evenly`). 225 | - `align-items`: Вертикальне вирівнювання елементів (`stretch`, `center`, 226 | `flex-start`, `flex-end`, `baseline`). 227 | - `align-content`: Вирівнювання рядків у багаторядковому контейнері 228 | (`stretch`, `center`, `space-between`). 229 | - `flex-wrap`: Дозволяє елементам переноситися (`nowrap`, `wrap`, 230 | `wrap-reverse`). 231 | 232 | 2. Для елементів: 233 | 234 | - `flex-grow`: Як елемент збільшується вільним простором. 235 | - `flex-shrink`: Як елемент зменшується при нестачі простору. 236 | - `flex-basis`: Базовий розмір елемента перед розподілом простору. 237 | - `align-self`: Вирівнювання конкретного елемента всередині контейнера. 238 | 239 | - Приклад: 240 | 241 | ```css 242 | .container { 243 | display: flex; 244 | justify-content: center; 245 | align-items: center; 246 | } 247 | 248 | .item { 249 | flex: 1; /* Рівний розподіл простору */ 250 | } 251 | ``` 252 | 253 |
254 | 255 |
256 | 9. Що таке Grid? 257 | 258 | #### CSS 259 | 260 | - CSS Grid — це потужна система розмітки, яка дозволяє створювати двовимірні 261 | сітки для розташування елементів як по горизонталі, так і по вертикалі. 262 | 263 | - **Основні поняття:** 264 | 265 | - **Grid-контейнер:** Елемент, на який застосовується `display: grid;`. 266 | - **Grid-елементи:** Дочірні елементи grid-контейнера. 267 | - **Лінії сітки:** Вертикальні та горизонтальні межі, що ділять сітку на 268 | осередки. 269 | - **Треки:** Рядки (`rows`) і колонки (`columns`). 270 | - **Області:** Прямокутні зони, об'єднані з кількох осередків. 271 | 272 | - **Основні властивості Grid:** 273 | 274 | 1. Для контейнера: 275 | 276 | - `grid-template-rows`, `grid-template-columns`: Задають кількість і розміри 277 | рядків та колонок. 278 | - `grid-template-areas`: Іменовані області для організації елементів. 279 | - `gap` (або `row-gap/column-gap`): Відступи між рядками та колонками. 280 | - `justify-items`, `align-items`: Вирівнювання елементів у клітинках. 281 | - `justify-content`, `align-content`: Вирівнювання всієї сітки в контейнері. 282 | 283 | 2. Для елементів: 284 | 285 | - `grid-column`, `grid-row`: Позиціювання по колонках і рядках. 286 | - `grid-area`: Розміщення в іменованій області. 287 | - `place-self`: Індивідуальне вирівнювання елемента. 288 | 289 | - Приклад: 290 | 291 | ```css 292 | .container { 293 | display: grid; 294 | grid-template-columns: 1fr 2fr; /* Дві колонки: 1 частина та 2 частини */ 295 | grid-template-rows: 100px auto; /* Рядок фіксованої висоти і автоматичний */ 296 | gap: 10px; 297 | } 298 | 299 | .item1 { 300 | grid-column: 1 / 3; /* Займає дві колонки */ 301 | } 302 | 303 | .item2 { 304 | grid-row: 2; /* Розташований у другому рядку */ 305 | } 306 | ``` 307 | 308 |
309 | 310 |
311 | 10. Що таке медіазапити та як їх використовувати? 312 | 313 | #### CSS 314 | 315 | - Медіазапити — це умови, які дозволяють застосовувати різні стилі в залежності 316 | від характеристик пристрою (наприклад, розміру екрану, орієнтації). Вони 317 | використовуються в CSS через правило @media. 318 | 319 | - Приклад медіазапиту для адаптивного дизайну: 320 | 321 | ```css 322 | /* Стилі для мобільних пристроїв */ 323 | @media (max-width: 768px) { 324 | body { 325 | background-color: lightblue; 326 | } 327 | } 328 | 329 | /* Стилі для десктопів */ 330 | @media (min-width: 769px) { 331 | body { 332 | background-color: lightgreen; 333 | } 334 | } 335 | ``` 336 | 337 |
338 | 339 |
340 | 11. Як можна приховати елемент за допомогою CSS? 341 | 342 | #### CSS 343 | 344 | - Щоб приховати елемент за допомогою CSS, можна використовувати: 345 | - `display: none;` — видаляє елемент з потоку документа. Він не займає місця 346 | на сторінці і з ним не можна взаємодіяти. 347 | - `visibility: hidden;` — елемент стає невидимим, але зберігає своє місце на 348 | сторінці. 349 | - `opacity: 0;` — робить елемент прозорим, але він залишається видимим і 350 | займає місце на сторінці. 351 | 352 |
353 | 354 |
355 | 12. Як можна зробити лого посередині екрана? 356 | 357 | #### CSS 358 | 359 | - Щоб розмістити лого посередині екрана, можна використати такі способи: 360 | 361 | 1. Flexbox: 362 | 363 | ```css 364 | body, 365 | html { 366 | height: 100%; 367 | margin: 0; 368 | display: flex; 369 | justify-content: center; 370 | align-items: center; 371 | } 372 | 373 | .logo { 374 | /* стилі лого */ 375 | } 376 | ``` 377 | 378 | 2. Grid: 379 | 380 | ```css 381 | body, 382 | html { 383 | height: 100%; 384 | margin: 0; 385 | display: grid; 386 | place-items: center; 387 | } 388 | 389 | .logo { 390 | /* стилі лого */ 391 | } 392 | ``` 393 | 394 | 3. Absolute позиціювання: 395 | 396 | ```css 397 | body, 398 | html { 399 | height: 100%; 400 | margin: 0; 401 | position: relative; 402 | } 403 | 404 | .logo { 405 | position: absolute; 406 | top: 50%; 407 | left: 50%; 408 | transform: translate(-50%, -50%); 409 | } 410 | ``` 411 | 412 |
413 | 414 |
415 | 13. Як розмістити хрестик для закриття справа зверху елемента? 416 | 417 | #### CSS 418 | 419 | - Щоб розмістити хрестик для закриття в правому верхньому куті елемента, можна 420 | використати абсолютне позиціювання: 421 | 422 | ```css 423 | .container { 424 | position: relative; /* щоб хрестик позиціонувався відносно контейнера */ 425 | } 426 | 427 | .close-btn { 428 | position: absolute; 429 | top: 10px; /* відстань від верхнього краю */ 430 | right: 10px; /* відстань від правого краю */ 431 | cursor: pointer; /* щоб курсор змінювався при наведенні */ 432 | } 433 | ``` 434 | 435 | ```html 436 |
437 |
×
438 | 439 |
440 | ``` 441 | 442 |
443 | 444 |
445 | 14. Як зробити останній елемент списку червоним, незалежно від довжини списку без JS? 446 | 447 | #### CSS 448 | 449 | - Щоб зробити останній елемент списку червоним без JavaScript, можна використати 450 | псевдоклас `:last-child:`. 451 | - Це правило зробить останній елемент у будь-якому списку (незалежно від його 452 | довжини) червоним. 453 | 454 | ```css 455 | ul li:last-child { 456 | color: red; 457 | } 458 | ``` 459 | 460 | - Це правило зробить останній елемент у будь-якому списку (незалежно від його 461 | довжини) червоним. 462 | 463 |
464 | 465 |
466 | 15. Які є можливості задати колір? 467 | 468 | #### CSS 469 | 470 | - У CSS є кілька способів задати колір: 471 | 472 | 1. Ім’я кольору: 473 | 474 | ```css 475 | color: red; 476 | ``` 477 | 478 | 2. Шістнадцятковий код: 479 | 480 | ```css 481 | color: #ff0000; /* червоний */ 482 | ``` 483 | 484 | 3. RGB (Red, Green, Blue): 485 | 486 | ```css 487 | color: rgb(255, 0, 0); /* червоний */ 488 | ``` 489 | 490 | 4. RGBA (Red, Green, Blue, Alpha): 491 | 492 | ```css 493 | color: rgba(255, 0, 0, 0.5); /* червоний з прозорістю */ 494 | ``` 495 | 496 | 5. HSL (Hue, Saturation, Lightness): 497 | 498 | ```css 499 | color: hsl(0, 100%, 50%); /* червоний */ 500 | ``` 501 | 502 | 6. HSLA (Hue, Saturation, Lightness, Alpha): 503 | 504 | ```css 505 | color: hsla(0, 100%, 50%, 0.5); /* червоний з прозорістю */ 506 | ``` 507 | 508 | 7. Ключові слова прозорості: 509 | 510 | ```css 511 | color: transparent; /* прозорий */ 512 | ``` 513 | 514 | - Ці способи дозволяють вибирати колір за різними параметрами: від прямого опису 515 | кольору до використання прозорості або відтінків. 516 | 517 |
518 | 519 |
520 | 16. Що таке z-index? Чи кожен елемент його має? 521 | 522 | #### CSS 523 | 524 | - `z-index` — це властивість CSS, яка визначає порядок накладання елементів по 525 | осі Z (глибина, перетин елементів). Елементи з більшим `z-index` накладаються 526 | поверх елементів з меншим значенням. 527 | 528 | - **Особливості:** 529 | 530 | 1. Тільки для позиційованих елементів: `z-index` працює, якщо елемент має 531 | `position`: `relative`, `absolute`, `fixed` або `sticky`. Без цього `z-index` 532 | ігнорується. 533 | 534 | 2. Значення за замовчуванням: Якщо `z-index` не задано, значення за 535 | замовчуванням — `auto`. У такому випадку порядок накладання визначається 536 | порядком у DOM. 537 | 538 | 3. Може бути від’ємним: Елементи з від’ємним `z-index` можуть накладатися позаду 539 | батьківських елементів. 540 | 541 | - Приклад: 542 | 543 | ```css 544 | .div1 { 545 | position: relative; 546 | z-index: 10; /* цей елемент буде поверх */ 547 | } 548 | 549 | .div2 { 550 | position: relative; 551 | z-index: 5; /* цей елемент буде під div1 */ 552 | } 553 | ``` 554 | 555 |
556 | 557 |
558 | 17. Які переваги і недоліки використання CSS-препроцесорів? 559 | 560 | #### CSS 561 | 562 | - **Переваги CSS-препроцесорів:** 563 | 564 | 1. **Змінні:** Легко створювати глобальні змінні для кольорів, шрифтів, 565 | розмірів. 566 | 567 | ```css 568 | $primary-color: #3498db; 569 | 570 | body { 571 | color: $primary-color; 572 | } 573 | ``` 574 | 575 | 2. **Вкладеність:** Зручний запис стилів для вкладених елементів. 576 | 577 | ```css 578 | nav { 579 | ul { 580 | li { 581 | a { 582 | color: #000; 583 | } 584 | } 585 | } 586 | } 587 | ``` 588 | 589 | 3. **Міксіни:** Повторно використовувані блоки коду. 590 | 591 | ```css 592 | @mixin flex-center { 593 | display: flex; 594 | justify-content: center; 595 | align-items: center; 596 | } 597 | 598 | div { 599 | @include flex-center; 600 | } 601 | ``` 602 | 603 | 4. **Функції:** Обчислення прямо в стилях. 604 | 605 | ```css 606 | width: calc(100% - 50px); 607 | ``` 608 | 609 | 5. **Управління кодом:** Імпорт окремих файлів (`@import`), що полегшує 610 | підтримку великого проекту. 611 | 612 | - **Недоліки CSS-препроцесорів:** 613 | 614 | 1. **Складність налаштування:** Потрібно встановлювати додаткові інструменти 615 | (наприклад, компілятор для SCSS або LESS). 616 | 617 | 2. **Продуктивність:** Велика кількість вкладеностей або міксінів може 618 | ускладнити генерований CSS і вплинути на швидкість. 619 | 620 | 3. **Залежність:** Знання синтаксису препроцесора необов'язково підтримується 621 | усіма розробниками в команді. 622 | 623 | 4. **Дебагінг:** Згенерований CSS може бути складніше дебажити, якщо немає 624 | source maps. 625 | 626 | - Використання залежить від розміру проекту та необхідності складних стилів. Для 627 | великих проектів переваги переважують недоліки. 628 | 629 |
630 | 631 |
632 | 18. Для чого існують різні рівні заголовків, якщо розмір можна встановити стилями? 633 | 634 | #### CSS 635 | 636 | - Рівні заголовків (`

`) мають інше призначення, окрім визначення 637 | розміру. Їхня основна функція — структуризація контенту для семантики та 638 | доступності: 639 | 640 | 1. **Семантика:** Заголовки формують ієрархію документа. Наприклад: 641 | 642 | `

` — головна тема сторінки. `

` — підрозділ теми `

`. `

` — 643 | підрозділ `

`, і так далі. 644 | 645 | 2. **SEO:** Пошукові системи (Google, Bing) використовують заголовки для 646 | розуміння структури і змісту сторінки. Коректна ієрархія заголовків підвищує 647 | релевантність сторінки. 648 | 649 | 3. **Доступність:** Екранні читачі для людей із порушеннями зору використовують 650 | заголовки для навігації по сторінці. 651 | 652 | 4. **Стандарти:** Використання заголовків за призначенням робить код зрозумілим 653 | для інших розробників. 654 | 655 | - Розмір заголовків можна стилізувати за допомогою CSS, але правильне 656 | використання тегів забезпечує краще розуміння і роботу сторінки. 657 | 658 |

659 | 660 |
661 | 19. Які є варіанти позиціонування елемента на сторінці? 662 | 663 | #### CSS 664 | 665 | - У CSS є кілька варіантів позиціонування елементів: 666 | 667 | 1. `static` (за замовчуванням): Елемент розташовується в потоці документа 668 | відповідно до порядку в HTML. Немає можливості змінювати його положення через 669 | властивості top, right, bottom, left. 670 | 671 | 2. `relative`: Елемент залишається в потоці документа, але його положення можна 672 | змінити відносно початкової позиції за допомогою top, right, bottom, left. 673 | 674 | 3. `absolute`: Елемент вилучається з потоку і позиціонується відносно 675 | найближчого батьківського елемента з позиціюванням (relative, absolute, 676 | fixed). Якщо такого немає, то відносно всього документа. 677 | 678 | 4. `fixed`: Елемент вилучається з потоку і закріплюється відносно вікна 679 | браузера. Його положення не змінюється при прокручуванні сторінки. 680 | 681 | 5. `sticky`: Комбінація relative і fixed. Елемент позиціонується відносно потоку 682 | документа, поки не досягне заданого порогу (top, bottom тощо), після чого 683 | "прилипає" до цього порогу при прокручуванні. 684 | 685 | 6. `inherit`, `initial`, `unset`: 686 | 687 | - inherit — наслідує значення від батьківського елемента. 688 | - initial — скидає до значення за замовчуванням (static). 689 | - unset — застосовує inherit або initial залежно від контексту. 690 | 691 | - Кожен варіант використовується залежно від завдання: від базового розташування 692 | до складного позиціонування в макетах. 693 | 694 |
695 | 696 |
697 | 20. Які бувають види display? Який використовуєте найчастіше? У чому особливість inline-block? 698 | 699 | #### CSS 700 | 701 | - Основні види display в CSS: 702 | 703 | 1. `block`: 704 | 705 | - Елемент займає всю ширину батьківського контейнера. 706 | - Починається з нового рядка. 707 | - Можна задавати ширину, висоту, внутрішні/зовнішні відступи. 708 | - Приклад: `
`, `

`. 709 | 710 | 2. `inline`: 711 | 712 | - Елемент розташовується в одному рядку з іншими елементами. 713 | - Неможливо задавати ширину та висоту. 714 | - Відступи (margin/padding) впливають лише на внутрішній простір. 715 | - Приклад: ``, ``. 716 | 717 | 3. `inline-block`: 718 | 719 | - Поєднує особливості block і inline. 720 | - Елемент розташовується в рядку, але дозволяє задавати ширину, висоту, 721 | відступи. 722 | - Зручний для створення кнопок, тегів. 723 | 724 | 4. `flex`: 725 | 726 | - Відображає елемент як контейнер для гнучкого компонування дочірніх 727 | елементів. 728 | - Використовується для вирівнювання та розподілу простору між елементами. 729 | 730 | 5. `grid`: 731 | 732 | - Задає контейнер для компонування в двовимірній сітці. 733 | - Зручний для складних макетів. 734 | 735 | 6. `none`: 736 | 737 | - Елемент не відображається на сторінці. 738 | 739 | 7. `inline-flex` / `inline-grid`: 740 | 741 | - Аналогічні flex і grid, але зберігають властивості inline. 742 | 743 | 8. `table` / `table-row` / `table-cell`: 744 | 745 | - Елементи імітують поведінку таблиць HTML. 746 | 747 | - **Найчастіше використовується:** 748 | 749 | - block, inline-block, flex, і grid — залежно від завдань. 750 | - inline-block популярний для створення кнопок або елементів меню, які 751 | потрібно розташувати в рядок, але контролювати їх розміри. 752 | 753 | - **Особливість inline-block:** 754 | 755 | - Елементи розташовуються в рядок, як inline, але поводяться як block, 756 | дозволяючи задавати ширину, висоту, та всі відступи. 757 | - Проблема: між елементами може з’явитися проміжок (через пробіли в HTML). 758 | 759 | - Виправляється: 760 | - Видаленням пробілів у коді. 761 | - Встановленням font-size: 0 для батьківського контейнера. 762 | 763 |

764 | 765 |
766 | 21. Що таке CSS-правило? 767 | 768 | #### CSS 769 | 770 | - CSS-правило складається з селектора та блоку декларацій. Селектор визначає, до 771 | яких елементів на сторінці застосовуються стилі, а блок декларацій містить 772 | властивості та їх значення, що визначають вигляд цих елементів. Наприклад: 773 | 774 | ```css 775 | p { 776 | color: red; 777 | font-size: 16px; 778 | } 779 | ``` 780 | 781 | - Тут `p` — селектор (вибирає всі абзаци), а в блоці декларацій вказано, що 782 | текст буде червоним і розмір шрифту 16px. 783 | 784 |
785 | 786 |
787 | 22. Варіанти додавання CSS стилів на сторінку? 788 | 789 | #### CSS 790 | 791 | 1. **Inline CSS:** Стилі додаються безпосередньо до HTML елементів через атрибут 792 | `style`. 793 | 794 | ```html 795 |

Text

796 | ``` 797 | 798 | 2. **Internal CSS:** Стилі додаються в ` 808 | ``` 809 | 810 | 3. **External CSS:** Стилі прописуються в окремому CSS файлі, який підключається 811 | до HTML через тег ``. 812 | 813 | ```html 814 | 815 | ``` 816 | 817 | - Ці варіанти відрізняються за пріоритетом і зручністю для масштабування 818 | проектів. 819 | 820 |
821 | 822 |
823 | 23. Типи позиціонування у CSS? 824 | 825 | #### CSS 826 | 827 | 1. **static:** За замовчуванням для всіх елементів. Елементи розташовуються в 828 | нормальному потоці документа (тобто, згідно з їх порядком у HTML). 829 | 830 | 2. **relative:** Елемент розташовується відносно його початкового положення в 831 | потоці. Можна використовувати властивості `top`, `right`, `bottom`, `left`. 832 | 833 | 3. **absolute:** Елемент позиціонується відносно найближчого батьківського 834 | елемента з позиціонуванням (не `static`). Якщо такого немає, то відносно 835 | документа. 836 | 837 | 4. **fixed:** Елемент позиціонується відносно вікна браузера, тобто він 838 | залишатиметься на тому ж місці при прокручуванні сторінки. 839 | 840 | 5. **sticky:** Елемент поводиться як relative до певного моменту, після чого 841 | стає fixed, коли прокручують сторінку до заданого порогу. 842 | 843 |
844 | 845 |
846 | 24. Блокова модель CSS? 847 | 848 | #### CSS 849 | 850 | - Блокова модель CSS (Box Model) описує, як елементи розташовуються на 851 | веб-сторінці та як обчислюються їх розміри. Вона включає такі компоненти: 852 | 853 | 1. **Content (Контент):** Це основна частина елемента, де міститься текст або 854 | інші медіа. Розміри контенту визначаються властивостями `width` і `height`. 855 | 856 | 2. **Padding (Відступи):** Простір між контентом і межами елемента (border). 857 | Відступи додаються всередині елемента. Властивості: `padding-top`, 858 | `padding-right`, `padding-bottom`, `padding-left`. 859 | 860 | 3. **Border (Межа):** Лінія, яка оточує елемент. Може мати товщину, стиль та 861 | колір. Властивості: `border-width`, `border-style`, `border-color`. 862 | 863 | 4. **Margin (Зовнішній відступ):** Простір між елементом і його сусідніми 864 | елементами. Відступи додаються зовні елемента. Властивості: `margin-top`, 865 | `margin-right`, `margin-bottom`, `margin-left`. 866 | 867 | - Коли вказуються розміри елемента через `width` і `height`, вони зазвичай 868 | враховують тільки `content`, але при додаванні `padding`, `border` і `margin`, 869 | розміри елемента змінюються. 870 | 871 | - Важливо знати, що властивість `box-sizing` дозволяє визначати, як враховуються 872 | ці величини при обчисленні розмірів елемента: 873 | 874 | - `content-box` (за замовчуванням): розміри елемента — це тільки контент. 875 | 876 | - `border-box`: розміри елемента враховують також `padding` та `border`. 877 | 878 |
879 | 880 |
881 | 25. Що таке селектор? І які селектори є? 882 | 883 | #### CSS 884 | 885 | - **Селектор** у CSS — це частина правила, яка визначає, до яких елементів на 886 | сторінці застосовуються стилі. Селектори дозволяють вибирати HTML елементи для 887 | застосування стилів. 888 | 889 | #### Основні типи селекторів: 890 | 891 | 1. **Типовий селектор (Type selector):** Вибирає елементи за їх тегом. 892 | 893 | ```css 894 | p { 895 | color: red; 896 | } 897 | ``` 898 | 899 | 2. **Класовий селектор (Class selector):** Вибирає елементи за класом, 900 | починається з крапки. 901 | 902 | ```css 903 | .my-class { 904 | color: blue; 905 | } 906 | ``` 907 | 908 | 3. **Ідентифікатор (ID selector):** Вибирає елементи за ідентифікатором, 909 | починається з решітки. 910 | 911 | ```css 912 | #my-id { 913 | color: green; 914 | } 915 | ``` 916 | 917 | 4. **Атрибутний селектор (Attribute selector):** Вибирає елементи за значенням 918 | їх атрибутів. 919 | 920 | ```css 921 | input[type='text'] { 922 | border: 1px solid black; 923 | } 924 | ``` 925 | 926 | 5. **Псевдоклас (Pseudo-class selector):** Вибирає елементи, що знаходяться в 927 | певному стані. 928 | 929 | ```css 930 | a:hover { 931 | color: red; 932 | } 933 | ``` 934 | 935 | 6. **Псевдоелемент (Pseudo-element selector):** Вибирає частини елементів, 936 | наприклад, перший рядок або першу літеру. 937 | 938 | ```css 939 | p::first-letter { 940 | font-size: 2em; 941 | } 942 | ``` 943 | 944 | 7. **Комбінатори (Combinators):** 945 | 946 | - **_Descendant_** (потомок): Вибирає елементи, які є нащадками іншого елемента. 947 | 948 | ```css 949 | div p { 950 | color: purple; 951 | } 952 | ``` 953 | 954 | - **_Child_** (прямий нащадок): Вибирає елементи, що є прямими дітьми іншого 955 | елемента. 956 | 957 | ```css 958 | div > p { 959 | color: yellow; 960 | } 961 | ``` 962 | 963 | - **_Adjacent sibling_** (сусід): Вибирає елемент, який йде безпосередньо після 964 | іншого. 965 | 966 | ```css 967 | h1 + p { 968 | margin-top: 0; 969 | } 970 | ``` 971 | 972 | - **_General sibling_** (загальний сусід): Вибирає елементи, які є сусідами 973 | певного елемента. 974 | 975 | ```css 976 | h1 ~ p { 977 | color: orange; 978 | } 979 | ``` 980 | 981 | Це основні типи селекторів, що використовуються для вибору та стилізації 982 | елементів. 983 | 984 |
985 | 986 |
987 | 26. Різниця між Reset.css та Normalize.css? 988 | 989 | #### CSS 990 | 991 | - **Reset.css** і **Normalize.css** — це два різні підходи до управління стилями 992 | за замовчуванням у браузерах, але з різними цілями: 993 | 994 | 1. **Reset.css:** 995 | 996 | - **Мета:** Видалити всі стилі браузера (включаючи відступи, поля, шрифти тощо), 997 | щоб почати з "чистого аркуша". 998 | 999 | - **Результат:** Все, що за замовчуванням задається браузером, скидається, і 1000 | елементи стають однаковими в усіх браузерах. Це часто призводить до того, що 1001 | потрібно вручну додавати стилі для базових елементів. 1002 | 1003 | - **Приклад:** 1004 | 1005 | ```css 1006 | * { 1007 | margin: 0; 1008 | padding: 0; 1009 | border: 0; 1010 | } 1011 | ``` 1012 | 1013 | 2. **Normalize.css:** 1014 | 1015 | - **Мета:** Зробити стилі браузерів більш однаковими, але не скидаючи їх 1016 | повністю. Підтримує стандартні стилі для елементів, щоб забезпечити однаковий 1017 | вигляд у всіх браузерах. 1018 | 1019 | - **Результат:** Зберігаються деякі стилі за замовчуванням, але вони 1020 | нормалізуються для забезпечення консистентності між різними браузерами 1021 | (наприклад, вирівнювання шрифтів, списки, таблиці). 1022 | 1023 | - **Приклад:** 1024 | 1025 | ```css 1026 | h1 { 1027 | font-size: 2em; 1028 | margin: 0.67em 0; 1029 | } 1030 | ``` 1031 | 1032 | - **Основна різниця:** Reset.css скидає всі стилі браузера до мінімуму, тоді як 1033 | Normalize.css підтримує базові стилі, але нормалізує їх для більшої 1034 | узгодженості між браузерами. 1035 | 1036 |
1037 | 1038 |
1039 | 27. Різниця між display: none та visibility: hidden? 1040 | 1041 | #### CSS 1042 | 1043 | `display: none` і `visibility: hidden` приховують елементи, але працюють 1044 | по-різному: 1045 | 1046 | - `display: none` 1047 | 1048 | - Елемент зникає повністю зі сторінки. 1049 | - Він не займає місця в макеті. 1050 | - Інші елементи зміщуються так, ніби його не існувало. 1051 | - Події (наприклад, кліки) не спрацьовують на ньому. 1052 | - Використовується для повного приховування елементів. 1053 | 1054 | ```css 1055 | .hidden { 1056 | display: none; 1057 | } 1058 | ``` 1059 | 1060 | - `visibility: hidden` 1061 | 1062 | - Елемент залишається на сторінці, але стає невидимим. 1063 | - Він продовжує займати місце в макеті. 1064 | - Інші елементи не зміщуються. 1065 | - Події (наприклад, кліки) не спрацьовують, хоча елемент все ще є в DOM. 1066 | 1067 | ```css 1068 | .hidden { 1069 | visibility: hidden; 1070 | } 1071 | ``` 1072 | 1073 | **Різниця:** `display: none` прибирає елемент повністю, а `visibility: hidden` 1074 | залишає його місце, але робить невидимим. 1075 | 1076 |
1077 | 1078 |
1079 | 28. Різниця між блоковим та інлайновим елементами? 1080 | 1081 | #### CSS 1082 | 1083 | - **Блокові (block) та інлайнові (inline) елементи** відрізняються способом 1084 | відображення та впливом на структуру сторінки. 1085 | 1086 | #### Блокові елементи (display: block) 1087 | 1088 | - Починаються з нового рядка. 1089 | - Автоматично займають всю доступну ширину (по горизонталі). 1090 | - Можуть містити як інші блокові, так і інлайнові елементи. 1091 | - Підтримують width, height, margin, padding. 1092 | 1093 | **Приклади:** `
`, `

`, `

-

`, `
`, `
`, `
`, 1094 | `
`, `
1126 | 1127 |
1128 | 29. Різниця між класом та ідентифікатором у CSS? 1129 | 1130 | #### CSS 1131 | 1132 | #### Клас (`class`) vs Ідентифікатор (`id`) у CSS 1133 | 1134 | | Параметр | Клас (`class`) | Ідентифікатор (`id`) | 1135 | | --------------------- | ----------------------------------------- | ----------------------------------------- | 1136 | | Синтаксис | Починається з `.` | Починається з `#` | 1137 | | Призначення | Використовується для групи елементів | Призначається одному унікальному елементу | 1138 | | Повторне використання | Може застосовуватися до кількох елементів | Повинен бути унікальним на сторінці | 1139 | | Пріоритет у CSS | Менший (0,0,1,0) | Вищий (0,1,0,0) | 1140 | | HTML приклад | `
` | `
` | 1141 | | CSS приклад | `.box { color: red; }` | `#unique-box { color: blue; }` | 1142 | 1143 | #### Різниця 1144 | 1145 | - Класи використовуються для стилізації кількох елементів. 1146 | - ID застосовується до одного унікального елемента (але можна порушити це 1147 | правило). 1148 | - ID має вищий пріоритет, тому його важко перевизначити. 1149 | - Класи краще використовувати для стилізації, ID — для JavaScript або унікальної 1150 | ідентифікації. 1151 | 1152 |
1153 | 1154 |
1155 | 30. Що таке CSS спрайт? І для чого він використовується? 1156 | 1157 | #### CSS 1158 | 1159 | - CSS спрайт — це техніка, де кілька зображень об'єднуються в одне велике 1160 | зображення, а потім через CSS задаються позиції фону для відображення різних 1161 | частин цього зображення. 1162 | 1163 | Використовується для зменшення кількості HTTP-запитів, що підвищує швидкість 1164 | завантаження сторінки. Зазвичай застосовується для іконок, кнопок або інших 1165 | маленьких зображень, що використовуються на сайті. 1166 | 1167 | #### Ось приклад використання CSS спрайту: 1168 | 1169 | 1. **Створення спрайта:** У вас є декілька маленьких зображень (наприклад, 1170 | іконки), які ви об'єднуєте в один великий файл sprite.png. 1171 | 1172 | 2. **CSS для використання спрайта:** 1173 | 1174 | ```css 1175 | .icon { 1176 | width: 50px; 1177 | height: 50px; 1178 | background-image: url('sprite.png'); 1179 | display: inline-block; 1180 | } 1181 | 1182 | .icon-facebook { 1183 | background-position: 0 0; /* Перша іконка в спрайті */ 1184 | } 1185 | 1186 | .icon-twitter { 1187 | background-position: -50px 0; /* Друга іконка в спрайті */ 1188 | } 1189 | 1190 | .icon-linkedin { 1191 | background-position: -100px 0; /* Третя іконка в спрайті */ 1192 | } 1193 | ``` 1194 | 1195 | 3. **HTML для іконок:** 1196 | 1197 | ```html 1198 |
1199 |
1200 |
1201 | ``` 1202 | 1203 | У цьому прикладі всі іконки завантажуються з одного файлу sprite.png, і за 1204 | допомогою CSS background-position визначається, яка частина спрайту 1205 | відображатиметься для кожної іконки. 1206 | 1207 | - Цей підхід вже не використовуеться в CSS, але для себе знати треба. 📝 1208 | 1209 |
1210 | 1211 |
1212 | 31. Що таке вендорні префікси? І навіщо вони використовуються? 1213 | 1214 | #### CSS 1215 | 1216 | - Вендорні префікси — це спеціальні префікси, які додаються до CSS властивостей 1217 | для забезпечення підтримки нових або експериментальних функцій у різних 1218 | браузерах. Вони використовуються, коли властивість або функція ще не є 1219 | стандартом або коли браузери реалізують їх по-своєму. 1220 | 1221 | #### Приклад вендорних префіксів: 1222 | 1223 | ```css 1224 | .element { 1225 | -webkit-transform: rotate( 1226 | 45deg 1227 | ); /* для браузерів на WebKit, таких як Chrome, Safari */ 1228 | -moz-transform: rotate(45deg); /* для Firefox */ 1229 | -ms-transform: rotate(45deg); /* для Internet Explorer */ 1230 | transform: rotate(45deg); /* стандартна властивість */ 1231 | } 1232 | ``` 1233 | 1234 | - Вендорні префікси використовуються для забезпечення сумісності з різними 1235 | браузерами, поки властивість не стане частиною офіційного стандарту CSS. Вони 1236 | допомагають тестувати нові функції та забезпечують їх роботу на більшій 1237 | кількості браузерів, поки всі вони не впровадять підтримку стандартних 1238 | властивостей. 1239 | 1240 |
1241 | 1242 |
1243 | 32. Що таке псевдоелементи? І навіщо вони використовуються? 1244 | 1245 | #### CSS 1246 | 1247 | - Псевдоелементи — це конструкції в CSS, які дозволяють стилізувати частини 1248 | елементів, які не мають власного HTML представлення. Вони дозволяють додавати 1249 | стилі до таких частин елементів, як перший рядок тексту, вміст перед або після 1250 | елемента, або створення декоративних елементів без необхідності змінювати 1251 | HTML. 1252 | 1253 | #### Основні псевдоелементи: 1254 | 1255 | - `::before` — додає вміст перед елементом. 1256 | - `::after` — додає вміст після елемента. 1257 | - `::first-letter` — стилізує першу букву тексту в елементі. 1258 | - `::first-line` — стилізує перший рядок тексту в елементі. 1259 | 1260 | **Приклад використання:** 1261 | 1262 | ```css 1263 | p::before { 1264 | content: '🔹 '; 1265 | } 1266 | 1267 | p::after { 1268 | content: ' 🔸'; 1269 | } 1270 | 1271 | p::first-letter { 1272 | font-size: 2em; 1273 | color: red; 1274 | } 1275 | ``` 1276 | 1277 | **Застосування:** Псевдоелементи використовуються для: 1278 | 1279 | - Додавання декоративних елементів без зміни HTML. 1280 | - Створення візуальних ефектів (наприклад, стилізація першої літери або першого 1281 | рядка). 1282 | - Додавання контенту перед або після елемента, наприклад, іконок або текстових 1283 | маркерів, без необхідності додавати додаткові теги в HTML. 1284 | 1285 |
1286 | 1287 |
1288 | 33. Що таке схлопування меж (margin collapsing)? 1289 | 1290 | #### CSS 1291 | 1292 | - Схлопування меж (margin collapsing) — це явище в CSS, коли вертикальні 1293 | відступи (margins) між сусідніми блоками або елементами "зливаються" в один, 1294 | замість того, щоб відображатися окремо. 1295 | 1296 | **Це зазвичай відбувається в таких ситуаціях:** 1297 | 1298 | 1. Коли два сусідні блоки мають вертикальні відступи (margins). 1299 | 1300 | 2. Коли один блок має відступ, а наступний блок не має відступу або його margin 1301 | значення нульове. 1302 | 1303 | У результаті, між елементами відображається відстань, що дорівнює найбільшому з 1304 | цих відступів. 1305 | 1306 | **Приклад:** 1307 | 1308 | ```html 1309 |
Block 1
1310 |
Block 2
1311 | ``` 1312 | 1313 | - У цьому випадку схлопування меж призведе до того, що відстань між блоками буде 1314 | 20px, а не 30px (як можна було б очікувати при додаванні 20px + 10px). 1315 | 1316 | - **Чому це відбувається?** Схлопування меж застосовується, щоб уникнути зайвих 1317 | відступів і зробити верстку більш зручною для використання, оскільки зазвичай 1318 | не має сенсу мати два відступи, що діють на ту саму частину простору. 1319 | 1320 | **Як уникнути схлопування:** 1321 | 1322 | - Використовувати `padding`, а не `margin`, якщо потрібно уникнути схлопування. 1323 | - Встановити `overflow` на елементі. 1324 | - Використовувати фонові або градієнтні елементи, щоб блокувати схлопування. 1325 | 1326 |
1327 | 1328 |
1329 | 34. Що таке z-index? Як формується контекст накладання? 1330 | 1331 | #### CSS 1332 | 1333 | - `z-index` — це CSS властивість, яка визначає порядок накладання елементів на 1334 | сторінці. Вона використовується для визначення, який елемент має бути поверх 1335 | іншого, коли елементи перекривають один одного. Вищий `z-index` означає, що 1336 | елемент буде накладатися поверх елементів з нижчим значенням `z-index`. 1337 | 1338 | #### Як працює `z-index`: 1339 | 1340 | - Значення `z-index` може бути цілим числом (наприклад, 1, 10, -5). 1341 | 1342 | - За замовчуванням, елементи з однаковим `z-index` або без нього накладаються 1343 | один на одного в порядку їх появи в HTML. 1344 | 1345 | - Чим більше значення `z-index`, тим вище елемент буде на сторінці. 1346 | 1347 | #### Приклад: 1348 | 1349 | ```css 1350 | div { 1351 | position: absolute; 1352 | } 1353 | 1354 | .div1 { 1355 | z-index: 1; 1356 | } 1357 | 1358 | .div2 { 1359 | z-index: 2; 1360 | } 1361 | ``` 1362 | 1363 | - У цьому прикладі `.div2` буде накладатися поверх `.div1`, оскільки у неї вищий 1364 | `z-index`. 1365 | 1366 | #### Контекст накладання: 1367 | 1368 | Контекст накладання — це область, в межах якої визначаються всі значення z-index 1369 | для елементів. Це стосується елементів з властивістю position (не static), або 1370 | коли застосовуються інші властивості, які створюють новий контекст накладання. 1371 | 1372 | - **Контекст накладання формується, коли:** 1373 | 1374 | 1. Елемент має властивість `position` з одним із значень (`relative`, 1375 | `absolute`, `fixed`, `sticky`). 1376 | 2. `z-index` встановлено на значення, відмінне від auto. 1377 | 3. Властивість opacity менша за 1. 1378 | 4. Властивість `transform`, `filter`, `perspective`, `clip-path` та інші 1379 | створюють новий контекст. 1380 | 1381 | - **Як формується контекст накладання:** 1382 | 1383 | 1. Вищезгадані умови (наприклад, `position: relative` і `z-index`). 1384 | 2. Ті елементи, які знаходяться в цьому контексті, будуть порівнювати свої 1385 | z-index тільки в межах цього контексту, а не з іншими елементами на сторінці. 1386 | 3. Якщо елемент знаходиться в різних контекстах накладання, то порівнювати 1387 | z-index можна лише в межах кожного з контекстів. 1388 | 1389 | #### Приклад контексту накладання: 1390 | 1391 | ```html 1392 |
1393 |
Child 1
1394 |
Child 2
1395 |
1396 | 1397 |
Sibling
1398 | ``` 1399 | 1400 | - У цьому прикладі: 1401 | 1402 | - `.child 1` і `.child 2` знаходяться в одному контексті накладання всередині 1403 | `.parent`. 1404 | - `.sibling` має інший контекст накладання і з'явиться поверх обох `.child`, 1405 | оскільки має більший `z-index` у своєму контексті. 1406 | 1407 |
1408 | 1409 |
1410 | 35. Порядок накладання елементів у CSS (Stacking Order)? 1411 | 1412 | #### CSS 1413 | 1414 | - Порядок накладання елементів у CSS (Stacking Order) визначається порядком, у 1415 | якому елементи накладаються один на одного на сторінці. Це важливо, коли 1416 | елементи з різними властивостями (наприклад, `z-index`) можуть перекривати 1417 | один одного. 1418 | 1419 | #### Порядок накладання (Stacking Order): 1420 | 1421 | 1. **Елементи за замовчуванням** (статичні елементи, без позиціонування та без 1422 | `z-index`): 1423 | 1424 | - Елементи без позиціонування (`position: static` або без властивості 1425 | `position`) розташовуються один за одним у порядку їхнього розташування в 1426 | HTML. 1427 | 1428 | 2. **Елементи з позиціонуванням** (`relative`, `absolute`, `fixed`, `sticky`): 1429 | 1430 | - Якщо елемент має будь-яке інше значення `position` (крім `static`), він 1431 | створює новий контекст накладання. У межах цього контексту елементи з більшим 1432 | значенням `z-index` будуть накладатися поверх елементів з меншим значенням. 1433 | 1434 | 3. **Елементи з z-index**: 1435 | 1436 | - Елементи з більш високим `z-index` будуть розташовуватися поверх елементів з 1437 | нижчим значенням `z-index` (якщо елементи знаходяться в одному контексті 1438 | накладання). 1439 | 1440 | 4. **Невидимі елементи** (з `opacity` менше 1 або з `visibility: hidden`): 1441 | 1442 | - Елементи, які мають властивість `opacity` менше 1 або `visibility: hidden`, 1443 | можуть бути розташовані поверх інших елементів, але їх все одно не видно. 1444 | 1445 | 5. **Елементи з властивістю** `transform`, `filter`, `perspective`, `clip-path` 1446 | та іншими, що створюють новий контекст накладання: 1447 | 1448 | - Коли елемент має одну з цих властивостей, це створює новий контекст 1449 | накладання, і елементи в цьому контексті будуть накладатися згідно з їхніми 1450 | значеннями `z-index`, незалежно від того, де вони знаходяться на сторінці. 1451 | 1452 | 6. **Елементи з фонового вмісту** (`backgrounds`, `borders`, etc.): 1453 | 1454 | - Вміст, такий як фон або бордери, не створює власного контексту накладання, але 1455 | може бути важливим для визначення, як інші елементи накладаються. 1456 | 1457 | #### Порядок накладання елементів за замовчуванням: 1458 | 1459 | 1. **Блоки без позиціонування** (статичні елементи). 1460 | 1461 | 2. **Елементи з позиціонуванням** `relative` (якщо не визначено `z-index`). 1462 | 1463 | 3. **Елементи з позиціонуванням** `absolute`, `fixed`, `sticky` (в залежності 1464 | від `z-index`). 1465 | 1466 | 4. **Нове контексти накладання** (наприклад, елементи з `transform`, 1467 | `opacity < 1`, `filter` тощо). 1468 | 1469 | #### Простіше кажучи: 1470 | 1471 | - Статичні елементи не створюють контексту накладання і накладаються в порядку 1472 | їхнього розташування в HTML. 1473 | 1474 | - Елементи з позиціонуванням `relative`, `absolute`, `fixed`, `sticky` створюють 1475 | контекст накладання, де `z-index` визначає, які елементи будуть поверх інших. 1476 | 1477 | - Елементи з новими контекстами накладання (наприклад, з `transform` або 1478 | `opacity < 1`) накладаються поверх всіх інших елементів із меншим пріоритетом. 1479 | 1480 |
1481 | 1482 |
1483 | 36. Як за допомогою CSS визначити, чи підтримується властивість у браузері? 1484 | 1485 | #### CSS 1486 | 1487 | - Для того, щоб перевірити, чи підтримується властивість у браузері, в CSS 1488 | безпосередньо неможливо це зробити, оскільки CSS сам по собі не має вбудованих 1489 | механізмів для перевірки підтримки властивостей. Однак, є кілька способів 1490 | зробити це за допомогою JavaScript та умовних конструкцій у CSS. 1491 | 1492 | 1. **Використання JavaScript (Modernizr)** 1493 | 1494 | Один із способів перевірити, чи підтримується CSS властивість у браузері — це 1495 | використати JavaScript-бібліотеку, наприклад, Modernizr. Modernizr дозволяє 1496 | перевіряти підтримку різних технологій і властивостей браузером. 1497 | 1498 | **Приклад використання Modernizr:** 1499 | 1500 | ```javascript 1501 | if (Modernizr.flexbox) { 1502 | console.log('Flexbox підтримується!'); 1503 | } else { 1504 | console.log('Flexbox не підтримується.'); 1505 | } 1506 | ``` 1507 | 1508 | 2. **Використання умови @supports в CSS** 1509 | 1510 | CSS має власну конструкцію `@supports`, яка дозволяє перевіряти, чи 1511 | підтримується певна CSS властивість або її значення в поточному браузері. 1512 | 1513 | **Приклад:** 1514 | 1515 | ```css 1516 | /* Перевіряє, чи підтримується flexbox */ 1517 | @supports (display: flex) { 1518 | .container { 1519 | display: flex; 1520 | } 1521 | } 1522 | 1523 | /* Якщо не підтримується flexbox, додається альтернативне значення */ 1524 | @supports not (display: flex) { 1525 | .container { 1526 | display: block; 1527 | } 1528 | } 1529 | ``` 1530 | 1531 | У цьому прикладі, якщо браузер підтримує `display: flex`, то він застосує стилі, 1532 | визначені в першому блоці. Якщо ж не підтримує, застосує стилі з блоку 1533 | `@supports` not. 1534 | 1535 | 3. **Використання префіксів для застарілих властивостей** 1536 | 1537 | Для старих властивостей або експериментальних властивостей браузерів часто 1538 | використовуються вендорні префікси. Якщо необхідно працювати з такими 1539 | властивостями, часто можна додавати ці префікси та перевіряти, чи працює код на 1540 | різних браузерах. 1541 | 1542 | **Приклад з вендорними префіксами:** 1543 | 1544 | ```css 1545 | /* Вендорні префікси для трансформацій */ 1546 | .element { 1547 | -webkit-transform: rotate(45deg); 1548 | -moz-transform: rotate(45deg); 1549 | transform: rotate(45deg); 1550 | } 1551 | ``` 1552 | 1553 | Це допоможе забезпечити сумісність з різними версіями браузерів. 1554 | 1555 | #### Висновок 1556 | 1557 | Найбільш зручним методом перевірки підтримки властивості є використання 1558 | @supports у CSS або бібліотеки Modernizr для JavaScript, яка дозволяє створити 1559 | перевірки підтримки за допомогою скриптів. 1560 | 1561 |
1562 | 1563 |
1564 | 37. Глобальні ключові слова у CSS? 1565 | 1566 | #### CSS 1567 | 1568 | - Глобальні ключові слова в CSS — це спеціальні значення, які можна задати 1569 | будь-якій CSS-властивості. Вони не змінюють саме значення властивості, а 1570 | вказують, як її слід обчислювати. 1571 | 1572 | #### Список глобальних ключових слів 1573 | 1574 | 1. `inherit` – успадковує значення від батьківського елемента. 1575 | 2. `initial` – скидає значення до дефолтного (згідно зі специфікацією). 1576 | 3. `unset` – якщо властивість успадковується за замовчуванням (наприклад, 1577 | color), діє як inherit, інакше – як initial. 1578 | 4. `revert` – повертає значення до того, що визначено у стилях браузера чи 1579 | користувача. 1580 | 5. `revert-layer` – скидає значення до попереднього рівня каскаду (актуально для 1581 | @layer). 1582 | 1583 | #### Приклади використання 1584 | 1585 | ✅ `inherit` (успадкування значення) 1586 | 1587 | ```css 1588 | p { 1589 | color: red; 1590 | } 1591 | span { 1592 | color: inherit; /* отримає червоний від

*/ 1593 | } 1594 | ``` 1595 | 1596 | ✅ `initial` (повернення до стандартного значення) 1597 | 1598 | ```css 1599 | button { 1600 | all: initial; /* скидає всі властивості до дефолтних */ 1601 | } 1602 | ``` 1603 | 1604 | ✅ `unset` (залежно від властивості) 1605 | 1606 | ```css 1607 | div { 1608 | color: unset; /* успадкує */ 1609 | width: unset; /* повернеться до `auto` */ 1610 | } 1611 | ``` 1612 | 1613 | ✅ `revert` (повернення до стандартних стилів браузера) 1614 | 1615 | ```css 1616 | a { 1617 | color: green; 1618 | } 1619 | a.special { 1620 | color: revert; /* поверне синій, якщо його задає браузер */ 1621 | } 1622 | ``` 1623 | 1624 | ✅ `revert-layer` (актуально для @layer) 1625 | 1626 | ```css 1627 | @layer framework { 1628 | button { 1629 | background: red; 1630 | } 1631 | } 1632 | 1633 | @layer custom { 1634 | button { 1635 | background: blue; 1636 | } 1637 | } 1638 | 1639 | /* revert-layer поверне червоний із framework, а не дефолтний */ 1640 | button { 1641 | background: revert-layer; 1642 | } 1643 | ``` 1644 | 1645 | #### Висновок 1646 | 1647 | - `inherit` – для спадкування. 1648 | - `initial` – для скидання до дефолту. 1649 | - `unset` – комбінує inherit та initial. 1650 | - `revert` – повертає значення браузера чи стилів користувача. 1651 | - `revert-layer` – скидає значення до попереднього рівня каскаду. 1652 | 1653 |

1654 | 1655 |
1656 | 38. Що таке перерахування селекторів? 1657 | 1658 | #### CSS 1659 | 1660 | - Перерахування селекторів — це використання кількох селекторів, розділених 1661 | комою, для одночасного застосування стилів до різних елементів. 1662 | 1663 | #### Синтаксис 1664 | 1665 | ```css 1666 | selector1, 1667 | selector2, 1668 | selector3 { 1669 | property: value; 1670 | } 1671 | ``` 1672 | 1673 | #### Приклади 1674 | 1675 | ✅ Стилізація кількох елементів одночасно 1676 | 1677 | ```css 1678 | h1, 1679 | h2, 1680 | h3 { 1681 | color: red; 1682 | } 1683 | ``` 1684 | 1685 | - Усі h1, h2 і h3 стануть червоними. 1686 | 1687 | ✅ Комбінація класів і тегів 1688 | 1689 | ```css 1690 | button, 1691 | .btn { 1692 | padding: 10px; 1693 | } 1694 | ``` 1695 | 1696 | - Застосується до `
1717 | 1718 |
1719 | 39. Для чого використовується ключове слово currentColor у CSS? 1720 | 1721 | #### CSS 1722 | 1723 | - `currentColor` — це ключове слово в CSS, яке задає значення кольору (`color`) 1724 | для інших властивостей, що підтримують кольори. 1725 | 1726 | #### Як працює 1727 | 1728 | - `currentColor` автоматично використовує значення, встановлене у властивості 1729 | `color`. 1730 | 1731 | #### Приклади використання 1732 | 1733 | ✅ Однаковий колір для тексту та рамки 1734 | 1735 | ```css 1736 | button { 1737 | color: blue; 1738 | border: 2px solid currentColor; 1739 | } 1740 | ``` 1741 | 1742 | - Рамка кнопки буде того ж кольору, що й текст (`blue`). 1743 | 1744 | ✅ SVG-іконки із кольором тексту 1745 | 1746 | ```css 1747 | .icon { 1748 | color: red; 1749 | fill: currentColor; 1750 | } 1751 | ``` 1752 | 1753 | - `fill` у SVG прийме `color` елемента (`red`). 1754 | 1755 | ✅ Прозорість зі спадкуванням кольору 1756 | 1757 | ```css 1758 | .link { 1759 | color: green; 1760 | background: linear-gradient(currentColor 0%, transparent 100%); 1761 | } 1762 | ``` 1763 | 1764 | - Градієнт стартує від `green`, бо це значення `color`. 1765 | 1766 | #### Висновок 1767 | 1768 | - Використовує значення `color`, усуваючи дублювання стилів. 1769 | - Особливо корисно для SVG, `border`, `background`, `box-shadow`. 1770 | - Спрощує темізацію: змінюєш `color`, і все підлаштовується. 1771 | 1772 |
1773 | 1774 |
1775 | 40. Які псевдокласи є CSS? 1776 | 1777 | #### CSS 1778 | 1779 | #### Псевдокласи в CSS 1780 | 1781 | - ✅ Динамічні псевдокласи 1782 | 1783 | | Псевдоклас | Опис | 1784 | | ---------- | -------------------------------------------- | 1785 | | `:hover` | При наведенні курсору. | 1786 | | `:focus` | Коли елемент у фокусі (наприклад, `input`). | 1787 | | `:active` | Під час натискання. | 1788 | | `:visited` | Для відвіданих посилань. | 1789 | | `:target` | Для елемента, що відповідає `#anchor` в URL. | 1790 | 1791 | - ✅ Структурні псевдокласи 1792 | 1793 | | Псевдоклас | Опис | 1794 | | -------------------- | ------------------------------------------------------ | 1795 | | `:first-child` | Перший дочірній елемент. | 1796 | | `:last-child` | Останній дочірній елемент. | 1797 | | `:nth-child(n)` | Дочірній елемент за індексом `n` (можна `odd`/`even`). | 1798 | | `:nth-last-child(n)` | Те саме, але з кінця. | 1799 | | `:only-child` | Якщо елемент єдиний у батьківському контейнері. | 1800 | 1801 | - ✅ Типові псевдокласи 1802 | 1803 | | Псевдоклас | Опис | 1804 | | ---------------------- | -------------------------------------------- | 1805 | | `:first-of-type` | Перший елемент певного типу. | 1806 | | `:last-of-type` | Останній елемент певного типу. | 1807 | | `:nth-of-type(n)` | N-ий елемент певного типу. | 1808 | | `:nth-last-of-type(n)` | N-ий елемент певного типу з кінця. | 1809 | | `:only-of-type` | Якщо елемент унікальний серед такого ж типу. | 1810 | 1811 | - ✅ Логічні псевдокласи 1812 | 1813 | | Псевдоклас | Опис | 1814 | | ------------------ | ---------------------------------------------------- | 1815 | | `:not(selector)` | Вибирає все, **крім** вказаного селектора. | 1816 | | `:has(selector)` | Вибирає елементи, що містять інший елемент (`CSS4`). | 1817 | | `:where(selector)` | Як `:is()`, але без пріоритету. | 1818 | | `:is(selector)` | Спрощує складні селектори. | 1819 | 1820 | - ✅ Псевдокласи для форм 1821 | 1822 | | Псевдоклас | Опис | 1823 | | ------------- | ----------------------------------- | 1824 | | `:checked` | Позначений чекбокс або радіокнопка. | 1825 | | `:disabled` | Вимкнений елемент форми. | 1826 | | `:enabled` | Активний елемент форми. | 1827 | | `:required` | Поле `input`, що обов’язкове. | 1828 | | `:optional` | Поле `input`, що не є обов’язковим. | 1829 | | `:valid` | Поле форми з коректним значенням. | 1830 | | `:invalid` | Поле форми з некоректним значенням. | 1831 | | `:read-only` | Поле у режимі `readonly`. | 1832 | | `:read-write` | Поле, що можна редагувати. | 1833 | 1834 | **Псевдокласи допомагають стилізувати елементи без додаткових класів або JS. 1835 | Використовуйте `:is()` та `:has()` для скорочення складних селекторів у CSS4.** 1836 | 1837 |
1838 | 1839 |
1840 | 41. Які фільтри є у CSS? 1841 | 1842 | #### CSS 1843 | 1844 | - Фільтри у CSS 1845 | 1846 | Фільтри (`filter`) дозволяють змінювати вигляд елементів, застосовуючи ефекти до 1847 | їхнього рендерингу. 1848 | 1849 | #### 🔹 Основні фільтри 1850 | 1851 | | Фільтр | Опис | Приклад | 1852 | | --------------- | ----------------------------------------------------- | --------------------------- | 1853 | | `blur(px)` | Розмиття з вказаним радіусом у пікселях. | `filter: blur(5px);` | 1854 | | `brightness(%)` | Змінює яскравість (100% – без змін). | `filter: brightness(150%);` | 1855 | | `contrast(%)` | Змінює контраст (100% – без змін). | `filter: contrast(120%);` | 1856 | | `grayscale(%)` | Відтінки сірого (100% – чорно-біле). | `filter: grayscale(100%);` | 1857 | | `invert(%)` | Інвертує кольори (100% – повністю інвертоване). | `filter: invert(100%);` | 1858 | | `opacity(%)` | Прозорість (0% – повністю прозоре, 100% – непрозоре). | `filter: opacity(50%);` | 1859 | | `saturate(%)` | Насиченість (100% – без змін, 0% – ч/б). | `filter: saturate(200%);` | 1860 | | `sepia(%)` | Ефект сепії (100% – повністю сепія). | `filter: sepia(80%);` | 1861 | 1862 | #### 🔹 Фільтри для тіней та зміщення 1863 | 1864 | | Фільтр | Опис | Приклад | 1865 | | ----------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------- | 1866 | | `drop-shadow(x y blur color)` | Додає тінь до зображення (аналог `box-shadow`, але працює з прозорими PNG). | `filter: drop-shadow(5px 5px 10px rgba(0,0,0,0.5));` | 1867 | 1868 | #### 🔹 Комбінування фільтрів 1869 | 1870 | - Фільтри можна комбінувати, вказуючи їх через пробіл: 1871 | 1872 | ```css 1873 | filter: brightness(120%) contrast(110%) blur(3px); 1874 | ``` 1875 | 1876 | - Фільтри застосовуються до всіх елементів, але найчастіше – до зображень (img), 1877 | відео та бекграундів. 1878 | 1879 |
1880 | 1881 |
1882 | 42. Навіщо використовується псевдоклас :invalid? 1883 | 1884 | #### CSS 1885 | 1886 | - Псевдоклас `:invalid` використовується для стилізації полів вводу (``, 1887 | `