当浏览器窗口调整大小时,在居中元素和绝对/固定元素之间平滑移动

时间:2019-01-15 17:21:41

标签: css css3

我有一个Test Assembly = **\*.UnitTests.build.appxrecipe Other console options = /framework:FrameworkUap10 ,在wrapper中有wrapperheader,它们是水平的中心。

在右边有body,它固定在浏览器右边。

当浏览器窗口变小(分辨率较低)时,我希望wrapper-right靠近wrapper-right,直到它们之间的距离最短。

当达到最小距离时,我希望header更改大小(变小),但要保持最小距离。我也希望标题保持与“身体”左对齐(现在小于身体,居中不行)

此刻,我的实现使用的是媒体查询(3-4,示例中仅为1),但是它并不流畅,因此我正在寻找更好的东西。

header
.wrapper{
  background-color:green;
  display: inline-block;
  height: 4rem;
  position: relative;
  width: 100%;
}

.header, body{ 
  max-width: 30rem;
  margin: 0 auto;
}

.header { 
  border:3px solid yellow;
  max-width: 30rem;
  height: 4rem;
  border-left: 5px solid purple;
  }
@media (max-width: 40rem){
   .header{
    max-width: 25rem;
    }
  }


.body{
  background-color:red;
  height: 500px;
  border-left: 5px solid purple;
}
.wrapper-right{
    background: #0069aa;
    height: 4rem;
    width: 5rem;
    position: absolute;
    right: 0;
    top: 0;
}

1 个答案:

答案 0 :(得分:1)

您可以将宽度设置为width: calc(100vw - 10rem - X);,其中X是您要保持的距离(10rem是固定元素的大小的两倍),并且元素将按预期运行固定元素何时关闭:

.wrapper {
  background-color: green;
  display: inline-block;
  height: 4rem;
  position: relative;
  width: 100%;
}

.header,
body {
  max-width: 30rem;
  margin: 0 auto;
}

.header {
  border: 3px solid yellow;
  max-width: 30rem;
  height: 4rem;
  width: calc(100vw - 10rem - 2rem);
  box-sizing: border-box;
}

.body {
  background-color: red;
  height: 500px;
}

.wrapper-right {
  background: #0069aa;
  height: 4rem;
  width: 5rem;
  position: absolute;
  right: 0;
  top: 0;
}
<div class="wrapper">
  <div class="header">
    <span> header header </span>
  </div>
  <div class="body">
    <span> body body </span>
  </div>
</div>
<div class="wrapper-right">
  <span> ipsum ipsum right </span>
</div>