使用 Google Maps 元素定义 div (CSS) 的百分比高度

Posted

技术标签:

【中文标题】使用 Google Maps 元素定义 div (CSS) 的百分比高度【英文标题】:Defining percentual height for div (CSS) with Google Maps element 【发布时间】:2015-08-30 19:37:33 【问题描述】:

我正在尝试为我的网站创建一个“联系方式”部分,其中左侧有文本,右侧有一个 Google 地图元素来显示我们的位置。目前我已经设法让 div 彼此相邻,但问题是我似乎无法让地图的高度与旁边的 div 匹配。我查看了其他问题和示例,最流行的答案似乎是“添加一个包装器并将其高度和宽度定义为 100%,然后将 div 的高度也定义为 100%”,但这并不适用我。我不想为地图定义一个固定的 px 高度,因为那样它就不会以响应方式适应窗口的宽度。

目前我有:

html

<!-- CONTACT SECTION -->
  <div class="third" id="contacts">

    <div class="starter-template">
      <h2>Contact Us</h2><br>
      <div class="basic-container">
        <div class="contact">
          <p class="lead">Location</p>
          <p>The student team spaces can be found at Urban Mill, located between Startup Sauna and Aalto Design Factory at the Aalto University campus in Otaniemi, Espoo (Street Address: Betonimiehenkuja 3, Espoo, Finland). Most of the lectures will also be held at Urban Mill. The accommodation of the students is at Forenom Hostel (Street Address: Kivimiehentie 2, Espoo), which is only a 5-minute walk away from Urban Mill.<br><br></p>
          <p class="lead">Get in Touch</p>
          startupsummerprogram@outlook.com</p>
        </div>
        <div class="contact">
          <iframe id="map" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d7936.021807966812!2d24.832175000000017!3d60.18064199999999!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x468df58d0b88505f%3A0xaacf6d4afeea4ebb!2sUrban+Mill!5e0!3m2!1sfi!2sfi!4v1434351601478" frameborder="0" style="border:0"></iframe>
        </div>
      </div>
    </div>

  </div>

还有 CSS:

.third 
  position: relative;
  z-index: 100;
  width: 100%;
  background-color: #F7F7F7;


.basic-container 
  width: 70%;
  margin: 0 auto;
  text-align: justify;


.contact 
  width: 49%;
  height: 100%;
  display: inline-block;
  padding: 2%;


.contact p.lead 
  text-align: left;


#map 
  width: 100%;
  height: 100%;

在 HTML 代码中看到的 starter-template 在那里,因为我正在使用一个 starter Bootstrap 模板。不过,我不相信它会影响这个高度问题:)

我创建的代码:

而我想要的是这个(我通过为地图的高度添加一个固定的 px 值来实现这个演示):

必须有一种简单的方法来处理这个问题,但由于某种原因,我的大脑不想在这方面与我合作。非常感谢所有帮助:)

乔安娜

【问题讨论】:

【参考方案1】:

也许是这样的?希望对您有所帮助!

工作代码链接:https://jsfiddle.net/jxfw0r16/8/

基本上我已经改变了你的css的.contact和#map。

<div class="starter-template">
  <h2>Contact Us</h2><br>
  <div class="basic-container">
    <div class="contact">
      <p class="lead">Location</p>
      <p>The student team spaces can be found at Urban Mill, located between Startup Sauna and Aalto Design Factory at the Aalto University campus in Otaniemi, Espoo (Street Address: Betonimiehenkuja 3, Espoo, Finland). Most of the lectures will also be held at Urban Mill. The accommodation of the students is at Forenom Hostel (Street Address: Kivimiehentie 2, Espoo), which is only a 5-minute walk away from Urban Mill.<br><br></p>
      <p class="lead">Get in Touch</p>
      startupsummerprogram@outlook.com</p>
    </div>
    <div class="contact">
      <iframe id="map" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d7936.021807966812!2d24.832175000000017!3d60.18064199999999!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x468df58d0b88505f%3A0xaacf6d4afeea4ebb!2sUrban+Mill!5e0!3m2!1sfi!2sfi!4v1434351601478" frameborder="0" style="border:0"></iframe>
    </div>
  </div>
