【问题标题】:How to align image next to text expanding parent div to full height?如何在将父 div 扩展为全高的文本旁边对齐图像?
【发布时间】:2015-10-12 15:22:30
【问题描述】:

我想在 google maps 视图上创建一个 InfoWindowhttp://jsfiddle.net/q6tf9kp6/2/

我想要的:(动态)图片应该从标题下方开始,并且框应该自动展开以便整个图片适合

(无需在 CSS 中明确预定义框的高度,因为图像将动态提供,因此事先不知道大小)。

这可能吗?

这里的主要问题是我必须使用position:absolute 让图像与谷歌地图中的“关闭按钮 div”重叠。否则左边总会有一个空白。

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/src/infobox.js"></script>
<script type="text/javascript">
function initialize() {
    var loc, map, marker, infobox;
    
    loc = new google.maps.LatLng(-33.890542, 151.274856);
    
    map = new google.maps.Map(document.getElementById("map"), {
         zoom: 12,
         center: loc,
         mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    
    marker = new google.maps.Marker({
        map: map,
        position: loc,
        visible: true
    });

			var infobox = new google.maps.InfoWindow({
			    content: document.getElementById("infobox"),
			    maxWidth: 300
			});
    
    google.maps.event.addListener(marker, 'click', function() {
        infobox.open(map, this);
        map.panTo(loc);
    });
    
    infobox.open(map, marker);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="map" style="width: 100%; height: 300px"></div>
<br>
<div class="infobox-wrapper">
    <div id="infobox">
        <h4>Some long headlineeeeeeeeeeeee</h4>
        <div style="float:left">
            <div style="display:inline-block">
                <div>Name1</div>
                <div>Name2</div>
            </div>
            <div style="display:inline-block; position:absolute; bottom: 2px; right:2px;">
                <img src="http://www.4homejendrny.de/hintergruende/hell/hg009.jpg"/>
            </div>
        </div>
    </div>
</div>

【问题讨论】:

    标签: javascript html css google-maps


    【解决方案1】:

    使用position: absolute 会将您的图片从正常流程中移除,从而阻止其容器正确计算高度。首先,您可以使用float: right 显着简化您的信息框内容并将图像放在您想要的位置。您没有明确说明您想要所有东西的位置,但这对我来说似乎是合理的:

    <h4>Some long headlineeeeeeeeeeeee</h4>
    <div>
      <div style="float:right">
        <img src="http://www.4homejendrny.de/hintergruende/hell/hg009.jpg" />
      </div>
      <div>
        <div>Name1</div>
        <div>Name2</div>
      </div>
    </div>
    

    然后,如果您不希望关闭按钮左侧的空格,您可以使用position: relative; top: -17px 提升整个内容。我选择-17 将文本基线与结束X 对齐。

    <div class="infobox-wrapper">
      <div id="infobox" style="position:relative; top:-17px">
        <h4>Some long headlineeeeeeeeeeeee</h4>
    

    它在行动:

    function initialize() {
      var loc, map, marker, infobox;
    
      loc = new google.maps.LatLng(-33.890542, 151.274856);
    
      map = new google.maps.Map(document.getElementById("map"), {
        zoom: 12,
        center: loc,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      });
    
      marker = new google.maps.Marker({
        map: map,
        position: loc,
        visible: true
      });
    
      var infobox = new google.maps.InfoWindow({
        content: document.getElementById("infobox"),
        maxWidth: 300
      });
    
      google.maps.event.addListener(marker, 'click', function() {
        infobox.open(map, this);
        map.panTo(loc);
      });
    
      infobox.open(map, marker);
    }
    google.maps.event.addDomListener(window, 'load', initialize);
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/src/infobox.js"></script>
    
    <div id="map" style="width: 100%; height: 300px"></div>
    <br>
    <div class="infobox-wrapper">
      <div id="infobox" style="position:relative; top:-17px">
        <h4>Some long headlineeeeeeeeeeeee</h4>
        <div>
          <div style="float:right">
            <img src="http://www.4homejendrny.de/hintergruende/hell/hg009.jpg" />
          </div>
          <div>
            <div>Name1</div>
            <div>Name2</div>
          </div>
        </div>
      </div>
    </div>

    【讨论】:

    • 您可能误解了我的问题:我希望图像与右下角对齐,就像在我的示例中一样,以便它与空白 below 重叠关闭 X。这就是我使用 absolute 的目的。你能编辑你的答案吗?如果可能的话?
    • 啊,确实,你打错了“左边的空格”。我不认为你可以用 CSS 做你想做的事,或者至少它超出了我的能力。您控制的 HTML 位于由 Google 控制的包装器中,因此我们无法潜入它以正确绘制它。使用绝对定位,如果您能可靠地获取地图元素,则可以使用 JavaScript couple answers
    猜你喜欢
    • 1970-01-01
    • 2013-05-10
    • 2020-10-04
    • 1970-01-01
    • 2021-08-10
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多