Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   "плавающий" div (https://javascript.ru/forum/xhtml-html-css/78058-plavayushhijj-div.html)

DimJavaScript 20.07.2019 18:27

"плавающий" div
 
Здравствуйте.

В конструкции
Код:

<div class="smi">
 <div class="border"><img class="img_ba" src="/img/arc.png"></div>
 <div class="border">
  <div class="smi_t">ONE</div>
 </div>
 <div class="border be"><img class="img_ba" src="/img/arc.png"></div>
</div>

Код:

.smi { height: 19.4%;}
.border { float: left; height: 100%;}
.smi_t { margin-left: 2%; margin-right: 2%; white-space: nowrap;}

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

Не пойму как.

:(

рони 20.07.2019 19:27

DimJavaScript,
вариант...
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/minireset.css/0.0.2/minireset.min.css'>

  <style type="text/css">
  body {
      height: 100vh;
      background-color: #f0e68c;
  }
  .smi {
      height: 19.4%;
      display: flex;
  }
  .border {
      height: 100%;
      background-color: #0000cd;
  }
  .border:nth-child(1) {
      flex: 0 0 200px;
      background-color: #00ced1;
  }
  .border:nth-child(2) {
      flex: 1;
      background-color: #da70d6;
  }

  .smi_t {
      margin-left: 2%;
      margin-right: 2%;
      white-space: nowrap;
      background-color: #9932cc;
  }
  </style>
</head>
<body>
<div class="smi">
 <div class="border"><img class="img_ba" src="/img/arc.png"></div>
 <div class="border">
  <div class="smi_t">ONE</div>
 </div>
 <div class="border be"><img class="img_ba" src="/img/arc.png"></div>
</div>
</body>
</html>

DimJavaScript 23.07.2019 13:59

Средний див будет изменять свою ширину динамически (по @keyframes).
Задача — динамическое поведение правого дива — перемещение вправо-влево, вслед за изменением размера среднего дива.

DimJavaScript 23.07.2019 16:17

В общем, изначальный код работает.
Добавил, только:
Код:

<div class="smi">
 <div class="border"><img class="img_ba" src="/img/arc.png"></div>
 <div class="border bmid bmid_anim">
  <div class="smi_t">ONE</div>
 </div>
 <div class="border be"><img class="img_ba" src="/img/arc.png"></div>
</div>

Код:

.bmid { width: 0; }

.bmid_anim{
        animation-name: smMiddleOn;
        animation-timing-function: ease;
        animation-duration: 1s;
        animation-iteration-count: 1;
        animation-fill-mode: forwards; }

@keyframes smMiddleOn { to { width: auto; } }


Только один неприятный момент.
Если среднему диву ставлю widt: 100% — он принимает размер родителя.
Если ставлю auto — размер, как и должен быть в соответствии с содержимым, только duration перестаёт работать, т.к. конечный размер становится неопределён.

Что-то, я снова в тупике...

:(

DimJavaScript 26.07.2019 13:24

Спасибо, Paulie_D с css-tricks
https://css-tricks.com/forums/topic/dynamic-div/

Замена width на max-width решило проблему.

Поразительно!


Часовой пояс GMT +3, время: 13:40.