【问题标题】:How to make my element take 100% of the screen width even if it is inside an element that take 80% of the screen?如何使我的元素占据屏幕宽度的 100%,即使它位于占据屏幕 80% 的元素内?
【发布时间】:2019-05-08 23:06:21
【问题描述】:

我正在处理一个 ReactJS 项目,但我遇到了一个 CSS 问题。我将准确地解释我想要实现的目标以及我到目前为止所做的事情。

我的fluidContainer是灰色背景的div。

这是我现在拥有的:

这就是我想要实现的目标,我希望消除这个空间:

我使用了负边距并使我的流体容器更大,但这对我来说是糟糕的代码,所以这是我的反应组件:

const FluidContainer = props => (
    <div
       className="co-fluid-container"
   >
        {props.children}
    </div>
);

这是我的 sass 文件和我已经尝试过的:

@import "../../appConstants/style/cssVariables.scss";
.co-fluid-container {

//TODO: améliorer la précision
margin: 0 ( calc( (#{$container-width} + (#{$grid-gutter}/2) - 99vw) /2) );
padding: 40px (calc((100vw - #{$container-width} - (#{$grid-gutter}/2))/2));

&--fluid-content {
   padding: 40px 20px;
}

@media($extra-small){
  // a justifier
  width:calc(100vw + #{$grid-gutter}*5);
  margin-left: calc(-#{$grid-gutter}*3/2);
}
@media($small) {
  // a justifier
  width: calc(100vw + #{$grid-gutter}*5);
  margin: 0 calc(-#{$grid-gutter}*3);
  padding: 40px calc(#{$grid-gutter}*3);
}

@media($medium){
  width:calc(110vw);
  margin-left: calc(-#{$grid-gutter}*3/2);
  padding: 40px calc(#{$grid-gutter}*3);
}

@media($large){
  margin: 0 ( calc( (#{$container-width} + (#{$grid-gutter}/2) - 100vw) /2));
  padding: 40px (calc((100vw - #{$container-width} - (#{$grid-gutter}/2))/2));

}
}

这段代码给我带来了问题,当我尝试让我的页面响应时,这里是我在代码中使用的变量:

grid-gutter : 32 px;
container: 1170px;
extra-small: "max-width: 599px"
medium and large and small are breakpoints too .. 

这是我也尝试过的一个解决方案,使用相对和绝对定位但仍然出现问题,所以我将渲染元素更改为:

const FluidContainer = props => (
    <div className="co-fluid-conteneur">
        <div className="co-fluid-container">{props.children}</div>
    </div>
);

这就是我的风格:

.co-fluid-conteneur {
    position: relative;
    height: 300px;
}

.co-fluid-container {
    position: absolute;
    width: 100vw;
}

但这些都是结果:

任何帮助将不胜感激。

【问题讨论】:

  • 绝对定位... ?
  • 您已删除旧问题并重新发布
  • @Vencovsky 解释更多?
  • 如果设置一个元素的css Position属性为position: absolute;它将相对于第一个父元素设置其位置,其 css Position 为 relative。但是,您可以将宽度设置为您喜欢的任何内容,而不受限制。
  • 是的,我明白这一点,但是如何将我的 div 向左移动,我仍然必须使用负值作为 margin 或 left 属性来做到这一点?没有?

标签: css reactjs sass


【解决方案1】:

举个简单的例子:

将主 html 文件或元素的代码作为:

<div className="parent">
  <div className="child">
  </div>
</div>

CSS 看起来像这样:

.parent {
   position: relative;
   width: 50vw;
   height: 50vh;
   background-color: blue;
}

.child {
   position: absolute;
   width: 100vw;
   height: 40vh;
   background-color: rgba(255, 0, 0, 0.50);
}

这将产生以下布局。 (vw 是视口宽度的度量,所以 50vw 是视口宽度的 50%)。

【讨论】:

  • 检查我的更新,我想我尝试了你的解决方案,如果我错了,请纠正我
  • 没有看到代码或查看所有 css 我不能完全确定。但是,我会想象“co-fluid-conteneur”要么在左侧有边距,要么该元素的父元素有边距或填充。以自己的方式备份元素树,看看是否有其他东西有边距或填充,我不能给你一个精确的解决方法,因为我不知道你的代码结构和 css 是特定的那样。
  • 是的,有一个父级在左边有一个边距和填充,(两者),我正在寻找的是可以做的事情并且忽略父代码..有可能吗?
  • 如果您将子元素的 Left 属性设置为 -(父元素的边距),它将按照您的意愿定位。所以说父母边距是10px,设置孩子的Left:-10px,应该可以解决这个问题。 CSS 是残酷的..
猜你喜欢
  • 2021-04-19
  • 2022-06-20
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 2020-11-29
  • 1970-01-01
相关资源
最近更新 更多