Margin-top: авто, но минимум 50 пикселей

Я хотел бы применить автоматическое верхнее поле к тегу нижнего колонтитула, но с минимальным размером поля 50 пикселей (оно не может быть меньше 50 пикселей). Я пробовал использовать функцию min() в CSS, но не могу решить проблему. Я не знаю, упускаю ли я что-то или есть другой правильный способ сделать это.

* {
    --red: #f70000;
    --gold: #caa866;
    --blue: #004d96;
    --BGblue: #004d96ef;
    --white: rgb(230, 230, 230);
    --traswhite: rgba(235, 235, 235, 0.5);
    --black: rgb(20, 20, 20);
    --trasblack: rgba(20, 20, 20, 0.6);
    --warning: #CC3300;
}

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
}

body {
    min-height: 100vh;
    background-color: var(--white);
    display: flex;
    flex-direction: column;
    transition: all ease-in-out 0.3s;
}

footer {
    display: flex;
    flex-direction: row;

    margin-top: 50px;

    width: 100%;
    height: 200px;

    background-color: var(--black);

    transition: all ease-in-out 0.3s;
}
<footer>
  <p style = "color: white">elements in the footer</p>
</footer>

прозрачная верхняя граница размером 50 пикселей?

Temani Afif 18.09.2023 13:46

но с отступом минимум 50px (оно не может быть меньше 50px)" - и исходя из чего именно оно должно стать больше...? «Я пробовал использовать функцию min() в CSS, но не могу решить проблему» — ну, для этого потребуется как минимум два «аргумента». 50 пикселей были бы одним из них, но что было бы другим...?

CBroe 18.09.2023 13:48

Пожалуйста, не могли бы вы добавить минимальный воспроизводимый пример, чтобы мы могли увидеть, что у вас есть на данный момент? (Используйте фрагмент. Кнопка <>)

evolutionxbox 18.09.2023 13:49

@TemaniAfif не работает по двум основным причинам: во-первых, граница будет внутри моего тега нижнего колонтитула. Во-вторых, если бы я использовал «контур» вместо границы (чтобы нарисовать ее за пределами нижнего колонтитула), он бы перекрыл другие элементы на странице, не перемещая их. Спасибо, кстати!

Shameless 18.09.2023 13:56

... и именно поэтому вам следует для начала добавить минимально воспроизводимый пример вашей ситуации - чтобы нам не приходилось выяснять, почему конкретные подходы могут не работать один за другим, когда вы говорите: «Ох и вот еще одна мелочь, о которой я совершенно забыл упомянуть изначально..."

CBroe 18.09.2023 13:57

@CBroe, проблема в том, что мне приходится прикреплять нижний колонтитул внизу страницы, которая не полна «вещей». 'до этого момента проблем не было, это было бы легко, но проблемы возникают, когда на этой странице есть кнопки, которые вызывают появление элементов. Поэтому, когда эти элементы появляются, мне приходится сохранять нижний колонтитул внизу, но с отступом в 50 пикселей от содержимого страницы.

Shameless 18.09.2023 13:58

@evolutionxbox, я собираюсь сделать это через несколько минут, кстати, спасибо за помощь! (впервые использую stackoverflow, чтобы спросить, так что я новичок в функциях, которые могу использовать!)

Shameless 18.09.2023 13:59

@evolutionxbox фрагмент, который я вставил, представляет собой грубое обобщение того, что у меня сейчас есть в моем файле стиля CSS для нижнего колонтитула. Если вам нужно больше, я могу также вставить стили body и html.

Shameless 18.09.2023 14:10

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

CBroe 18.09.2023 14:20

@CBroe должен сохранять минимум 50 пикселей от всего, что находится над ним. В некоторых случаях это кнопка, в других случаях — пролет, в третьих — img. Если это может быть полезно, я могу отправить всю страницу во фрагменте.

Shameless 18.09.2023 14:22

Я предполагаю, что вам нужна здесь очень «классическая» вещь, где нижний колонтитул всегда находится внизу экрана, если основного контента мало, и сдвигается вниз, если его больше? stackoverflow.com/a/55542885/1427878 — добавление дополнительного поля-верха должно работать без проблем.

CBroe 18.09.2023 14:25

@CBroe Ваша «догадка» верна, но что вы подразумеваете под «дополнительным верхним полем»? Если вы хотите отредактировать фрагмент, который вы связали со мной, добавив в нижний колонтитул «margin-top: 50px;». это не работает, к сожалению. Если вы имеете в виду что-то другое, я не совсем понял то, что вы только что объяснили :D

Shameless 18.09.2023 14:32

Второй фрагмент ответа Корбука с margin-top: 50px вместо footer должен делать именно то, что вы хотите.

CBroe 18.09.2023 14:36

@CBroe, к сожалению, нет, но я решил, большое спасибо!

Shameless 18.09.2023 14:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
14
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если я вас правильно понимаю, вы хотите, чтобы нижний колонтитул всегда находился внизу страницы (и на расстоянии не менее 50 пикселей от основного контента), а в противном случае — внизу области просмотра.

Вы можете сделать это с помощью position:sticky, установив положение нижнего колонтитула на 100 % сверху минус высота нижнего колонтитула. НАПРИМЕР:

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  min-height: 100vh;
  background-color: #eee;
}

section {
  border: 2px dotted red;
  padding: 10px;
}

footer {
  display: flex;
  flex-direction: row;
  position: sticky;
  top: calc(100% - 200px);
  height: 200px;
  margin-top: 50px;
  background-color: black;
  color: white;
}
<section contenteditable = "true">
  I am content-editable. Type in here to simulate what happens with more page content.
</section>
<footer>
  elements in the footer
</footer>

да, это было именно то, что мне нужно! Большое спасибо!! Могу я спросить, что делает Calc? Еще раз спасибо!

Shameless 18.09.2023 14:36

Функция CSS Calc() позволяет выполнять вычисления при указании значений свойств CSS. См.: developer.mozilla.org/en-US/docs/Web/CSS/calc

Moob 18.09.2023 14:39

Другие вопросы по теме