Ответ
Стили добавляют в <head>, чтобы они загружались и применялись до отображения контента, предотвращая FOUC (Flash of Unstyled Content). Это улучшает восприятие страницы пользователем.
Скрипты обычно помещают перед закрывающим </body>, чтобы:
- Не блокировать загрузку и отрисовку DOM (скрипты могут блокировать парсинг HTML).
- Гарантировать доступ к DOM-элементам (к моменту выполнения скрипта DOM уже построен).
Исключение — скрипты с атрибутами async или defer, их можно размещать в <head>, так как они не блокируют рендеринг.
Пример:
<head>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<!-- контент -->
<script src="app.js"></script>
</body> Ответ 18+ 🔞
Да ты посмотри, какие тут, блядь, правила игры! Стили-то, сука, в <head> пихают, чтобы эта ваша страничка не вылезла голая, как младенец из бани, пока браузер мозги собирает. Это называется FOUC, если по-умному, а по-простому — пиздец как некрасиво, когда сначала текст мелькает, а потом уже шрифты и цвета подъезжают.
А вот скрипты, эти ёбаные выскочки, их в самый низ, перед </body>, засовывают. Почему, спрашивается? А потому что, сука, они жадные! Начнёшь их в начале грузить — они всю очередь парсинга HTML заблокируют, пока сами не выполнятся. А пользователь сидит, ждёт, как лох на дождь. Не, так не пойдёт.
Вот кидаешь ты скрипт в конец тела — и всё, красота: страница уже отрисовалась, пользователь доволен, а потом уже твои скрипты тихонько подползают и делают свои тёмные делишки. DOM к этому моменту уже готов, можно его ебашить как хочешь.
Ну, кроме, конечно, этих хитрожопых скриптов с async или defer. Их, сука, можно и в <head> воткнуть — они умные, не будут мешать. async — это как "грузись когда хочешь, но как загрузился — сразу впрыгивай и выполняйся". А defer — "грузись спокойно, но жди, пока весь HTML не проглотим, и только потом делай своё дело, по порядку".
Короче, вот тебе пример, как это выглядит в жизни, чтобы ты, блядь, не запутался:
<head>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<!-- всякая хуйня, контент там, картинки -->
<script src="app.js"></script>
</body>
Вот и вся магия, ёпта. Стили сверху — чтобы сразу красиво. Скрипты внизу — чтобы не мешали жить. А если скрипт умный — можешь и в голову его запихнуть, он не обидится.