</div>

.third 
  position: relative;
  z-index: 100;
  width: 100%;
  background-color: #F7F7F7;


.basic-container 
  width: 70%;
  margin: 0 auto;
  text-align: justify;


.contact 
  position: relative;
  width: 49%;
  height: 0;
  display: inline-block;
  padding-bottom: 60%;


.contact p.lead 
  text-align: left;


#map 
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%

【讨论】:

#map 和 .contact 在 css 中发生变化的地方,它们需要每个都有一定的位置和其他小修复。 位置变化和其他小修正是什么?它们对回答问题有何贡献? .contact div 的高度为零,底部填充百分比,然后 padding-bottom 是容器宽度的百分比,因为纵横比的原因,div 容器必须是相对的,iframe绝对的,所以它从高度显示在 0 处。 嗨!感谢您的回答,@ user3272243。这比我的代码效果好一点,但问题是高度真的只有在窗口宽度大约为 670 时才看起来不错。当窗口宽度增长到大约 1200 时,地图的高度比地图的高度大很多它旁边的联系人 div,如下所示:farm4.staticflickr.com/3704/18825732342_70fe7842c0_k.jpg 你知道如何修复它,使其在所有窗口宽度下看起来与左侧联系人 div 对称吗? :) @jonsbaa 抱歉回复晚了,看看这个,我想它会解决你的身高问题:jsfiddle.net/jxfw0r16/13 基本上我已经将联系人的 iframe 类更改为 contact2 并摆脱了高度:0%;我还更改了您的基本容器的高度,以便您可以看到它正常工作。【参考方案2】:

你可以试试这个检查这个链接。 https://jsfiddle.net/c287hgpc/

      <div class="third" id="contacts">
        <div class="starter-template">
          <h2>Contact Us</h2><br>
          <div class="basic-container">
            <div class="contact">
              <p class="lead">Location</p>
              <p>The student team spaces can be found at Urban Mill, located between Startup Sauna and Aalto Design Factory at the Aalto University campus in Otaniemi, Espoo (Street Address: Betonimiehenkuja 3, Espoo, Finland). Most of the lectures will also be held at Urban Mill. The accommodation of the students is at Forenom Hostel (Street Address: Kivimiehentie 2, Espoo), which is only a 5-minute walk away from Urban Mill.<br><br></p>
              <p class="lead">Get in Touch</p>
              <p>+358465943409<br>
              startupsummerprogram@outlook.com</p>
            </div>
            <div class="contact">
              <iframe id="map" 
              src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d7936.021807966812!2d24.832175000000017!3d60.18064199999999!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x468df58d0b88505f%3A0xaacf6d4afeea4ebb!2sUrban+Mill!5e0!3m2!1sfi!2sfi!4v1434351601478" frameborder="0" style="border:0"></iframe>
            </div>
          </div>
        </div>

      </div>

css代码

    .third 
  position: relative;
  z-index: 100;
  width: 100%;
  background-color: #F7F7F7;


.basic-container 
  margin: 0 auto;
  text-align: justify;
  width: 100%;


.contact 
  float: left;
  height: 100%;
  padding: 2%;
  width: 46%;


.contact p.lead 
  text-align: left;

.starter-template h2 
  text-align: center;

#map 
  height: 100%;
  width: 100%;

【讨论】:

文本和 iframe 完全没有了。第三个 div 是包装器,更不用说地图的高度仍然与上面给出的示例相同。 正如@user3272243 所说,这实际上不起作用。地图的高度还是和以前一样的问题,文字和地图不在原来的地方了。

以上是关于使用 Google Maps 元素定义 div (CSS) 的百分比高度的主要内容,如果未能解决你的问题,请参考以下文章

为什么实例化Google Maps Places Search会在地图上添加一个丑陋的白色div?

如何在 Google Maps API 上强制重绘?

将 Google Maps Container DIV 宽度和高度设置为 100%

Android:无法使用 Google Maps Fragment 进行共享元素转换

Reactjs react-google-maps 未定义

向 Google Maps API InfoWindow 中的元素添加事件