Форум программистов, компьютерный форум, киберфорум
HTML, CSS
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 16.10.2018
Сообщений: 45
1

Div в центре другого div с пропорциональными отступами

12.01.2023, 16:16. Показов 430. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добра!
Можно ли реализовать на CSS или нужно JS привлекать:
есть body/div/иной контейнер, внутри которого размещается div с динамическим содержимым (может меняться ширина/высота). Хотелось бы, чтобы внутренний div выростал своими размерами (шириной и высотой) одновременно, т.е. чтобы условно говоря, его вершины лежали +/- на диагоналях родительского div'а.
Подозреваю что здесь flex поможет, но его мало юзал.
На данный момент этот вариант приводит к росту сначала ширины вплоть до размеров родителя с учётом пэддингов и маржинов, и только потом растёт высота:
HTML5
1
2
3
4
5
6
7
<div class="popup-overlay" style="">
  <div class="border-wrapper">
    <div class="popup-wnd-content" id="my-popup-wnd-content">
      <p>Some content here...</p>
    </div>
  </div>
</div>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
div.popup-overlay {
    background-color: rgba(0,0,0,.25);
    bottom: 0;
    display: flex;
    justify-content: center;
    left: 0;
    position: fixed;
    top: 0;
    width: 100%;
}
 
div.popup-overlay > div.border-wrapper {
    align-self: center;
    background-color: rgba(0,0,0,.25);
    border-radius: 2px;
    padding: 6px;
    margin: 15px;
}
 div.popup-overlay > div.border-wrapper > div.popup-wnd-content {
     background-color: rgb(255,255,255);
     border-radius: 2px;
     padding: 24px;    
     position: relative;
 }
 
div.popup-overlay > div.border-wrapper > div.popup-wnd-content > p {
    margin-top: 0.25em;
    margin-bottom: 0.25em;
}
зы: вопрос не горит, просто вспомнил - стало интересно
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2023, 16:16
Ответы с готовыми решениями:

Равномерное растяжение блоков div в родительском div по вертикали с отступами
Здравствуйте, прощу помочь с вёрсткой. Есть блок с классом sidebar, которому задаётся расположение...

Как поставить div по середине вертикально внутри другого div?
Заранее спасибо!! &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Best Promocodes&lt;/title&gt;...

Можно ли задать один блок div относительно другого div-а?
Привет. Пытаюсь сделать слои, по этому примеру. Там они используют абсолютное позиционирование и...

Размещение нескольких блоков div внутри другого блока div
Хочу сделать шапку веб-страницы. Прикреплю ниже небольшую схему того, как она будет выглядеть. Хочу...

6
молодой
1641 / 905 / 291
Регистрация: 17.07.2021
Сообщений: 1,851
Записей в блоге: 12
12.01.2023, 17:35 2
Что-то такое?

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<!DOCTYPE html>
<html>
 
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
    * {
        padding: 0;
        margin: 0;
        box-sizing: border-box;
    }
 
    .box {
        display: flex;
        justify-content: center;
        align-items: center;
    }
 
    .item {
        border: solid;
        padding: 1rem;
    }
 
    .content {
        transition: width 1s, height 1s;
        border: solid;
    }
    </style>
</head>
 
<body>
    <div class="box">
        <div class="item">
            <div class="content"></div>
        </div>
    </div>
    <script>
    const content = document.querySelector(".content")
    const dimensions = [{ h: 200, w: 400 }, { h: 300, w: 600 }]
    let index = 0
    const setDimension = () => {
        content.style.height = dimensions[index].h + "px";
        content.style.width = dimensions[index].w + "px";
        index = index === dimensions.length - 1 ? 0 : index + 1;
    }
    setDimension()
    setInterval(() => {
        setDimension()
    }, 1000)
    
    </script>
</body>
 
</html>
0
Заблокирован
13.01.2023, 04:57 3
Лучший ответ Сообщение было отмечено mr_dramm как решение

Решение

TheEd01, во-первых, никогда не используйте вот такой анахронизм:

CSS
1
div.popup-overlay>div.border-wrapper>div.popup-wnd-content>p
Это на простой страничке из трёх блоков оно еще прокатывает, когда кода будет тысячи строк офигеете его отлаживать.
Каждому блоку свой класс!

Во-вторых, нарисуйте что вам всё-таки надо, потому что из описания непонятно. Возможно вам нужно свойство aspect-ratio просто.
2
2 / 2 / 0
Регистрация: 16.10.2018
Сообщений: 45
19.01.2023, 17:22  [ТС] 4
mr_dramm: спасибо, код интересный, но js'ом можно гору своротить. Хотелось ограничиться CSS...
KingdaKa: тоже спасибо, но я пока просто маленький тест набросал, само собой, если встраивать в серьёзный проект, там будет несколько иначе
0
молодой
1641 / 905 / 291
Регистрация: 17.07.2021
Сообщений: 1,851
Записей в блоге: 12
19.01.2023, 20:33 5
Цитата Сообщение от TheEd01 Посмотреть сообщение
но js'ом можно гору своротить
тут js чисто для демонстрации изменения пропорций при изменениях размеров блока. На разметку он никак не влияет
0
1757 / 912 / 373
Регистрация: 26.11.2014
Сообщений: 1,867
Записей в блоге: 1
20.01.2023, 01:38 6
JS free... И это ещё CSS так... Только прикоснулся...
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
      body {
        display: grid;
        place-content: center;
        height: 100vh;
        background: radial-gradient(
          circle at 50% 50%,
          rgba(87, 156, 173, 1) 0%,
          rgba(10, 49, 59, 1) 100%
        );
      }
      main {
        width: 50vw;
        border: 10px solid grey;
        padding: 2rem;
        background: #0d1840;
      }
      section {
        max-width: 100%;
        border: 10px solid grey;
        padding: 2rem;
        color: white;
        background: hsl(7 52% 45%);
      }
    </style>
    <main>
      <section>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Fuga qui est
        inventore cupiditate, modi labore expedita nemo error nostrum ab
        adipisci officia culpa harum nisi et rerum officiis incidunt provident.
      </section>
    </main>
0
2 / 2 / 0
Регистрация: 16.10.2018
Сообщений: 45
15.09.2023, 18:00  [ТС] 7
Спасибо!
Похоже на правду, но ширина внутреннего дива - 50% и ширина не меняется (
Пока содержимого мало - это не критично. Но задумка в том чтобы синхронно менялась и ширина и высота с примерной пропорцией дива такой же как у родительского...
0
15.09.2023, 18:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2023, 18:00
Помогаю со студенческими работами здесь

Почему div ы не хотят встать внутрь другого div, а встают под него ?
Не мог бы кто нибудь помочь? 001 и 002 не встают в header, а 003, 004 и 005 не встают в content?...

Показать div поверх другого div при наведении
У меня есть таблица. В каждой ячейке есть div. Так вот надо чтобы при наведении на этот блок,...

Выровнять по центру, по горизонтали div, внутри другого div
Есть див, в нём три других дива. Как выровнять их по середине? В этих блоках был использован...

Как прижать один div к низу другого div?
У меня есть два блока: 1) div1 фоном с помощью php выводится картинка из поста. Высота картинок...

Как в div загружать страницы из другого блока div?
Здравствуйте. Кто сможет помочь мне в одном вопросе? Как можно загрузить по ссылке страницу из...

Выравнивание нескольких div'oв внутри другого div'a
Собственно задача Имеется: &lt;div id=&quot;menubar&quot;&gt; &lt;div class=&quot;menu_item&quot;&gt; Главная &lt;/div&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru