【问题标题】:Make CSS layout for responsive DIV grid为响应式 DIV 网格制作 CSS 布局
【发布时间】:2019-08-08 15:23:50
【问题描述】:

我需要这个布局中看到的响应式 DIV 网格的 CSS。

这是我从第一个答案到目前为止所做的,这是一个很好的起点......

<div class="main-container">
    <div class="picture">
        <img class="picture" src="images/Ginger-004.jpg" width="300" alt="#">
    </div>
    <div class="text-container">
        <div class="header">
            <h1>CSS Layout for DIV Grid Puzzle</h1>
        </div>
        <div class="buttons">
            <div>By Company Pty Ltd</div>
            <div>Type: Commercial</div>
            <div>Price: $295</div>
        </div>
        <div class="buttons">
            <div><img src="images/buttons/home-page.jpg" border="0">  </div> 
            <div><img src="images/buttons/download.jpg" border="0"></div>
            <div><img src="images/buttons/buy-now.jpg" border="0"></div>
        </div>
        <div class="message">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
        </div>        
    </div>
</div>

.main-container {
   display: grid;
   grid-template-columns: 1fr 2fr;
}
.header {
    padding: 5px;
    text-align: center;
}
.picture {
    padding: 10px;
}
.text-container {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: min-content 1fr 1fr 4fr 1fr;
}
.buttons{
    display: grid;
    grid-template-columns: 1fr 1fr 1fr; 
    grid-template-rows: min-content 1fr;
    text-align: center;
}
button {
    display: block;
    padding: 10px;
    text-align: center;
}

.message { 
    padding: 10px;
    text-align: justify;    
 }

但它没有响应。它不会折叠以适合手机屏幕。

【问题讨论】:

  • 等一下。我们带来了!
  • 创建一个容器 div 来包含整个部分。在其中,设置一个左 div 以包含图像。然后设置一个正确的 div 来包含其余部分。在右边的 div 中,有标题 div,下面是按钮 div 容器。在 btn div 容器中,创建 3 个 div 以每个保持 1 个按钮。然后有一个消息div。重用下面的按钮 div(使用类)。完毕!伟大的戈西先生的出色回答
  • @Dave Anderson - 我浪费了 2 天的时间来处理无法正常工作的在线 CSS 构建器。
  • 您为什么不发布您拥有的不起作用的代码?我们可以帮助解释为什么它不起作用,而不仅仅是分发解决方案。

标签: html css


【解决方案1】:

为此,需要将 VIEWPORT 添加到元标记中。然后@media(min-width) 需要添加到 CSS 中。

.main-container {
  background: #f4f4f4;
  display: grid;
}

.picture {
  height: 70%;
  width: 90%;
  background: #333;
  margin: 5%;
}

.image {
  height: 0%;
  width: 100%;
}

.text-container {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 1fr 1fr 4fr 1fr;
}

.buttons {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 1fr;
}

button {
  display: block;
  width: 90%;
  height: 90%;
  padding: 20px;
}

.message {
  padding: 10px 20px;
}

@media (min-width: 500px) {
 	.main-container {
 		grid-template-columns: 1fr;
 		grid-template-areas: 
 		"picture"
 		"text-container"
 	}
 	
 }

 @media (min-width: 800px) {
 	.main-container {
 		grid-template-columns: 1fr 2fr;
 		grid-template-areas: 
 		"picture text-container"
 	}
 	
 }
<div class="main-container">
  <div class="picture">
    <img class="image" src="#" alt="#">
  </div>
  <div class="text-container">
    <div class="header">
      <h1>Heading</h1>
    </div>
    <div class="buttons">
      <div><button>Button</button></div>
      <div><button>Button</button></div>
      <div><button>Button</button></div>
    </div>
    <div class="message">
      <p>Message</p>
    </div>
    <div class="buttons">
      <div><button>Button</button></div>
      <div><button>Button</button></div>
      <div><button>Button</button></div>
    </div>
  </div>
</div>

【讨论】:

  • 这看起来很有希望,但它没有响应,即:不会折叠以适应移动屏幕。
  • 我不得不删除所有高度设置,因为网格正在填充页面评估者而不是仅满足其内容。
  • 查看我上面编辑的答案,tldr - 只需在主容器上使用“grid-template-areas”添加媒体查询。
  • 我通过添加视口和@media(min-width: 600px)解决了响应式问题
  • 如果为它设置了任何大小,则具有主容器类的 div 将确定整个元素的大小,否则,删除父大小,子元素应设置大小。就移动设备而言,媒体查询应该可以解决问题。您可以根据需要调整网格模板区域和媒体查询。您还可以更进一步,具体取决于您希望包含按钮的 div 如何折叠,方法是为具有不同网格模板区域定义的 .buttons 类添加查询。此外,使用此设置,您需要为图像元素定义一个最小高度:
猜你喜欢
  • 2019-12-18
  • 2023-01-04
  • 2019-02-07
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 2012-10-01
  • 2014-11-05
  • 2012-05-31
相关资源
最近更新 更多