Я использую flexbox, и мне уже удалось сделать его центрированным по горизонтали, как вы можете видеть, запустив приведенный ниже фрагмент кода, но он не центрирован по вертикали, и я не понимаю, почему
Вот JSFiddle, если хотите.
.main {
display: flex;
align-items: center;
justify-content: center;
}
.loader {
border: 16px solid #f3f3f3;
border-radius: 50%;
border-top: 16px solid #3498db;
width: 120px;
height: 120px;
-webkit-animation: spin 2s linear infinite; /* Safari */
animation: spin 2s linear infinite;
max-width: 50%;
}
/* Safari */
@-webkit-keyframes spin {
0% { -webkit-transform: rotate(0deg); }
100% { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}<div class = "main">
<div class = "loader"></div>
</div>Пожалуйста, понизить версию немного сложно, он уже помечен как дубликат. Я думаю, этого достаточно, ваша реакция недружелюбна по отношению к другим пользователям.
Я думаю ты прав. Понижение не требуется. Так что я не сделал. То, что ваш вопрос помечен как дубликат, не о чем беспокоиться. Это просто для того, чтобы другие пользователи знали. ;)
На самом деле я думаю, что пометка этого вопроса как дубликата неверна. Вторая ссылка даже не решает проблему. Вопрос ОП касается неожиданного результата его правильного использования элементов выравнивания в гибкой компоновке, а не того, как установить высоту div.
Полностью с вами согласен, спасибо за комментарии.
Пожалуйста, обратитесь к этому сайту the-echoplex.net/flexyboxes, если вы застрянете с flexbox в будущем. Это помогает вам визуализировать вывод и генерирует основной код. Я не буду просто копировать и вставлять вывод, так как он довольно подробный. Но попробуйте, это действительно полезно.
@Olafant прочитайте ответ ниже и принятые, и вы заметите, что проблема заключается в том, чтобы установить для элемента высоту экрана, таким образом, первый дубликат, который отвечает на это более чем идеально. Второй дубликат касается центрирования, что является целью его кода, и в этом дубликате вы найдете полный способ центрирования, учитывающий проблему высоты. Таким образом, первый дубликат показывает ему отсутствующий CSS для добавления в его код, а второй показывает ему полный и рабочий способ центрирования на всем экране, если, конечно, мы потратим время на их внимательное чтение.
@Olafant в качестве доказательства дубликата, вот из 2-го: stackoverflow.com/a/41164964/8620333 и вот из 1-го: stackoverflow.com/a/16837667/8620333 ... если вы все еще считаете, что он неправильно закрыт, то покажите мне, что нет ответа на его проблему в обоих .
@TemaniAfif спасибо за совет, как доказать мою точку зрения. Пожалуйста, не обижайтесь, если вместо этого я использую аллегорию. Q.A: Как не промокнуть под дождем? А.А.: Используйте зонтик! В.Б.: Почему я промок, несмотря на то, что пользовался зонтиком? А.Б.: Тебе нужно открыть его! Я не считаю Q.B дубликатом Q.A. Во всяком случае: я понимаю вашу точку зрения. Но я думаю, что для SO важно быть очень осторожным, чтобы не препятствовать людям задавать конкретные вопросы, помечая их как дубликаты более широких.
@Olafant Во-первых, закрытие вопроса как дубликата никогда не бывает плохой мыслью, и на самом деле это лучшая мысль. Сравните принятый ответ ниже с одним из дубликатов и скажите мне, какой из них лучше. Ответ, который говорит вам используйте это, и это сработает, не спрашивайте меня, почему или не нужно знать, почему, сделайте копию, и это сработает Или ответ, который говорит вам и дает объяснение Зачем? Вы хотите, чтобы я научил вас ловить рыбу или давал вам рыбу каждый раз, когда она вам нужна?
@Olafant Во-вторых, что касается вашей аллегории, вы просто подтверждаете дубликат, потому что SO должен создавать высококачественные вопросы и ответы, поэтому QA и QB одинаковы, потому что вам нужно приложить усилия, чтобы внимательно прочитать вопросы и ответы, чтобы понять, что вам также нужно открыть зонт, и открыть зонт недостаточно, нужно еще держать его над ухом. Дублирующий вопрос касается всего аспекта зонтика и не просто говорит вам вам нужно использовать зонт ... приведенный ниже ответ делает это, потому что есть 0 объяснений, но в дубликате вы узнаете, как правильно использовать зонтик.
@TemaniAfif На самом деле принятый ответ точно объясняет, почему подход ОП не удался в первой строке. Как и мой комментарий. Тогда как stackoverflow.com/a/41164964/8620333 дает только рыбу.
@Olafant, это из второго дубликата, я имел в виду первый из первого дубликата (stackoverflow.com/q/1575141/8620333). как я уже сказал, второй дубликат касается всей проблемы центрирования, тогда как первый касается проблемы высоты, и весь вопрос, включая все ответы / комментарии / ссылки, - это то, что научит вас ловить рыбу, а не только 1 ответ. В обоих дубликатах более 70 ответов. Если вы потратите время, чтобы просмотреть их все, это решит проблему и научит большему, чем вам нужно, но никто этого не делает, мы просто читаем заголовок, а затем жалуемся, что это не дубликат...
@TemaniAfif Как я уже сказал: я понимаю вашу точку зрения. Я попытался объяснить свою точку зрения. Если «... мы просто читаем заголовок, а затем жалуемся, что это не дубликат ...» - это то, что, по вашему мнению, я здесь сделал, вы, похоже, не открыты для рассмотрения других мнений. Я согласен с вами, что пометка дубликатов - это хорошо для качества SO. Просто не забывайте, что нет качества, о котором нужно заботиться, если люди не готовы задавать вопросы или обсуждать, как достичь высокого качества. Никаких острых ощущений!
Привет! Мне запретили задавать вопросы, я считаю эту санкцию суровой. Мне нужен положительный отзыв, не могли бы вы помочь мне хотя бы получить 0, потому что отрицательный результат заставит меня заблокировать, если я задам еще один вопрос, а с другой стороны, я не могу удалить ни один, потому что я уже принял и проголосовал за хорошие ответы, поэтому я застрял и плохо себя чувствую. спасибо за понимание и желаю вам хорошего дня!






