响应式柔光箱带有无礼且控制图像溢出

时间:2018-12-06 17:33:23

标签: css reactjs sass responsive-design flexbox

公开部分

我正在尝试为React应用程序中的某个部分构建特定的布局,该布局类似于下图,忽略右侧的行enter image description here 这是我的HTML, 这些盒子暂时是空的,稍后再说。

const projects = () => {
  return (
    <section className="projects">
      <div className="container fcontainer">
        <div className="fcol fcol--1">
          <div className="box-1"></div>
          <div className="box-2"></div>
        </div>
        <div className="fcol fcol--2">
          <div className="box-1"></div>
          <div className="box-1"></div>
          <div className="box-1"></div>
        </div>
        <div className="fcol fcol--3">
          <div className="box-1"></div>
          <div className="box-2"></div>
        </div>
      </div>
    </section>
  )
}
现在这是我的.scss代码

.fcol {
    color: #333;
    margin: 1rem;
    text-align: center;
    font-size: 3rem;
    display: flex;
    flex-direction: column;
    height: 60vh;
    flex-grow: 4;

    &--1 {
      .box-1{
        background-color: lightblue;
        flex-grow: 1;
        margin-bottom: 2rem;
      } 
      
      .box-2{
        background-color: lightgreen;
        flex-grow: 2;
      }
    }

    &--2 {
      .box-1{
        background-color: lightblue;
        flex-grow: 1;
        justify-content: space-between;
        &:not(:last-child){
          margin-bottom: 2rem;
        }
      } 
    }

    &--3 {
      .box-1{
        background-color: lightblue;
        flex-grow: 3;
        margin-bottom: 2rem;
      } 
      
      .box-2{
        background-color: lightgreen;
        flex-grow: 2;
      }
    }
  }

这是结果。.enter image description here

这是codepen,供您编辑和解决问题(如果您有兴趣),如果您有更好的方法,也可以随时更改HTML和scss的整个结构。

非公开部分
我有点用图像填充每个框,因为即使我将heightwidth手动设置为100%,图像也总是在框外溢出,如果我将其设置为img-fluid添加了引导类# groupadd mygroup # usermod -G mygroup user1 # usermod -G mygroup user2 。 从我的应用程序中的.scss文件导入和使用图像时发生另一个错误,请在link中进行检查,就这样,非常感谢您的时间

1 个答案:

答案 0 :(得分:1)

这是您要做什么吗?

https://codepen.io/t_sg/pen/NEQayz

HTML:

<section class="projects">
  <div  class="container fcontainer">
    <div class="fcol fcol--1">
      <div class="box box-1"></div>
      <div class="box box-2"></div>
    </div>
    <div class="fcol fcol--2">
      <div class="box box-1"></div>
      <div class="box box-1"></div>
      <div class="box box-1"></div>
    </div>
    <div class="fcol fcol--3">
      <div class="box box-2"></div>
      <div class="box box-1"></div>
    </div>
  </div>
</section>

和CSS:

.fcontainer {
  display: flex;
  align-items: stretch;
  background-color: #f1f1f1;
  padding: 10px 30px;

  .fcol {
    color: #333;
    margin: 1rem;
    text-align: center;
    font-size: 3rem;
    display: flex;
    flex-direction: column;
    height: 60vh;
    flex-grow: 4;
  }
}

.box {
  margin-top: 10px;
  margin-bottom: 10px;

  &-1 {
    background: lightblue;
    flex: 0 0 33.33%;
    max-height: calc(33.33% - 20px);
  }

  &-2 {
    background: lightgreen;
    flex: 0 0 66.67%;
    max-height: calc(66.67% - 20px);
  }
}