Вам нужно дать height основному классу. Например: height: 100vh; См.:
.main {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
}
.loader {
border: 16px solid #f3f3f3;
border-radius: 50%;
border-top: 16px solid #3498db;
width: 120px;
height: 120px;
-webkit-animation: spin 2s linear infinite; /* Safari */
animation: spin 2s linear infinite;
max-width: 50%;
}
/* Safari */
@-webkit-keyframes spin {
0% { -webkit-transform: rotate(0deg); }
100% { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}<div class = "main">
<div class = "loader"></div>
</div>Элемент .main имеет ту же высоту, что и элемент .loader (т. е. элементы центрированы по вертикали, но места для их просмотра нет). Вам нужно установить высоту .main на высоту, которую вы хотите центрировать.
.main {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
}
.loader {
border: 16px solid #f3f3f3;
border-radius: 50%;
border-top: 16px solid #3498db;
width: 120px;
height: 120px;
-webkit-animation: spin 2s linear infinite; /* Safari */
animation: spin 2s linear infinite;
max-width: 50%;
}
/* Safari */
@-webkit-keyframes spin {
0% { -webkit-transform: rotate(0deg); }
100% { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}<div class = "main">
<div class = "loader"></div>
</div>Большое спасибо за ответ! :) Извините, что спрашиваю, но не могли бы вы проголосовать за мой вопрос? Некоторые люди сочли забавным отрицать это.
Он центрирован по вертикали, но .main div нуждается в высоте, чтобы стать больше, чем его содержимое.